diff options
Diffstat (limited to 'src/backend/utils/datum.h')
-rw-r--r-- | src/backend/utils/datum.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/backend/utils/datum.h b/src/backend/utils/datum.h new file mode 100644 index 00000000000..09a28518067 --- /dev/null +++ b/src/backend/utils/datum.h @@ -0,0 +1,64 @@ +/*------------------------------------------------------------------------- + * + * datum.h-- + * POSTGRES abstract data type datum representation definitions. + * + * + * Copyright (c) 1994, Regents of the University of California + * + * $Id: datum.h,v 1.1.1.1 1996/07/09 06:22:01 scrappy Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef DATUM_H +#define DATUM_H + +#include "postgres.h" + +/*-------------------------------------------------------- + * SOME NOT VERY PORTABLE ROUTINES ??? + *-------------------------------------------------------- + * + * In the implementation of the next routines we assume the following: + * + * A) if a type is "byVal" then all the information is stored in the + * Datum itself (i.e. no pointers involved!). In this case the + * length of the type is always greater than zero and less than + * "sizeof(Datum)" + * B) if a type is not "byVal" and it has a fixed length, then + * the "Datum" always contain a pointer to a stream of bytes. + * The number of significant bytes are always equal to the length of thr + * type. + * C) if a type is not "byVal" and is of variable length (i.e. it has + * length == -1) then "Datum" always points to a "struct varlena". + * This varlena structure has information about the actual length of this + * particular instance of the type and about its value. + */ + +/*--------------- + * datumGetSize + * find the "real" length of a datum + */ +extern Size datumGetSize(Datum value, Oid type, bool byVal, Size len); + +/*--------------- + * datumCopy + * make a copy of a datum. + */ +extern Datum datumCopy(Datum value, Oid type, bool byVal, Size len); + +/*--------------- + * datumFree + * free space that *might* have been palloced by "datumCopy" + */ +extern void datumFree(Datum value, Oid type, bool byVal, Size len); + +/*--------------- + * datumIsEqual + * return true if thwo datums are equal, false otherwise. + * XXX : See comments in the code for restrictions! + */ +extern bool datumIsEqual(Datum value1, Datum value2, Oid type, + bool byVal, Size len); + +#endif /* DATUM_H */ |