Index: src/backend/access/common/printtup.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/access/common/printtup.c,v retrieving revision 1.92 diff -c -r1.92 printtup.c *** src/backend/access/common/printtup.c 15 Oct 2005 02:49:08 -0000 1.92 --- src/backend/access/common/printtup.c 2 Nov 2005 12:12:58 -0000 *************** *** 94,101 **** self->portal = portal; ! /* Send T message automatically if Remote, but not if RemoteExecute */ ! self->sendDescrip = (dest == Remote); self->attrinfo = NULL; self->nattrs = 0; --- 94,104 ---- self->portal = portal; ! /* ! * Send T message automatically if DestRemote, but not if ! * DestRemoteExecute ! */ ! self->sendDescrip = (dest == DestRemote); self->attrinfo = NULL; self->nattrs = 0; Index: src/backend/commands/async.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/async.c,v retrieving revision 1.126 diff -c -r1.126 async.c *** src/backend/commands/async.c 15 Oct 2005 02:49:15 -0000 1.126 --- src/backend/commands/async.c 2 Nov 2005 12:14:08 -0000 *************** *** 994,1000 **** static void NotifyMyFrontEnd(char *relname, int32 listenerPID) { ! if (whereToSendOutput == Remote) { StringInfoData buf; --- 994,1000 ---- static void NotifyMyFrontEnd(char *relname, int32 listenerPID) { ! if (whereToSendOutput == DestRemote) { StringInfoData buf; Index: src/backend/commands/copy.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/copy.c,v retrieving revision 1.253 diff -c -r1.253 copy.c *** src/backend/commands/copy.c 15 Oct 2005 02:49:15 -0000 1.253 --- src/backend/commands/copy.c 2 Nov 2005 12:14:42 -0000 *************** *** 966,972 **** } if (pipe) { ! if (whereToSendOutput == Remote) ReceiveCopyBegin(cstate); else cstate->copy_file = stdin; --- 966,972 ---- } if (pipe) { ! if (whereToSendOutput == DestRemote) ReceiveCopyBegin(cstate); else cstate->copy_file = stdin; *************** *** 1017,1023 **** } if (pipe) { ! if (whereToSendOutput == Remote) cstate->fe_copy = true; else cstate->copy_file = stdout; --- 1017,1023 ---- } if (pipe) { ! if (whereToSendOutput == DestRemote) cstate->fe_copy = true; else cstate->copy_file = stdout; Index: src/backend/commands/portalcmds.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/portalcmds.c,v retrieving revision 1.43 diff -c -r1.43 portalcmds.c *** src/backend/commands/portalcmds.c 15 Oct 2005 02:49:15 -0000 1.43 --- src/backend/commands/portalcmds.c 2 Nov 2005 12:49:43 -0000 *************** *** 190,196 **** return; /* keep compiler happy */ } ! /* Adjust dest if needed. MOVE wants destination None */ if (stmt->ismove) dest = None_Receiver; --- 190,196 ---- return; /* keep compiler happy */ } ! /* Adjust dest if needed. MOVE wants destination DestNone */ if (stmt->ismove) dest = None_Receiver; *************** *** 369,375 **** ExecutorRewind(queryDesc); /* Change the destination to output to the tuplestore */ ! queryDesc->dest = CreateDestReceiver(Tuplestore, portal); /* Fetch the result set into the tuplestore */ ExecutorRun(queryDesc, ForwardScanDirection, 0L); --- 369,375 ---- ExecutorRewind(queryDesc); /* Change the destination to output to the tuplestore */ ! queryDesc->dest = CreateDestReceiver(DestTuplestore, portal); /* Fetch the result set into the tuplestore */ ExecutorRun(queryDesc, ForwardScanDirection, 0L); Index: src/backend/executor/spi.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/executor/spi.c,v retrieving revision 1.143 diff -c -r1.143 spi.c *** src/backend/executor/spi.c 15 Oct 2005 02:49:17 -0000 1.143 --- src/backend/executor/spi.c 2 Nov 2005 12:55:26 -0000 *************** *** 984,991 **** SPI_cursor_fetch(Portal portal, bool forward, long count) { _SPI_cursor_operation(portal, forward, count, ! CreateDestReceiver(SPI, NULL)); ! /* we know that the SPI receiver doesn't need a destroy call */ } --- 984,991 ---- SPI_cursor_fetch(Portal portal, bool forward, long count) { _SPI_cursor_operation(portal, forward, count, ! CreateDestReceiver(DestSPI, NULL)); ! /* we know that the DestSPI receiver doesn't need a destroy call */ } *************** *** 1418,1424 **** if (!read_only) CommandCounterIncrement(); ! dest = CreateDestReceiver(queryTree->canSetTag ? SPI : None, NULL); if (snapshot == InvalidSnapshot) --- 1418,1424 ---- if (!read_only) CommandCounterIncrement(); ! dest = CreateDestReceiver(queryTree->canSetTag ? DestSPI : DestNone, NULL); if (snapshot == InvalidSnapshot) *************** *** 1527,1533 **** res = SPI_OK_SELINTO; queryDesc->dest = None_Receiver; /* don't output results */ } ! else if (queryDesc->dest->mydest != SPI) { /* Don't return SPI_OK_SELECT if we're discarding result */ res = SPI_OK_UTILITY; --- 1527,1533 ---- res = SPI_OK_SELINTO; queryDesc->dest = None_Receiver; /* don't output results */ } ! else if (queryDesc->dest->mydest != DestSPI) { /* Don't return SPI_OK_SELECT if we're discarding result */ res = SPI_OK_UTILITY; *************** *** 1560,1566 **** _SPI_current->processed = queryDesc->estate->es_processed; _SPI_current->lastoid = queryDesc->estate->es_lastoid; ! if (operation == CMD_SELECT && queryDesc->dest->mydest == SPI) { if (_SPI_checktuples()) elog(ERROR, "consistency check on SPI tuple count failed"); --- 1560,1566 ---- _SPI_current->processed = queryDesc->estate->es_processed; _SPI_current->lastoid = queryDesc->estate->es_lastoid; ! if (operation == CMD_SELECT && queryDesc->dest->mydest == DestSPI) { if (_SPI_checktuples()) elog(ERROR, "consistency check on SPI tuple count failed"); *************** *** 1646,1652 **** */ _SPI_current->processed = nfetched; ! if (dest->mydest == SPI && _SPI_checktuples()) elog(ERROR, "consistency check on SPI tuple count failed"); /* Put the result into place for access by caller */ --- 1646,1652 ---- */ _SPI_current->processed = nfetched; ! if (dest->mydest == DestSPI && _SPI_checktuples()) elog(ERROR, "consistency check on SPI tuple count failed"); /* Put the result into place for access by caller */ Index: src/backend/executor/tstoreReceiver.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/executor/tstoreReceiver.c,v retrieving revision 1.14 diff -c -r1.14 tstoreReceiver.c *** src/backend/executor/tstoreReceiver.c 16 Mar 2005 21:38:08 -0000 1.14 --- src/backend/executor/tstoreReceiver.c 2 Nov 2005 12:19:45 -0000 *************** *** 81,87 **** self->pub.rStartup = tstoreStartupReceiver; self->pub.rShutdown = tstoreShutdownReceiver; self->pub.rDestroy = tstoreDestroyReceiver; ! self->pub.mydest = Tuplestore; self->tstore = tStore; self->cxt = tContext; --- 81,87 ---- self->pub.rStartup = tstoreStartupReceiver; self->pub.rShutdown = tstoreShutdownReceiver; self->pub.rDestroy = tstoreDestroyReceiver; ! self->pub.mydest = DestTuplestore; self->tstore = tStore; self->cxt = tContext; Index: src/backend/postmaster/postmaster.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/postmaster/postmaster.c,v retrieving revision 1.472 diff -c -r1.472 postmaster.c *** src/backend/postmaster/postmaster.c 22 Oct 2005 14:27:28 -0000 1.472 --- src/backend/postmaster/postmaster.c 2 Nov 2005 12:50:14 -0000 *************** *** 906,918 **** SysLoggerPID = SysLogger_Start(); /* ! * Reset whereToSendOutput from Debug (its starting state) to None. This ! * stops ereport from sending log messages to stderr unless * Log_destination permits. We don't do this until the postmaster is * fully launched, since startup failures may as well be reported to * stderr. */ ! whereToSendOutput = None; /* * Initialize the statistics collector stuff --- 906,918 ---- SysLoggerPID = SysLogger_Start(); /* ! * Reset whereToSendOutput from DestDebug (its starting state) to DestNone. ! * This stops ereport from sending log messages to stderr unless * Log_destination permits. We don't do this until the postmaster is * fully launched, since startup failures may as well be reported to * stderr. */ ! whereToSendOutput = DestNone; /* * Initialize the statistics collector stuff *************** *** 2654,2660 **** * Must do this now because authentication uses libpq to send messages. */ pq_init(); /* initialize libpq to talk to client */ ! whereToSendOutput = Remote; /* now safe to ereport to client */ /* * We arrange for a simple exit(0) if we receive SIGTERM or SIGQUIT during --- 2654,2660 ---- * Must do this now because authentication uses libpq to send messages. */ pq_init(); /* initialize libpq to talk to client */ ! whereToSendOutput = DestRemote; /* now safe to ereport to client */ /* * We arrange for a simple exit(0) if we receive SIGTERM or SIGQUIT during Index: src/backend/tcop/dest.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/tcop/dest.c,v retrieving revision 1.66 diff -c -r1.66 dest.c *** src/backend/tcop/dest.c 15 Oct 2005 02:49:26 -0000 1.66 --- src/backend/tcop/dest.c 2 Nov 2005 12:51:38 -0000 *************** *** 62,81 **** */ static DestReceiver donothingDR = { donothingReceive, donothingStartup, donothingCleanup, donothingCleanup, ! None }; static DestReceiver debugtupDR = { debugtup, debugStartup, donothingCleanup, donothingCleanup, ! Debug }; static DestReceiver spi_printtupDR = { spi_printtup, spi_dest_startup, donothingCleanup, donothingCleanup, ! SPI }; ! /* Globally available receiver for None */ DestReceiver *None_Receiver = &donothingDR; --- 62,81 ---- */ static DestReceiver donothingDR = { donothingReceive, donothingStartup, donothingCleanup, donothingCleanup, ! DestNone }; static DestReceiver debugtupDR = { debugtup, debugStartup, donothingCleanup, donothingCleanup, ! DestDebug }; static DestReceiver spi_printtupDR = { spi_printtup, spi_dest_startup, donothingCleanup, donothingCleanup, ! DestSPI }; ! /* Globally available receiver for DestNone */ DestReceiver *None_Receiver = &donothingDR; *************** *** 92,99 **** /* ---------------- * CreateDestReceiver - return appropriate receiver function set for dest * ! * Note: a Portal must be specified for destinations Remote, RemoteExecute, ! * and Tuplestore. It can be NULL for the others. * ---------------- */ DestReceiver * --- 92,99 ---- /* ---------------- * CreateDestReceiver - return appropriate receiver function set for dest * ! * Note: a Portal must be specified for destinations DestRemote, ! * DestRemoteExecute, and DestTuplestore. It can be NULL for the others. * ---------------- */ DestReceiver * *************** *** 101,124 **** { switch (dest) { ! case Remote: ! case RemoteExecute: if (portal == NULL) ! elog(ERROR, "no portal specified for Remote receiver"); return printtup_create_DR(dest, portal); ! case None: return &donothingDR; ! case Debug: return &debugtupDR; ! case SPI: return &spi_printtupDR; ! case Tuplestore: if (portal == NULL) ! elog(ERROR, "no portal specified for Tuplestore receiver"); if (portal->holdStore == NULL || portal->holdContext == NULL) elog(ERROR, "portal has no holdStore"); --- 101,124 ---- { switch (dest) { ! case DestRemote: ! case DestRemoteExecute: if (portal == NULL) ! elog(ERROR, "no portal specified for DestRemote receiver"); return printtup_create_DR(dest, portal); ! case DestNone: return &donothingDR; ! case DestDebug: return &debugtupDR; ! case DestSPI: return &spi_printtupDR; ! case DestTuplestore: if (portal == NULL) ! elog(ERROR, "no portal specified for DestTuplestore receiver"); if (portal->holdStore == NULL || portal->holdContext == NULL) elog(ERROR, "portal has no holdStore"); *************** *** 139,153 **** { switch (dest) { ! case Remote: ! case RemoteExecute: pq_puttextmessage('C', commandTag); break; ! case None: ! case Debug: ! case SPI: ! case Tuplestore: break; } } --- 139,153 ---- { switch (dest) { ! case DestRemote: ! case DestRemoteExecute: pq_puttextmessage('C', commandTag); break; ! case DestNone: ! case DestDebug: ! case DestSPI: ! case DestTuplestore: break; } } *************** *** 169,176 **** { switch (dest) { ! case Remote: ! case RemoteExecute: /* * tell the fe that we saw an empty query string. In protocols --- 169,176 ---- { switch (dest) { ! case DestRemote: ! case DestRemoteExecute: /* * tell the fe that we saw an empty query string. In protocols *************** *** 182,191 **** pq_puttextmessage('I', ""); break; ! case None: ! case Debug: ! case SPI: ! case Tuplestore: break; } } --- 182,191 ---- pq_puttextmessage('I', ""); break; ! case DestNone: ! case DestDebug: ! case DestSPI: ! case DestTuplestore: break; } } *************** *** 206,213 **** { switch (dest) { ! case Remote: ! case RemoteExecute: if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) { StringInfoData buf; --- 206,213 ---- { switch (dest) { ! case DestRemote: ! case DestRemoteExecute: if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3) { StringInfoData buf; *************** *** 222,231 **** pq_flush(); break; ! case None: ! case Debug: ! case SPI: ! case Tuplestore: break; } } --- 222,231 ---- pq_flush(); break; ! case DestNone: ! case DestDebug: ! case DestSPI: ! case DestTuplestore: break; } } Index: src/backend/tcop/postgres.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/tcop/postgres.c,v retrieving revision 1.467 diff -c -r1.467 postgres.c *** src/backend/tcop/postgres.c 20 Oct 2005 20:05:45 -0000 1.467 --- src/backend/tcop/postgres.c 2 Nov 2005 12:24:55 -0000 *************** *** 74,80 **** const char *debug_query_string; /* for pgmonitor and log_min_error_statement */ /* Note: whereToSendOutput is initialized for the bootstrap/standalone case */ ! CommandDest whereToSendOutput = Debug; /* flag for logging end of session */ bool Log_disconnections = false; --- 74,80 ---- const char *debug_query_string; /* for pgmonitor and log_min_error_statement */ /* Note: whereToSendOutput is initialized for the bootstrap/standalone case */ ! CommandDest whereToSendOutput = DestDebug; /* flag for logging end of session */ bool Log_disconnections = false; *************** *** 404,410 **** { int result; ! if (whereToSendOutput == Remote) result = SocketBackend(inBuf); else result = InteractiveBackend(inBuf); --- 404,410 ---- { int result; ! if (whereToSendOutput == DestRemote) result = SocketBackend(inBuf); else result = InteractiveBackend(inBuf); *************** *** 1364,1370 **** /* * Send ParseComplete. */ ! if (whereToSendOutput == Remote) pq_putemptymessage('1'); if (save_log_statement_stats) --- 1364,1370 ---- /* * Send ParseComplete. */ ! if (whereToSendOutput == DestRemote) pq_putemptymessage('1'); if (save_log_statement_stats) *************** *** 1650,1656 **** /* * Send BindComplete. */ ! if (whereToSendOutput == Remote) pq_putemptymessage('2'); } --- 1650,1656 ---- /* * Send BindComplete. */ ! if (whereToSendOutput == DestRemote) pq_putemptymessage('2'); } *************** *** 1678,1685 **** /* Adjust destination to tell printtup.c what to do */ dest = whereToSendOutput; ! if (dest == Remote) ! dest = RemoteExecute; portal = GetPortalByName(portal_name); if (!PortalIsValid(portal)) --- 1678,1685 ---- /* Adjust destination to tell printtup.c what to do */ dest = whereToSendOutput; ! if (dest == DestRemote) ! dest = DestRemoteExecute; portal = GetPortalByName(portal_name); if (!PortalIsValid(portal)) *************** *** 1835,1841 **** else { /* Portal run not complete, so send PortalSuspended */ ! if (whereToSendOutput == Remote) pq_putemptymessage('s'); } --- 1835,1841 ---- else { /* Portal run not complete, so send PortalSuspended */ ! if (whereToSendOutput == DestRemote) pq_putemptymessage('s'); } *************** *** 1913,1919 **** errmsg("unnamed prepared statement does not exist"))); } ! if (whereToSendOutput != Remote) return; /* can't actually do anything... */ /* --- 1913,1919 ---- errmsg("unnamed prepared statement does not exist"))); } ! if (whereToSendOutput != DestRemote) return; /* can't actually do anything... */ /* *************** *** 1959,1965 **** (errcode(ERRCODE_UNDEFINED_CURSOR), errmsg("portal \"%s\" does not exist", portal_name))); ! if (whereToSendOutput != Remote) return; /* can't actually do anything... */ if (portal->tupDesc) --- 1959,1965 ---- (errcode(ERRCODE_UNDEFINED_CURSOR), errmsg("portal \"%s\" does not exist", portal_name))); ! if (whereToSendOutput != DestRemote) return; /* can't actually do anything... */ if (portal->tupDesc) *************** *** 2938,2944 **** /* * Send this backend's cancellation info to the frontend. */ ! if (whereToSendOutput == Remote && PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) { StringInfoData buf; --- 2938,2944 ---- /* * Send this backend's cancellation info to the frontend. */ ! if (whereToSendOutput == DestRemote && PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2) { StringInfoData buf; *************** *** 2951,2957 **** } /* Welcome banner for standalone case */ ! if (whereToSendOutput == Debug) printf("\nPostgreSQL stand-alone backend %s\n", PG_VERSION); /* --- 2951,2957 ---- } /* Welcome banner for standalone case */ ! if (whereToSendOutput == DestDebug) printf("\nPostgreSQL stand-alone backend %s\n", PG_VERSION); /* *************** *** 3239,3246 **** * Reset whereToSendOutput to prevent ereport from * attempting to send any more messages to client. */ ! if (whereToSendOutput == Remote) ! whereToSendOutput = None; proc_exit(0); } --- 3239,3246 ---- * Reset whereToSendOutput to prevent ereport from * attempting to send any more messages to client. */ ! if (whereToSendOutput == DestRemote) ! whereToSendOutput = DestNone; proc_exit(0); } *************** *** 3294,3300 **** break; } ! if (whereToSendOutput == Remote) pq_putemptymessage('3'); /* CloseComplete */ } break; --- 3294,3300 ---- break; } ! if (whereToSendOutput == DestRemote) pq_putemptymessage('3'); /* CloseComplete */ } break; *************** *** 3328,3334 **** case 'H': /* flush */ pq_getmsgend(&input_message); ! if (whereToSendOutput == Remote) pq_flush(); break; --- 3328,3334 ---- case 'H': /* flush */ pq_getmsgend(&input_message); ! if (whereToSendOutput == DestRemote) pq_flush(); break; *************** *** 3350,3357 **** * Reset whereToSendOutput to prevent ereport from attempting * to send any more messages to client. */ ! if (whereToSendOutput == Remote) ! whereToSendOutput = None; /* * NOTE: if you are tempted to add more code here, DON'T! --- 3350,3357 ---- * Reset whereToSendOutput to prevent ereport from attempting * to send any more messages to client. */ ! if (whereToSendOutput == DestRemote) ! whereToSendOutput = DestNone; /* * NOTE: if you are tempted to add more code here, DON'T! Index: src/backend/tcop/pquery.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/tcop/pquery.c,v retrieving revision 1.95 diff -c -r1.95 pquery.c *** src/backend/tcop/pquery.c 15 Oct 2005 02:49:27 -0000 1.95 --- src/backend/tcop/pquery.c 2 Nov 2005 12:53:13 -0000 *************** *** 471,478 **** * Select the format codes for a portal's output. * * This must be run after PortalStart for a portal that will be read by ! * a Remote or RemoteExecute destination. It is not presently needed for ! * other destination types. * * formats[] is the client format request, as per Bind message conventions. */ --- 471,478 ---- * Select the format codes for a portal's output. * * This must be run after PortalStart for a portal that will be read by ! * a DestRemote or DestRemoteExecute destination. It is not presently needed ! * for other destination types. * * formats[] is the client format request, as per Bind message conventions. */ *************** *** 633,639 **** DestReceiver *treceiver; PortalCreateHoldStore(portal); ! treceiver = CreateDestReceiver(Tuplestore, portal); PortalRunUtility(portal, linitial(portal->parseTrees), treceiver, NULL); (*treceiver->rDestroy) (treceiver); --- 633,639 ---- DestReceiver *treceiver; PortalCreateHoldStore(portal); ! treceiver = CreateDestReceiver(DestTuplestore, portal); PortalRunUtility(portal, linitial(portal->parseTrees), treceiver, NULL); (*treceiver->rDestroy) (treceiver); *************** *** 1015,1032 **** ListCell *planlist_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 = None_Receiver; ! if (altdest->mydest == RemoteExecute) altdest = None_Receiver; /* --- 1015,1032 ---- ListCell *planlist_item; /* ! * If the destination is DestRemoteExecute, change to DestNone. 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 == DestRemoteExecute) dest = None_Receiver; ! if (altdest->mydest == DestRemoteExecute) altdest = None_Receiver; /* *************** *** 1184,1190 **** DestReceiver *treceiver; PortalCreateHoldStore(portal); ! treceiver = CreateDestReceiver(Tuplestore, portal); PortalRunUtility(portal, linitial(portal->parseTrees), treceiver, NULL); (*treceiver->rDestroy) (treceiver); --- 1184,1190 ---- DestReceiver *treceiver; PortalCreateHoldStore(portal); ! treceiver = CreateDestReceiver(DestTuplestore, portal); PortalRunUtility(portal, linitial(portal->parseTrees), treceiver, NULL); (*treceiver->rDestroy) (treceiver); *************** *** 1371,1377 **** /* Are we sitting on a row? */ on_row = (!portal->atStart && !portal->atEnd); ! if (dest->mydest == None) { /* MOVE 0 returns 0/1 based on if FETCH 0 would return a row */ return on_row ? 1L : 0L; --- 1371,1377 ---- /* Are we sitting on a row? */ on_row = (!portal->atStart && !portal->atEnd); ! if (dest->mydest == DestNone) { /* MOVE 0 returns 0/1 based on if FETCH 0 would return a row */ return on_row ? 1L : 0L; *************** *** 1398,1404 **** /* * Optimize MOVE BACKWARD ALL into a Rewind. */ ! if (!forward && count == FETCH_ALL && dest->mydest == None) { long result = portal->portalPos; --- 1398,1404 ---- /* * Optimize MOVE BACKWARD ALL into a Rewind. */ ! if (!forward && count == FETCH_ALL && dest->mydest == DestNone) { long result = portal->portalPos; Index: src/backend/utils/error/elog.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/error/elog.c,v retrieving revision 1.165 diff -c -r1.165 elog.c *** src/backend/utils/error/elog.c 15 Oct 2005 02:49:32 -0000 1.165 --- src/backend/utils/error/elog.c 2 Nov 2005 12:30:28 -0000 *************** *** 223,229 **** } /* Determine whether message is enabled for client output */ ! if (whereToSendOutput == Remote && elevel != COMMERROR) { /* * client_min_messages is honored only after we complete the --- 223,229 ---- } /* Determine whether message is enabled for client output */ ! if (whereToSendOutput == DestRemote && elevel != COMMERROR) { /* * client_min_messages is honored only after we complete the *************** *** 374,380 **** * we must do this even if client is fool enough to have set * client_min_messages above FATAL, so don't look at output_to_client. */ ! if (elevel >= FATAL && whereToSendOutput == Remote) pq_endcopyout(true); /* Emit the message to the right places */ --- 374,380 ---- * we must do this even if client is fool enough to have set * client_min_messages above FATAL, so don't look at output_to_client. */ ! if (elevel >= FATAL && whereToSendOutput == DestRemote) pq_endcopyout(true); /* Emit the message to the right places */ *************** *** 412,419 **** * If we just reported a startup failure, the client will disconnect * on receiving it, so don't send any more to the client. */ ! if (PG_exception_stack == NULL && whereToSendOutput == Remote) ! whereToSendOutput = None; /* * fflush here is just to improve the odds that we get to see the --- 412,419 ---- * If we just reported a startup failure, the client will disconnect * on receiving it, so don't send any more to the client. */ ! if (PG_exception_stack == NULL && whereToSendOutput == DestRemote) ! whereToSendOutput = DestNone; /* * fflush here is just to improve the odds that we get to see the *************** *** 1684,1690 **** #endif /* WIN32 */ /* Write to stderr, if enabled */ ! if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == Debug) { #ifdef WIN32 --- 1684,1690 ---- #endif /* WIN32 */ /* Write to stderr, if enabled */ ! if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == DestDebug) { #ifdef WIN32 Index: src/backend/utils/misc/guc.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/misc/guc.c,v retrieving revision 1.296 diff -c -r1.296 guc.c *** src/backend/utils/misc/guc.c 29 Oct 2005 00:31:52 -0000 1.296 --- src/backend/utils/misc/guc.c 2 Nov 2005 12:31:11 -0000 *************** *** 3323,3329 **** * Don't do anything unless talking to an interactive frontend of protocol * 3.0 or later. */ ! if (whereToSendOutput != Remote || PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) return; --- 3323,3329 ---- * Don't do anything unless talking to an interactive frontend of protocol * 3.0 or later. */ ! if (whereToSendOutput != DestRemote || PG_PROTOCOL_MAJOR(FrontendProtocol) < 3) return; Index: src/include/tcop/dest.h =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/include/tcop/dest.h,v retrieving revision 1.47 diff -c -r1.47 dest.h *** src/include/tcop/dest.h 15 Oct 2005 02:49:46 -0000 1.47 --- src/include/tcop/dest.h 2 Nov 2005 12:48:15 -0000 *************** *** 15,21 **** * PQexec() or PQfn(). In this case, the results are sent * to the frontend via the functions in backend/libpq. * ! * - None is the destination when the system executes * a query internally. The results are discarded. * * dest.c defines three functions that implement destination management: --- 15,21 ---- * PQexec() or PQfn(). In this case, the results are sent * to the frontend via the functions in backend/libpq. * ! * - DestNone is the destination when the system executes * a query internally. The results are discarded. * * dest.c defines three functions that implement destination management: *************** *** 47,53 **** * object not to disappear while still needed. * * Special provision: None_Receiver is a permanently available receiver ! * object for the None destination. This avoids useless creation/destroy * calls in portal and cursor manipulations. * * --- 47,53 ---- * object not to disappear while still needed. * * Special provision: None_Receiver is a permanently available receiver ! * object for the DestNone destination. This avoids useless creation/destroy * calls in portal and cursor manipulations. * * *************** *** 72,90 **** * CommandDest is a simplistic means of identifying the desired * destination. Someday this will probably need to be improved. * ! * Note: only the values None, Debug, Remote are legal for the global ! * variable whereToSendOutput. The other values may be used * as the destination for individual commands. * ---------------- */ typedef enum { ! None, /* results are discarded */ ! Debug, /* results go to debugging output */ ! Remote, /* results sent to frontend process */ ! RemoteExecute, /* sent to frontend, in Execute command */ ! SPI, /* results sent to SPI manager */ ! Tuplestore /* results sent to Tuplestore */ } CommandDest; /* ---------------- --- 72,90 ---- * CommandDest is a simplistic means of identifying the desired * destination. Someday this will probably need to be improved. * ! * Note: only the values DestNone, DestDebug, DestRemote are legal for the ! * global variable whereToSendOutput. The other values may be used * as the destination for individual commands. * ---------------- */ typedef enum { ! DestNone, /* results are discarded */ ! DestDebug, /* results go to debugging output */ ! DestRemote, /* results sent to frontend process */ ! DestRemoteExecute, /* sent to frontend, in Execute command */ ! DestSPI, /* results sent to SPI manager */ ! DestTuplestore /* results sent to Tuplestore */ } CommandDest; /* ---------------- *************** *** 115,121 **** /* Private fields might appear beyond this point... */ }; ! extern DestReceiver *None_Receiver; /* permanent receiver for None */ /* This is a forward reference to utils/portal.h */ --- 115,121 ---- /* Private fields might appear beyond this point... */ }; ! extern DestReceiver *None_Receiver; /* permanent receiver for DestNone */ /* This is a forward reference to utils/portal.h */