summaryrefslogtreecommitdiff
path: root/src/include/access/robert_tuple.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/access/robert_tuple.h')
-rw-r--r--src/include/access/robert_tuple.h60
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