• Robert Haas's avatar
    Determine whether it's safe to attempt a parallel plan for a query. · 7aea8e4f
    Robert Haas authored
    Commit 924bcf4f introduced a framework
    for parallel computation in PostgreSQL that makes most but not all
    built-in functions safe to execute in parallel mode.  In order to have
    parallel query, we'll need to be able to determine whether that query
    contains functions (either built-in or user-defined) that cannot be
    safely executed in parallel mode.  This requires those functions to be
    labeled, so this patch introduces an infrastructure for that.  Some
    functions currently labeled as safe may need to be revised depending on
    how pending issues related to heavyweight locking under paralllelism
    are resolved.
    
    Parallel plans can't be used except for the case where the query will
    run to completion.  If portal execution were suspended, the parallel
    mode restrictions would need to remain in effect during that time, but
    that might make other queries fail.  Therefore, this patch introduces
    a framework that enables consideration of parallel plans only when it
    is known that the plan will be run to completion.  This probably needs
    some refinement; for example, at bind time, we do not know whether a
    query run via the extended protocol will be execution to completion or
    run with a limited fetch count.  Having the client indicate its
    intentions at bind time would constitute a wire protocol break.  Some
    contexts in which parallel mode would be safe are not adjusted by this
    patch; the default is not to try parallel plans except from call sites
    that have been updated to say that such plans are OK.
    
    This commit doesn't introduce any parallel paths or plans; it just
    provides a way to determine whether they could potentially be used.
    I'm committing it on the theory that the remaining parallel sequential
    scan patches will also get committed to this release, hopefully in the
    not-too-distant future.
    
    Robert Haas and Amit Kapila.  Reviewed (in earlier versions) by Noah
    Misch.
    7aea8e4f
kwlist.h 21.3 KB