diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/tuptoaster.h | 13 | ||||
-rw-r--r-- | src/include/commands/command.h | 6 | ||||
-rw-r--r-- | src/include/fmgr.h | 17 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 3 |
4 files changed, 33 insertions, 6 deletions
diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h index 7bc55dc53a2..95a1fe8e004 100644 --- a/src/include/access/tuptoaster.h +++ b/src/include/access/tuptoaster.h @@ -6,7 +6,7 @@ * * Copyright (c) 2000, PostgreSQL Development Team * - * $Id: tuptoaster.h,v 1.13 2001/11/05 17:46:31 momjian Exp $ + * $Id: tuptoaster.h,v 1.14 2002/03/05 05:33:25 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -100,6 +100,17 @@ extern varattrib *heap_tuple_fetch_attr(varattrib *attr); extern varattrib *heap_tuple_untoast_attr(varattrib *attr); /* ---------- + * heap_tuple_untoast_attr_slice() - + * + * Fetches only the specified portion of an attribute. + * (Handles all cases for attribute storage) + * ---------- + */ +extern varattrib *heap_tuple_untoast_attr_slice(varattrib *attr, + int32 sliceoffset, + int32 slicelength); + +/* ---------- * toast_compress_datum - * * Create a compressed version of a varlena datum, if possible diff --git a/src/include/commands/command.h b/src/include/commands/command.h index ee4e2c0aa3c..cf09111af47 100644 --- a/src/include/commands/command.h +++ b/src/include/commands/command.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: command.h,v 1.32 2002/02/26 22:47:10 tgl Exp $ + * $Id: command.h,v 1.33 2002/03/05 05:33:29 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -47,9 +47,9 @@ extern void AlterTableAlterColumnDefault(const char *relationName, bool inh, const char *colName, Node *newDefault); -extern void AlterTableAlterColumnStatistics(const char *relationName, +extern void AlterTableAlterColumnFlags(const char *relationName, bool inh, const char *colName, - Node *statsTarget); + Node *flagValue, const char *flagType); extern void AlterTableDropColumn(const char *relationName, bool inh, const char *colName, diff --git a/src/include/fmgr.h b/src/include/fmgr.h index 51adf1c5cd9..017f73fb757 100644 --- a/src/include/fmgr.h +++ b/src/include/fmgr.h @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: fmgr.h,v 1.18 2001/11/05 17:46:31 momjian Exp $ + * $Id: fmgr.h,v 1.19 2002/03/05 05:33:22 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -135,11 +135,16 @@ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, */ extern struct varlena *pg_detoast_datum(struct varlena * datum); extern struct varlena *pg_detoast_datum_copy(struct varlena * datum); +extern struct varlena *pg_detoast_datum_slice(struct varlena * datum, + int32 first, int32 count); #define PG_DETOAST_DATUM(datum) \ pg_detoast_datum((struct varlena *) DatumGetPointer(datum)) #define PG_DETOAST_DATUM_COPY(datum) \ pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum)) +#define PG_DETOAST_DATUM_SLICE(datum,f,c) \ + pg_detoast_datum_slice((struct varlena *) DatumGetPointer(datum), \ + (int32) f, (int32) c) /* * Support for cleaning up detoasted copies of inputs. This must only @@ -187,6 +192,11 @@ extern struct varlena *pg_detoast_datum_copy(struct varlena * datum); #define DatumGetTextPCopy(X) ((text *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetBpCharPCopy(X) ((BpChar *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetVarCharPCopy(X) ((VarChar *) PG_DETOAST_DATUM_COPY(X)) +/* Variants which return n bytes starting at pos. m */ +#define DatumGetByteaPSlice(X,m,n) ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n)) +#define DatumGetTextPSlice(X,m,n) ((text *) PG_DETOAST_DATUM_SLICE(X,m,n)) +#define DatumGetBpCharPSlice(X,m,n) ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n)) +#define DatumGetVarCharPSlice(X,m,n) ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n)) /* GETARG macros for varlena types will typically look like this: */ #define PG_GETARG_BYTEA_P(n) DatumGetByteaP(PG_GETARG_DATUM(n)) #define PG_GETARG_TEXT_P(n) DatumGetTextP(PG_GETARG_DATUM(n)) @@ -197,6 +207,11 @@ extern struct varlena *pg_detoast_datum_copy(struct varlena * datum); #define PG_GETARG_TEXT_P_COPY(n) DatumGetTextPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_BPCHAR_P_COPY(n) DatumGetBpCharPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_VARCHAR_P_COPY(n) DatumGetVarCharPCopy(PG_GETARG_DATUM(n)) +/* And a b-byte slice from position a -also OK to write */ +#define PG_GETARG_BYTEA_P_SLICE(n,a,b) DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b) +#define PG_GETARG_TEXT_P_SLICE(n,a,b) DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b) +#define PG_GETARG_BPCHAR_P_SLICE(n,a,b) DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b) +#define PG_GETARG_VARCHAR_P_SLICE(n,a,b) DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b) /* To return a NULL do this: */ #define PG_RETURN_NULL() \ diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 564985ae0e3..c6b1feb79b9 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: parsenodes.h,v 1.155 2002/03/01 22:45:18 petere Exp $ + * $Id: parsenodes.h,v 1.156 2002/03/05 05:33:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -123,6 +123,7 @@ typedef struct AlterTableStmt * A = add column * T = alter column default * S = alter column statistics + * M = alter column storage * D = drop column * C = add constraint * X = drop constraint |