/* * Written by Tomas Dosoudil * This file is distributed under BSD-style license. * */ #ifndef _PGDVIEW_H_ #define _PGDVIEW_H_ /* PostgreSQL version */ #define POSTGRESQL_8_2 1 #define POSTGRESQL_8_1 0 #define POSTGRESQL_8_0 0 /* PageHeaderData see in Postgre doc chapter 50. Database Physical Storage*/ #define PAGE_HEADER 20 #define PD_PAGESIZE_VERSION 2 #define ITEM_POINTER 4 /* file descriptor queue debug */ #define FD_DEBUG 0 /* * CONTROL AN INPUT */ /* max length of path to db inclusive of file name */ #define MAX_FILENAME_LENGTH 200 /* max number of opened files */ #define MAX_FD_OPENED 5 /* * check if argument has parameter * - parameter must not be last, last is database file name * - first character must not be '-' */ #define HAS_ARGUMENT(optc,optv) ((*(*(optv) + 1) == NULL) && \ (((optc) - 1) > 0) && \ (**((optv) + 1) != '-')) /* Diferent between versions. Macros are defined for version 8.0.8 */ /* for version 8.0.8 */ #ifndef HEAP_XMAX_UNLOGGED #define HEAP_XMAX_UNLOGGED 0x0080 #endif #ifndef HEAP_MARKED_FOR_UPDATE #define HEAP_MARKED_FOR_UPDATE 0x1000 #endif /* for version 8.1.4 */ #ifndef HEAP_XMAX_SHARED_LOCK #define HEAP_XMAX_SHARED_LOCK 0x0080 #endif #ifndef HEAP_XMAX_IS_MULTI #define HEAP_XMAX_IS_MULTI 0x1000 #endif #ifndef HEAP_XMAX_EXCL_LOCK #define HEAP_XMAX_EXCL_LOCK 0x0040 #endif /* * HeapTupleHeader accessor macros * return information if t_infomask is sets */ #define _HeapTupleHasNulls(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASNULL) != 0) #define _HeapTupleHasVarWidth(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASVARWIDTH) != 0) #define _HeapTupleHasExternal(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASEXTERNAL) != 0) #define _HeapTupleHasCompressed(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASCOMPRESSED) != 0) #define _HeapTupleHasExtended(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASEXTENDED) != 0) #define HeapTupleHasOid(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_HASOID) != 0) #define HeapTupleHasUnlogged(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_XMAX_UNLOGGED) != 0) #define HeapTupleHasXminCommitted(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_XMIN_COMMITTED) != 0) #define HeapTupleHasXminInvalid(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_XMIN_INVALID) != 0) #define HeapTupleHasXmaxCommitted(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_XMAX_COMMITTED) != 0) #define HeapTupleHasXmaxInvalid(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_XMAX_INVALID) != 0) #define HeapTupleHasMarkedUpdate(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_MARKED_FOR_UPDATE) != 0) #define HeapTupleHasUpdated(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_UPDATED) != 0) #define HeapTupleHasMovedOff(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_MOVED_OFF) != 0) #define HeapTupleHasMovedIn(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_MOVED_IN) != 0) #define HeapTupleHasMoved(tupleHeader) \ (((tupleHeader)->t_infomask & HEAP_MOVED) != 0) #endif /* _PGDVIEW_h_ */