diff options
author | Tom Lane | 2003-05-06 21:01:04 +0000 |
---|---|---|
committer | Tom Lane | 2003-05-06 21:01:04 +0000 |
commit | 8f6a6b7e9a48d04bc6912a968326277547dc7927 (patch) | |
tree | 07035e7be43e921cfd2ea32fb37360a4d779b8d7 | |
parent | 79913910d4b518a42c893b6dd459656798ffa591 (diff) |
Ensure that an Execute operation can't send tuples in cases where
Describe would claim that no tuples will be returned. Only affects
SELECTs added to non-SELECT base queries by rewrite rules. If you
want to see the output of such a select, you gotta use 'simple Query'
protocol.
-rw-r--r-- | src/backend/tcop/pquery.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c index 0cb7865a9f6..e3a37b7310e 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.62 2003/05/06 20:26:27 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.63 2003/05/06 21:01:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -728,6 +728,23 @@ PortalRunMulti(Portal portal, List *querylist_item; /* + * If the destination is RemoteExecute, change to None. The reason + * is that the client won't be expecting any tuples, and indeed has no + * way to know what they are, since there is no provision for Describe + * to send a RowDescription message when this portal execution strategy + * is in effect. This presently will only affect SELECT commands added + * to non-SELECT queries by rewrite rules: such commands will be executed, + * but the results will be discarded unless you use "simple Query" + * protocol. + */ + if (dest->mydest == RemoteExecute || + dest->mydest == RemoteExecuteInternal) + dest = None_Receiver; + if (altdest->mydest == RemoteExecute || + altdest->mydest == RemoteExecuteInternal) + altdest = None_Receiver; + + /* * Loop to handle the individual queries generated from a * single parsetree by analysis and rewrite. */ |