diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml index 66eced6c949..e39f99fbb32 100644 --- a/doc/src/sgml/spi.sgml +++ b/doc/src/sgml/spi.sgml @@ -318,21 +318,26 @@ SPI_execute("INSERT INTO foo SELECT * FROM bar RETURNING *", false, 5); The structure SPITupleTable is defined thus: -typedef struct +typedef struct SPITupleTable { + /* Public members */ + TupleDesc tupdesc; /* tuple descriptor */ + HeapTuple *vals; /* array of tuples */ + + /* Private members, not intended for external callers */ MemoryContext tuptabcxt; /* memory context of result table */ - uint64 alloced; /* number of alloced vals */ - uint64 free; /* number of free vals */ - TupleDesc tupdesc; /* row descriptor */ - HeapTuple *vals; /* rows */ + uint64 alloced; /* # of alloced vals */ + uint64 free; /* # of free vals */ + slist_node next; /* link for internal bookkeeping */ + SubTransactionId subid; /* subxact in which tuptable was created */ } SPITupleTable; + vals and tupdesc can + be used by SPI callers, the remaining fields are internal. vals is an array of pointers to rows. (The number of valid entries is given by SPI_processed.) tupdesc is a row descriptor which you can pass to - SPI functions dealing with rows. tuptabcxt, - alloced, and free are internal - fields not intended for use by SPI callers. + SPI functions dealing with rows. diff --git a/src/include/executor/spi.h b/src/include/executor/spi.h index 7bf361874d2..af4f8c875c7 100644 --- a/src/include/executor/spi.h +++ b/src/include/executor/spi.h @@ -21,11 +21,14 @@ typedef struct SPITupleTable { + /* Public members */ + TupleDesc tupdesc; /* tuple descriptor */ + HeapTuple *vals; /* array of tuples */ + + /* Private members, not intended for external callers */ MemoryContext tuptabcxt; /* memory context of result table */ uint64 alloced; /* # of alloced vals */ uint64 free; /* # of free vals */ - TupleDesc tupdesc; /* tuple descriptor */ - HeapTuple *vals; /* tuples */ slist_node next; /* link for internal bookkeeping */ SubTransactionId subid; /* subxact in which tuptable was created */ } SPITupleTable;