mirror of
https://github.com/postgres/postgres.git
synced 2025-11-12 00:04:44 -05:00
- New functions to create a portal using a prepared/saved SPI plan or lookup an existing portal by name. - Functions to fetch/move from/in portals. Results are placed in the usual SPI_processed and SPI_tuptable, so the entire set of utility functions can be used to gain attribute access. - Prepared/saved SPI plans now use their own memory context and SPI_freeplan(plan) can remove them. - Tuple result sets (SPI_tuptable) now uses it's own memory context and can be free'd by SPI_freetuptable(tuptab). Enhancement of PL/pgSQL - Uses generic named portals internally in FOR ... SELECT loops to avoid running out of memory on huge result sets. - Support for CURSOR and REFCURSOR syntax using the new SPI functionality. Cursors used internally only need no explicit transaction block. Refcursor variables can be used inside of explicit transaction block to pass cursors between main application and functions. Jan
40 lines
890 B
C
40 lines
890 B
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* spi.c
|
|
* Server Programming Interface private declarations
|
|
*
|
|
* $Header: /cvsroot/pgsql/src/include/executor/spi_priv.h,v 1.8 2001/05/21 14:22:18 wieck Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef SPI_PRIV_H
|
|
#define SPI_PRIV_H
|
|
|
|
#include "executor/spi.h"
|
|
|
|
typedef struct
|
|
{
|
|
List *qtlist;
|
|
uint32 processed; /* by Executor */
|
|
SPITupleTable *tuptable;
|
|
MemoryContext procCxt; /* procedure context */
|
|
MemoryContext execCxt; /* executor context */
|
|
MemoryContext savedcxt;
|
|
CommandId savedId;
|
|
} _SPI_connection;
|
|
|
|
typedef struct
|
|
{
|
|
MemoryContext plancxt;
|
|
List *qtlist;
|
|
List *ptlist;
|
|
int nargs;
|
|
Oid *argtypes;
|
|
} _SPI_plan;
|
|
|
|
#define _SPI_CPLAN_CURCXT 0
|
|
#define _SPI_CPLAN_PROCXT 1
|
|
#define _SPI_CPLAN_TOPCXT 2
|
|
|
|
#endif /* SPI_PRIV_H */
|