1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
|