21 #include "catalog/pg_type_d.h"
45 int numAttrs = tupleDesc->
natts;
50 for (
i = 0;
i < numAttrs;
i++)
79 memcmp((
char *) old_value, (
char *) new_value,
122 if (att->attlen == -1)
127 if (att->attstorage == TYPSTORAGE_PLAIN)
141 if (att->attstorage == TYPSTORAGE_PLAIN)
183 bool for_compression,
bool check_main)
186 int numAttrs = tupleDesc->
natts;
187 int biggest_attno = -1;
195 for (
i = 0;
i < numAttrs;
i++)
203 if (for_compression &&
206 if (check_main && att->attstorage != TYPSTORAGE_MAIN)
208 if (!check_main && att->attstorage != TYPSTORAGE_EXTENDED &&
209 att->attstorage != TYPSTORAGE_EXTERNAL)
219 return biggest_attno;
279 int numAttrs = tupleDesc->
natts;
288 for (
i = 0;
i < numAttrs;
i++)
304 for (
i = 0;
i < numAttrs;
i++)
323 int numAttrs = tupleDesc->
natts;
326 for (
i = 0;
i < numAttrs;
i++)
static Datum values[MAXATTR]
struct varlena * detoast_external_attr(struct varlena *attr)
struct varlena * detoast_attr(struct varlena *attr)
#define TOAST_POINTER_SIZE
void pfree(void *pointer)
FormData_pg_attribute * Form_pg_attribute
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
struct varlena * tai_oldexternal
void toast_tuple_init(ToastTupleContext *ttc)
void toast_delete_external(Relation rel, const Datum *values, const bool *isnull, bool is_speculative)
void toast_tuple_try_compression(ToastTupleContext *ttc, int attribute)
void toast_tuple_externalize(ToastTupleContext *ttc, int attribute, int options)
void toast_tuple_cleanup(ToastTupleContext *ttc)
int toast_tuple_find_biggest_attribute(ToastTupleContext *ttc, bool for_compression, bool check_main)
#define TOAST_NEEDS_CHANGE
#define TOASTCOL_NEEDS_DELETE_OLD
#define TOASTCOL_INCOMPRESSIBLE
#define TOAST_NEEDS_DELETE_OLD
#define TOASTCOL_NEEDS_FREE
void toast_delete_datum(Relation rel, Datum value, bool is_speculative)
Datum toast_save_datum(Relation rel, Datum value, struct varlena *oldexternal, int options)
Datum toast_compress_datum(Datum value, char cmethod)
#define TupleDescAttr(tupdesc, i)
#define VARATT_IS_EXTERNAL_ONDISK(PTR)
#define VARATT_IS_COMPRESSED(PTR)
#define VARSIZE_EXTERNAL(PTR)
#define VARATT_IS_EXTERNAL(PTR)