diff options
Diffstat (limited to 'src/include/access/robert_tuple.h')
| -rw-r--r-- | src/include/access/robert_tuple.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/include/access/robert_tuple.h b/src/include/access/robert_tuple.h new file mode 100644 index 0000000000..28bbc90885 --- /dev/null +++ b/src/include/access/robert_tuple.h @@ -0,0 +1,60 @@ +/* + * robert_tuple.h + */ + +#ifndef ROBERT_TUPLE_H +#define ROBERT_TUPLE_H + +#include "access/transam.h" +#include "access/tupdesc.h" +#include "access/undolog.h" +#include "storage/itemptr.h" +#include "utils/relcache.h" + +struct TupleTableSlot; + +typedef struct RobertTupleHeaderData +{ + UndoRecPtr r_undoptr; + uint16 r_flags; + uint8 r_hoff; + bits8 r_bits[FLEXIBLE_ARRAY_MEMBER]; +} RobertTupleHeaderData; + +#define SizeofRobertTupleHeader offsetof(RobertTupleHeaderData, r_bits) + +/* Flags for use in r_flags. */ +#define ROBERT_NATTS_MASK 0x07FF /* 11 bits */ +#define ROBERT_HASEXTERNAL 0x0800 + +typedef RobertTupleHeaderData *RobertTupleHeader; + +typedef struct RobertTupleData +{ + uint32 r_len; + RobertTupleHeader r_data; + Oid r_tableOid; + ItemPointerData r_self; +} RobertTupleData; + +typedef RobertTupleData *RobertTuple; + +#define ROBERTTUPLESIZE MAXALIGN(sizeof(RobertTupleData)) + +extern Size robert_compute_data_size(TupleDesc tupleDesc, Datum *values, + bool *isnull, uint8 hoff); +extern void robert_fill_null_bitmap(bits8 *bits, int entries_needed, + bool *isnull); +extern void robert_fill_tuple(TupleDesc tupleDesc, Datum *values, bool *isnull, + RobertTupleHeader td, Size len); +extern RobertTuple robert_form_tuple(TupleDesc tupleDesc, Datum *values, + bool *isnull); +extern void robert_deform_tuple(TupleDesc tupleDesc, RobertTuple tuple, + Datum *values, bool *isnull, int natts, int oldnatts, + uint32 *offp); +extern RobertTuple robert_toast_tuple(Relation rel, + struct TupleTableSlot *slot, + int options); +extern char *robert_print_tuple(RobertTuple tuple, TupleDesc tupleDesc); + +#endif |
