diff options
| author | Robert Haas | 2019-08-01 18:56:54 +0000 |
|---|---|---|
| committer | Robert Haas | 2019-08-05 13:26:48 +0000 |
| commit | cd998e5adc2acd79a1027d758b31104bb0035098 (patch) | |
| tree | 3514d850976da6229ddd7dda4cec19d1e2eb69a5 /src/include/access/robert_tuple.h | |
| parent | 6e8110605cce93bf64839ea40602812368876bc1 (diff) | |
Dummy AM for experimentation.robert
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 |
