⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htup.h

📁 关系型数据库 Postgresql 6.5.2
💻 H
字号:
/*------------------------------------------------------------------------- * * htup.h *	  POSTGRES heap tuple definitions. * * * Copyright (c) 1994, Regents of the University of California * * $Id: htup.h,v 1.22 1999/07/12 13:32:38 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef HTUP_H#define HTUP_H#include <utils/nabstime.h>#include <storage/bufpage.h>#include <storage/itemptr.h>#include <utils/memutils.h>#define MinHeapTupleBitmapSize	32		/* 8 * 4 *//* check these, they are likely to be more severely limited by t_hoff */#define MaxHeapAttributeNumber	1600	/* 8 * 200 *//* * to avoid wasting space, the attributes should be layed out in such a * way to reduce structure padding. */typedef struct HeapTupleHeaderData{	Oid			t_oid;			/* OID of this tuple -- 4 bytes */	CommandId	t_cmin;			/* insert CID stamp -- 4 bytes each */	CommandId	t_cmax;			/* delete CommandId stamp */	TransactionId t_xmin;		/* insert XID stamp -- 4 bytes each */	TransactionId t_xmax;		/* delete XID stamp */	ItemPointerData t_ctid;		/* current TID of this or newer tuple */	int16		t_natts;		/* number of attributes */	uint16		t_infomask;		/* various infos */	uint8		t_hoff;			/* sizeof tuple header */	bits8		t_bits[MinHeapTupleBitmapSize / 8];	/* bit map of domains */	/* MORE DATA FOLLOWS AT END OF STRUCT */} HeapTupleHeaderData;typedef HeapTupleHeaderData *HeapTupleHeader;#define MinTupleSize	(MAXALIGN(sizeof (PageHeaderData)) + \						 MAXALIGN(sizeof(HeapTupleHeaderData)) + \						 MAXALIGN(sizeof(char)))#define MaxTupleSize	(BLCKSZ - MinTupleSize)#define MaxAttrSize		(MaxTupleSize - MAXALIGN(sizeof(HeapTupleHeaderData)))#define SelfItemPointerAttributeNumber			(-1)#define ObjectIdAttributeNumber					(-2)#define MinTransactionIdAttributeNumber			(-3)#define MinCommandIdAttributeNumber				(-4)#define MaxTransactionIdAttributeNumber			(-5)#define MaxCommandIdAttributeNumber				(-6)#define FirstLowInvalidHeapAttributeNumber		(-7)/* If you make any changes above, the order off offsets in this must change */extern long heap_sysoffset[];/* * This new HeapTuple for version >= 6.5 and this is why it was changed: * * 1. t_len moved off on-disk tuple data - ItemIdData is used to get len; * 2. t_ctid above is not self tuple TID now - it may point to *	  updated version of tuple (required by MVCC); * 3. someday someone let tuple to cross block boundaries - *	  he have to add something below... */typedef struct HeapTupleData{	uint32		t_len;			/* length of *t_data */	ItemPointerData t_self;		/* SelfItemPointer */	HeapTupleHeader t_data;		/* */} HeapTupleData;typedef HeapTupleData *HeapTuple;#define HEAPTUPLESIZE	DOUBLEALIGN(sizeof(HeapTupleData))/* ---------------- *		support macros * ---------------- */#define GETSTRUCT(TUP) (((char *)((HeapTuple)(TUP))->t_data) + \						((HeapTuple)(TUP))->t_data->t_hoff)/* * BITMAPLEN(NATTS) - *		Computes minimum size of bitmap given number of domains. */#define BITMAPLEN(NATTS) \		((((((int)(NATTS) - 1) >> 3) + 4 - (MinHeapTupleBitmapSize >> 3)) \		  & ~03) + (MinHeapTupleBitmapSize >> 3))/* * HeapTupleIsValid *		True iff the heap tuple is valid. */#define HeapTupleIsValid(tuple) PointerIsValid(tuple)/* * information stored in t_infomask: */#define HEAP_HASNULL			0x0001	/* has null attribute(s) */#define HEAP_HASVARLENA			0x0002	/* has variable length										 * attribute(s) */#define HEAP_XMIN_COMMITTED		0x0100	/* t_xmin committed */#define HEAP_XMIN_INVALID		0x0200	/* t_xmin invalid/aborted */#define HEAP_XMAX_COMMITTED		0x0400	/* t_xmax committed */#define HEAP_XMAX_INVALID		0x0800	/* t_xmax invalid/aborted */#define HEAP_MARKED_FOR_UPDATE	0x1000	/* marked for UPDATE */#define HEAP_UPDATED			0x2000	/* this is UPDATEd version of row */#define HEAP_MOVED_OFF			0x4000	/* removed or moved to another										 * place by vacuum */#define HEAP_MOVED_IN			0x8000	/* moved from another place by										 * vacuum */#define HEAP_XACT_MASK			0xFF00	/* */#define HeapTupleNoNulls(tuple) \		(!(((HeapTuple) (tuple))->t_data->t_infomask & HEAP_HASNULL))#define HeapTupleAllFixed(tuple) \		(!(((HeapTuple) (tuple))->t_data->t_infomask & HEAP_HASVARLENA))#endif	 /* HTUP_H */

⌨️ 快捷键说明

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