mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Code review for holdable-cursors patch. Fix error recovery, memory
context sloppiness, some other things. Includes Neil's mopup patch of 22-Apr.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.91 2003/04/27 20:09:43 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.92 2003/04/29 03:21:29 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -809,7 +809,7 @@ SPI_cursor_open(const char *name, void *plan, Datum *Values, const char *Nulls)
|
||||
ExecutorStart(queryDesc);
|
||||
|
||||
/* Arrange to shut down the executor if portal is dropped */
|
||||
PortalSetQuery(portal, queryDesc, PortalCleanup);
|
||||
PortalSetQuery(portal, queryDesc);
|
||||
|
||||
/* Switch back to the callers memory context */
|
||||
MemoryContextSwitchTo(oldcontext);
|
||||
|
@ -9,7 +9,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.1 2003/03/27 16:53:15 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.2 2003/04/29 03:21:29 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -27,8 +27,9 @@ typedef struct
|
||||
MemoryContext cxt;
|
||||
} TStoreState;
|
||||
|
||||
|
||||
/*
|
||||
* Receive a tuple from the executor and store it in the tuplestore.
|
||||
* Prepare to receive tuples from executor.
|
||||
*
|
||||
* XXX: As currently implemented, this routine is a hack: there should
|
||||
* be no tie between this code and the portal system. Instead, the
|
||||
@ -56,6 +57,9 @@ tstoreSetupReceiver(DestReceiver *self, int operation,
|
||||
myState->cxt = portal->holdContext;
|
||||
}
|
||||
|
||||
/*
|
||||
* Receive a tuple from the executor and store it in the tuplestore.
|
||||
*/
|
||||
static void
|
||||
tstoreReceiveTuple(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
|
||||
{
|
||||
@ -67,12 +71,18 @@ tstoreReceiveTuple(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
|
||||
MemoryContextSwitchTo(oldcxt);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clean up
|
||||
*/
|
||||
static void
|
||||
tstoreCleanupReceiver(DestReceiver *self)
|
||||
{
|
||||
; /* do nothing */
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
/*
|
||||
* Initially create a DestReceiver object.
|
||||
*/
|
||||
DestReceiver *
|
||||
tstoreReceiverCreateDR(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user