tuptable.h

来自「PostgreSQL7.4.6 for Linux」· C头文件 代码 · 共 85 行

H
85
字号
/*------------------------------------------------------------------------- * * tuptable.h *	  tuple table support stuff * * * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $Id: tuptable.h,v 1.23 2003/08/04 02:40:13 momjian Exp $ * * NOTES *	  The tuple table interface is getting pretty ugly. *	  It should be redesigned soon. * *------------------------------------------------------------------------- */#ifndef TUPTABLE_H#define TUPTABLE_H#include "access/htup.h"/* ---------------- *		The executor tuple table is managed and manipulated by special *		code in executor/execTuples.c. * *		TupleTableSlot information * *			val					current tuple, or NULL if no tuple *			shouldFree			boolean - should we pfree() tuple *			descIsNew			boolean - true when tupleDescriptor changes *			tupleDescriptor		type information for the tuple data *			shouldFreeDesc		boolean - should we free tupleDescriptor *			buffer				the buffer for tuples pointing to disk pages * *		The executor stores pointers to tuples in a ``tuple table'' *		which is composed of TupleTableSlots.  Sometimes the tuples *		are pointers to buffer pages, while others are pointers to *		palloc'ed memory; the shouldFree variable tells us when *		we may call pfree() on a tuple.  -cim 9/23/90 * *		If buffer is not InvalidBuffer, then the slot is holding a pin *		on the indicated buffer page; drop the pin when we release the *		slot's reference to that buffer. * *		In the implementation of nested-dot queries such as *		"retrieve (EMP.hobbies.all)", a single scan may return tuples *		of many types, so now we return pointers to tuple descriptors *		along with tuples returned via the tuple table.  -cim 1/18/90 * *		shouldFreeDesc is similar to shouldFree: if it's true, then the *		tupleDescriptor is "owned" by the TupleTableSlot and should be *		freed when the slot's reference to the descriptor is dropped. * *		See executor.h for decls of functions defined in execTuples.c *		-jolly * * ---------------- */typedef struct TupleTableSlot{	NodeTag		type;	HeapTuple	val;	bool		ttc_shouldFree;	bool		ttc_descIsNew;	bool		ttc_shouldFreeDesc;	TupleDesc	ttc_tupleDescriptor;	Buffer		ttc_buffer;} TupleTableSlot;/* ---------------- *		tuple table data structure * ---------------- */typedef struct TupleTableData{	int			size;			/* size of the table */	int			next;			/* next available slot number */	TupleTableSlot *array;		/* array of TupleTableSlot's */} TupleTableData;typedef TupleTableData *TupleTable;#endif   /* TUPTABLE_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?