From: Robert Haas Date: Thu, 25 Feb 2016 07:32:18 +0000 (+0530) Subject: Enable parallelism for prepared statements and extended query protocol. X-Git-Tag: REL9_6_BETA1~654 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=57a6a72b6bc98f3003e87bc31de4b9c2c89fe019;p=postgresql Enable parallelism for prepared statements and extended query protocol. Parallel query can't handle running a query only partially rather than to completion. However, there seems to be no way to run a statement prepared via SQL PREPARE other than to completion, so we can enable it there without a problem. The situation is more complicated for the extend query protocol. libpq seems to provide no way to send an Execute message with a non-zero rowcount, but some other client might. If that happens, and a parallel plan was chosen, we'll execute the parallel plan without using any workers, which may be somewhat inefficient but should still work. Hopefully this won't be a problem; users can always set max_parallel_degree=0 to avoid choosing parallel plans in the first place. Amit Kapila, reviewed by me. --- diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index cec37ce040..b01051df9d 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -159,7 +159,7 @@ PrepareQuery(PrepareStmt *stmt, const char *queryString) nargs, NULL, NULL, - 0, /* default cursor options */ + CURSOR_OPT_PARALLEL_OK, /* allow parallel mode */ true); /* fixed result */ /* diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 390816bb9c..115166b6f6 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -1381,7 +1381,7 @@ exec_parse_message(const char *query_string, /* string to execute */ numParams, NULL, NULL, - 0, /* default cursor options */ + CURSOR_OPT_PARALLEL_OK, /* allow parallel mode */ true); /* fixed result */ /* If we got a cancel signal during analysis, quit */