diff --git a/contrib/btree_gist/btree_bit.c b/contrib/btree_gist/btree_bit.c index d8e401acfcf6f7ed4775bee94b9396c303469f1d..534c9af8131126f0765a1b0f728ed6b78b799ec1 100644 --- a/contrib/btree_gist/btree_bit.c +++ b/contrib/btree_gist/btree_bit.c @@ -70,7 +70,7 @@ gbt_bit_xfrm(bytea *leaf) int s = INTALIGN(VARBITBYTES(leaf) + VARHDRSZ); out = palloc(s); - VARATT_SIZEP(out) = s; + SET_VARSIZE(out, s); memcpy((void *) VARDATA(out), (void *) VARBITS(leaf), VARBITBYTES(leaf)); return out; } diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c index ae44e754913a080f1e0b3dd148e80044610b0d83..1ad5c0d99bb32605dae31ba8d41843454519eec1 100644 --- a/contrib/btree_gist/btree_utils_var.c +++ b/contrib/btree_gist/btree_utils_var.c @@ -51,42 +51,34 @@ gbt_var_key_readable(const GBT_VARKEY * k) GBT_VARKEY * gbt_var_key_copy(const GBT_VARKEY_R * u, bool force_node) { - GBT_VARKEY *r = NULL; if (u->lower == u->upper && !force_node) { /* leaf key mode */ - r = (GBT_VARKEY *) palloc(VARSIZE(u->lower) + VARHDRSZ); - memcpy((void *) VARDATA(r), (void *) u->lower, VARSIZE(u->lower)); - r->vl_len = VARSIZE(u->lower) + VARHDRSZ; - + memcpy(VARDATA(r), u->lower, VARSIZE(u->lower)); + SET_VARSIZE(r, VARSIZE(u->lower) + VARHDRSZ); } else { /* node key mode */ - r = (GBT_VARKEY *) palloc(INTALIGN(VARSIZE(u->lower)) + VARSIZE(u->upper) + VARHDRSZ); - memcpy((void *) VARDATA(r), (void *) u->lower, VARSIZE(u->lower)); - memcpy((void *) &(((char *) r)[VARHDRSZ + INTALIGN(VARSIZE(u->lower))]), (void *) u->upper, VARSIZE(u->upper)); - r->vl_len = INTALIGN(VARSIZE(u->lower)) + VARSIZE(u->upper) + VARHDRSZ; - + memcpy(VARDATA(r), u->lower, VARSIZE(u->lower)); + memcpy(VARDATA(r) + INTALIGN(VARSIZE(u->lower)), u->upper, VARSIZE(u->upper)); + SET_VARSIZE(r, INTALIGN(VARSIZE(u->lower)) + VARSIZE(u->upper) + VARHDRSZ); } return r; - } static GBT_VARKEY * gbt_var_leaf2node(GBT_VARKEY * leaf, const gbtree_vinfo * tinfo) { - GBT_VARKEY *out = leaf; if (tinfo->f_l2n) out = (*tinfo->f_l2n) (leaf); return out; - } @@ -212,19 +204,22 @@ gbt_var_node_truncate(const GBT_VARKEY * node, int32 cpf_length, const gbtree_vi GBT_VARKEY_R r = gbt_var_key_readable(node); int32 len1 = VARSIZE(r.lower) - VARHDRSZ; int32 len2 = VARSIZE(r.upper) - VARHDRSZ; - int32 si = 0; + int32 si; + char *out2; len1 = Min(len1, (cpf_length + 1)); len2 = Min(len2, (cpf_length + 1)); - si = 2 * VARHDRSZ + INTALIGN(VARHDRSZ + len1) + len2; + si = 2 * VARHDRSZ + INTALIGN(len1 + VARHDRSZ) + len2; out = (GBT_VARKEY *) palloc(si); - out->vl_len = si; - memcpy((void *) &(((char *) out)[VARHDRSZ]), (void *) r.lower, len1 + VARHDRSZ); - memcpy((void *) &(((char *) out)[VARHDRSZ + INTALIGN(VARHDRSZ + len1)]), (void *) r.upper, len2 + VARHDRSZ); + SET_VARSIZE(out, si); + + memcpy(VARDATA(out), r.lower, len1 + VARHDRSZ); + SET_VARSIZE(VARDATA(out), len1 + VARHDRSZ); - *((int32 *) &(((char *) out)[VARHDRSZ])) = len1 + VARHDRSZ; - *((int32 *) &(((char *) out)[VARHDRSZ + INTALIGN(VARHDRSZ + len1)])) = len2 + VARHDRSZ; + out2 = VARDATA(out) + INTALIGN(len1 + VARHDRSZ); + memcpy(out2, r.upper, len2 + VARHDRSZ); + SET_VARSIZE(out2, len2 + VARHDRSZ); return out; } diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c index 642212de5137a901ab0e019208ce387bb8e2ef2f..18cac99ca6bf1c57bff0327d581dd2ff14d9c674 100644 --- a/contrib/chkpass/chkpass.c +++ b/contrib/chkpass/chkpass.c @@ -4,7 +4,7 @@ * darcy@druid.net * http://www.druid.net/darcy/ * - * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.18 2007/02/07 00:52:35 petere Exp $ + * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.19 2007/02/27 23:48:05 tgl Exp $ * best viewed with tabs set to 4 */ @@ -125,10 +125,12 @@ chkpass_rout(PG_FUNCTION_ARGS) { chkpass *password = (chkpass *) PG_GETARG_POINTER(0); text *result; + int slen; - result = (text *) palloc(VARHDRSZ + 16); - result->vl_len = VARHDRSZ + strlen(password->password); - memcpy(result->vl_dat, password->password, strlen(password->password)); + slen = strlen(password->password); + result = (text *) palloc(VARHDRSZ + slen); + SET_VARSIZE(result, VARHDRSZ + slen); + memcpy(VARDATA(result), password->password, slen); PG_RETURN_TEXT_P(result); } @@ -145,11 +147,11 @@ chkpass_eq(PG_FUNCTION_ARGS) chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); text *a2 = (text *) PG_GETARG_TEXT_P(1); char str[10]; - int sz = 8; + int sz; - if (a2->vl_len < 12) - sz = a2->vl_len - 4; - strlcpy(str, a2->vl_dat, sz + 1); + sz = Min(VARSIZE(a2) - VARHDRSZ, 8); + memcpy(str, VARDATA(a2), sz); + str[sz] = '\0'; PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) == 0); } @@ -160,10 +162,10 @@ chkpass_ne(PG_FUNCTION_ARGS) chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); text *a2 = (text *) PG_GETARG_TEXT_P(1); char str[10]; - int sz = 8; + int sz; - if (a2->vl_len < 12) - sz = a2->vl_len - 4; - strlcpy(str, a2->vl_dat, sz + 1); + sz = Min(VARSIZE(a2) - VARHDRSZ, 8); + memcpy(str, VARDATA(a2), sz); + str[sz] = '\0'; PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) != 0); } diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c index 9d3b46648efa99443874e4ace81cd749ab568372..7406807044b8a85065d879138fbd2fb393e22e86 100644 --- a/contrib/cube/cube.c +++ b/contrib/cube/cube.c @@ -1,5 +1,5 @@ /****************************************************************************** - $PostgreSQL: pgsql/contrib/cube/cube.c,v 1.30 2006/10/04 00:29:44 momjian Exp $ + $PostgreSQL: pgsql/contrib/cube/cube.c,v 1.31 2007/02/27 23:48:05 tgl Exp $ This file contains routines that can be bound to a Postgres backend and called by the backend in the process of processing queries. The calling @@ -223,9 +223,8 @@ cube_a_f8_f8(PG_FUNCTION_ARGS) dll = ARRPTR(ll); size = offsetof(NDBOX, x[0]) + sizeof(double) * 2 * dim; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = dim; for (i = 0; i < dim; i++) @@ -264,9 +263,8 @@ cube_a_f8(PG_FUNCTION_ARGS) dur = ARRPTR(ur); size = offsetof(NDBOX, x[0]) + sizeof(double) * 2 * dim; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = dim; for (i = 0; i < dim; i++) @@ -303,9 +301,8 @@ cube_subset(PG_FUNCTION_ARGS) dim = ARRNELEMS(idx); size = offsetof(NDBOX, x[0]) + sizeof(double) * 2 * dim; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = dim; for (i = 0; i < dim; i++) @@ -432,7 +429,7 @@ g_cube_union(PG_FUNCTION_ARGS) /* * sizep = sizeof(NDBOX); -- NDBOX has variable size */ - *sizep = tmp->size; + *sizep = VARSIZE(tmp); for (i = 1; i < entryvec->n; i++) { @@ -744,7 +741,7 @@ g_cube_binary_union(NDBOX * r1, NDBOX * r2, int *sizep) NDBOX *retval; retval = cube_union_v0(r1, r2); - *sizep = retval->size; + *sizep = VARSIZE(retval); return (retval); } @@ -759,16 +756,14 @@ cube_union_v0(NDBOX * a, NDBOX * b) if (a->dim >= b->dim) { - result = palloc(a->size); - memset(result, 0, a->size); - result->size = a->size; + result = palloc0(VARSIZE(a)); + SET_VARSIZE(result, VARSIZE(a)); result->dim = a->dim; } else { - result = palloc(b->size); - memset(result, 0, b->size); - result->size = b->size; + result = palloc0(VARSIZE(b)); + SET_VARSIZE(result, VARSIZE(b)); result->dim = b->dim; } @@ -834,16 +829,14 @@ cube_inter(PG_FUNCTION_ARGS) if (a->dim >= b->dim) { - result = palloc(a->size); - memset(result, 0, a->size); - result->size = a->size; + result = palloc0(VARSIZE(a)); + SET_VARSIZE(result, VARSIZE(a)); result->dim = a->dim; } else { - result = palloc(b->size); - memset(result, 0, b->size); - result->size = b->size; + result = palloc0(VARSIZE(b)); + SET_VARSIZE(result, VARSIZE(b)); result->dim = b->dim; } @@ -1371,9 +1364,8 @@ cube_enlarge(PG_FUNCTION_ARGS) if (a->dim > dim) dim = a->dim; size = offsetof(NDBOX, x[0]) + sizeof(double) * dim * 2; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = dim; for (i = 0, j = dim, k = a->dim; i < a->dim; i++, j++, k++) { @@ -1411,9 +1403,8 @@ cube_f8(PG_FUNCTION_ARGS) int size; size = offsetof(NDBOX, x[0]) + sizeof(double) * 2; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = 1; result->x[0] = PG_GETARG_FLOAT8(0); result->x[1] = result->x[0]; @@ -1429,9 +1420,8 @@ cube_f8_f8(PG_FUNCTION_ARGS) int size; size = offsetof(NDBOX, x[0]) + sizeof(double) * 2; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = 1; result->x[0] = PG_GETARG_FLOAT8(0); result->x[1] = PG_GETARG_FLOAT8(1); @@ -1454,9 +1444,8 @@ cube_c_f8(PG_FUNCTION_ARGS) x = PG_GETARG_FLOAT8(1); size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) *2; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = c->dim + 1; for (i = 0; i < c->dim; i++) { @@ -1485,9 +1474,8 @@ cube_c_f8_f8(PG_FUNCTION_ARGS) x2 = PG_GETARG_FLOAT8(2); size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) *2; - result = (NDBOX *) palloc(size); - memset(result, 0, size); - result->size = size; + result = (NDBOX *) palloc0(size); + SET_VARSIZE(result, size); result->dim = c->dim + 1; for (i = 0; i < c->dim; i++) { diff --git a/contrib/cube/cubedata.h b/contrib/cube/cubedata.h index f4f2238aac74fa2b9ceaefc4212378d05f0ad500..9eaf97be3b47b9b3b379fe5f261a049c07a13d41 100644 --- a/contrib/cube/cubedata.h +++ b/contrib/cube/cubedata.h @@ -1,9 +1,10 @@ -/* $PostgreSQL: pgsql/contrib/cube/cubedata.h,v 1.7 2006/03/11 04:38:28 momjian Exp $ */ +/* $PostgreSQL: pgsql/contrib/cube/cubedata.h,v 1.8 2007/02/27 23:48:05 tgl Exp $ */ #define CUBE_MAX_DIM (100) + typedef struct NDBOX { - unsigned int size; /* required to be a Postgres varlena type */ + int32 vl_len_; /* varlena header (do not touch directly!) */ unsigned int dim; double x[1]; } NDBOX; diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y index 1211f131eed6c09bc9e6d7a8d565bd9765c5e81d..e867dc8731a8389779c1025a9ddcb867a85a3867 100644 --- a/contrib/cube/cubeparse.y +++ b/contrib/cube/cubeparse.y @@ -2,7 +2,7 @@ /* NdBox = [(lowerleft),(upperright)] */ /* [(xLL(1)...xLL(N)),(xUR(1)...xUR(n))] */ -/* $PostgreSQL: pgsql/contrib/cube/cubeparse.y,v 1.16 2006/03/11 04:38:28 momjian Exp $ */ +/* $PostgreSQL: pgsql/contrib/cube/cubeparse.y,v 1.17 2007/02/27 23:48:05 tgl Exp $ */ #define YYPARSE_PARAM result /* need this to pass a pointer (void *) to yyparse */ #define YYSTYPE char * @@ -165,9 +165,8 @@ write_box(unsigned int dim, char *str1, char *str2) int i; int size = offsetof(NDBOX, x[0]) + sizeof(double) * dim * 2; - bp = palloc(size); - memset(bp, 0, size); - bp->size = size; + bp = palloc0(size); + SET_VARSIZE(bp, size); bp->dim = dim; s = str1; @@ -198,9 +197,8 @@ write_point_as_box(char *str, int dim) size = offsetof(NDBOX, x[0]) + sizeof(double) * dim * 2; - bp = palloc(size); - memset(bp, 0, size); - bp->size = size; + bp = palloc0(size); + SET_VARSIZE(bp, size); bp->dim = dim; i = 0; diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c index d9140518dbccbb4e382996060820e08ea90dc620..acd9d0c62925307e0547a899684b2eb4940cac88 100644 --- a/contrib/fuzzystrmatch/dmetaphone.c +++ b/contrib/fuzzystrmatch/dmetaphone.c @@ -1,7 +1,7 @@ /* * This is a port of the Double Metaphone algorithm for use in PostgreSQL. * - * $PostgreSQL: pgsql/contrib/fuzzystrmatch/dmetaphone.c,v 1.10 2006/09/22 21:39:56 tgl Exp $ + * $PostgreSQL: pgsql/contrib/fuzzystrmatch/dmetaphone.c,v 1.11 2007/02/27 23:48:05 tgl Exp $ * * Double Metaphone computes 2 "sounds like" strings - a primary and an * alternate. In most cases they are the same, but for foreign names @@ -165,10 +165,9 @@ dmetaphone(PG_FUNCTION_ARGS) code = ""; rsize = VARHDRSZ + strlen(code); result = (text *) palloc(rsize); - memset(result, 0, rsize); rptr = VARDATA(result); - memcpy(rptr, code, strlen(code)); - VARATT_SIZEP(result) = rsize; + memcpy(rptr, code, rsize - VARHDRSZ); + SET_VARSIZE(result, rsize); PG_RETURN_TEXT_P(result); } @@ -206,10 +205,9 @@ dmetaphone_alt(PG_FUNCTION_ARGS) code = ""; rsize = VARHDRSZ + strlen(code); result = (text *) palloc(rsize); - memset(result, 0, rsize); rptr = VARDATA(result); - memcpy(rptr, code, strlen(code)); - VARATT_SIZEP(result) = rsize; + memcpy(rptr, code, rsize - VARHDRSZ); + SET_VARSIZE(result, rsize); PG_RETURN_TEXT_P(result); } diff --git a/contrib/hstore/hstore_op.c b/contrib/hstore/hstore_op.c index 915436c3d1a1e2331058aa228ab45306966f93c8..f16a58988e1e3a1b90402f8ea4731bd8ed04fb33 100644 --- a/contrib/hstore/hstore_op.c +++ b/contrib/hstore/hstore_op.c @@ -54,7 +54,7 @@ fetchval(PG_FUNCTION_ARGS) out = palloc(VARHDRSZ + entry->vallen); memcpy(VARDATA(out), STRPTR(hs) + entry->pos + entry->keylen, entry->vallen); - VARATT_SIZEP(out) = VARHDRSZ + entry->vallen; + SET_VARSIZE(out, VARHDRSZ + entry->vallen); PG_FREE_IF_COPY(hs, 0); PG_FREE_IF_COPY(key, 1); @@ -310,7 +310,7 @@ akeys(PG_FUNCTION_ARGS) { text *item = (text *) palloc(VARHDRSZ + ptr->keylen); - VARATT_SIZEP(item) = VARHDRSZ + ptr->keylen; + SET_VARSIZE(item, VARHDRSZ + ptr->keylen); memcpy(VARDATA(item), base + ptr->pos, ptr->keylen); d[ptr - ARRPTR(hs)] = PointerGetDatum(item); ptr++; @@ -355,7 +355,7 @@ avals(PG_FUNCTION_ARGS) int vallen = (ptr->valisnull) ? 0 : ptr->vallen; text *item = (text *) palloc(VARHDRSZ + vallen); - VARATT_SIZEP(item) = VARHDRSZ + vallen; + SET_VARSIZE(item, VARHDRSZ + vallen); memcpy(VARDATA(item), base + ptr->pos + ptr->keylen, vallen); d[ptr - ARRPTR(hs)] = PointerGetDatum(item); ptr++; @@ -431,7 +431,7 @@ skeys(PG_FUNCTION_ARGS) HEntry *ptr = &(ARRPTR(st->hs)[st->i]); text *item = (text *) palloc(VARHDRSZ + ptr->keylen); - VARATT_SIZEP(item) = VARHDRSZ + ptr->keylen; + SET_VARSIZE(item, VARHDRSZ + ptr->keylen); memcpy(VARDATA(item), STRPTR(st->hs) + ptr->pos, ptr->keylen); st->i++; @@ -483,7 +483,7 @@ svals(PG_FUNCTION_ARGS) int vallen = ptr->vallen; text *item = (text *) palloc(VARHDRSZ + vallen); - VARATT_SIZEP(item) = VARHDRSZ + vallen; + SET_VARSIZE(item, VARHDRSZ + vallen); memcpy(VARDATA(item), STRPTR(st->hs) + ptr->pos + ptr->keylen, vallen); st->i++; @@ -593,7 +593,7 @@ each(PG_FUNCTION_ARGS) HeapTuple tuple; item = (text *) palloc(VARHDRSZ + ptr->keylen); - VARATT_SIZEP(item) = VARHDRSZ + ptr->keylen; + SET_VARSIZE(item, VARHDRSZ + ptr->keylen); memcpy(VARDATA(item), STRPTR(st->hs) + ptr->pos, ptr->keylen); dvalues[0] = PointerGetDatum(item); @@ -607,7 +607,7 @@ each(PG_FUNCTION_ARGS) int vallen = ptr->vallen; item = (text *) palloc(VARHDRSZ + vallen); - VARATT_SIZEP(item) = VARHDRSZ + vallen; + SET_VARSIZE(item, VARHDRSZ + vallen); memcpy(VARDATA(item), STRPTR(st->hs) + ptr->pos + ptr->keylen, vallen); dvalues[1] = PointerGetDatum(item); } diff --git a/contrib/intagg/int_aggregate.c b/contrib/intagg/int_aggregate.c index 6567f7f02694fcb3afb257c64ccbb7df4f497017..8edae1febedd36c1fe221eeac44019d4bf6967fa 100644 --- a/contrib/intagg/int_aggregate.c +++ b/contrib/intagg/int_aggregate.c @@ -5,7 +5,7 @@ * DMN Digital Music Network. * www.dmn.com * - * $PostgreSQL: pgsql/contrib/intagg/int_aggregate.c,v 1.25 2006/07/11 17:04:12 momjian Exp $ + * $PostgreSQL: pgsql/contrib/intagg/int_aggregate.c,v 1.26 2007/02/27 23:48:06 tgl Exp $ * * Copyright (C) Digital Music Network * December 20, 2001 @@ -88,7 +88,7 @@ GetPGArray(PGARRAY * p, AggState *aggstate, bool fAdd) int cb = PGARRAY_SIZE(START_NUM); p = (PGARRAY *) MemoryContextAlloc(aggstate->aggcontext, cb); - p->a.size = cb; + SET_VARSIZE(p, cb); p->a.ndim = 1; p->a.dataoffset = 0; /* we don't support nulls, for now */ p->a.elemtype = INT4OID; @@ -105,8 +105,8 @@ GetPGArray(PGARRAY * p, AggState *aggstate, bool fAdd) int cbNew = PGARRAY_SIZE(n); pn = (PGARRAY *) MemoryContextAlloc(aggstate->aggcontext, cbNew); - memcpy(pn, p, p->a.size); - pn->a.size = cbNew; + memcpy(pn, p, VARSIZE(p)); + SET_VARSIZE(pn, cbNew); pn->lower = n; /* do not pfree(p), because nodeAgg.c will */ p = pn; @@ -132,7 +132,7 @@ ShrinkPGArray(PGARRAY * p) memcpy(pnew, p, cb); /* fix up the fields in the new array to match normal conventions */ - pnew->a.size = cb; + SET_VARSIZE(pnew, cb); pnew->lower = 1; /* do not pfree(p), because nodeAgg.c will */ diff --git a/contrib/intarray/_int_bool.c b/contrib/intarray/_int_bool.c index 23ee8f1dada416d790e82cb15b53e40f6f12d30f..b6a5d1b1e8984d82b37f1665b64cbed765747948 100644 --- a/contrib/intarray/_int_bool.c +++ b/contrib/intarray/_int_bool.c @@ -766,7 +766,7 @@ querytree(PG_FUNCTION_ARGS) if (len == 0) { res = (text *) palloc(1 + VARHDRSZ); - VARATT_SIZEP(res) = 1 + VARHDRSZ; + SET_VARSIZE(res, 1 + VARHDRSZ); *((char *) VARDATA(res)) = 'T'; } else @@ -778,7 +778,7 @@ querytree(PG_FUNCTION_ARGS) infix(&nrm, true); res = (text *) palloc(nrm.cur - nrm.buf + VARHDRSZ); - VARATT_SIZEP(res) = nrm.cur - nrm.buf + VARHDRSZ; + SET_VARSIZE(res, nrm.cur - nrm.buf + VARHDRSZ); memcpy(VARDATA(res), nrm.buf, nrm.cur - nrm.buf); } pfree(q); diff --git a/contrib/intarray/_int_tool.c b/contrib/intarray/_int_tool.c index 2ad0ef0cc04ebf3da23cc8feb297390a2c137b19..fead4ff30dcea82195823fa2c7ded8ed5521a64f 100644 --- a/contrib/intarray/_int_tool.c +++ b/contrib/intarray/_int_tool.c @@ -226,7 +226,7 @@ new_intArrayType(int num) r = (ArrayType *) palloc0(nbytes); - ARR_SIZE(r) = nbytes; + SET_VARSIZE(r, nbytes); ARR_NDIM(r) = NDIM; r->dataoffset = 0; /* marker for no null bitmap */ ARR_ELEMTYPE(r) = INT4OID; @@ -246,7 +246,7 @@ resize_intArrayType(ArrayType *a, int num) a = (ArrayType *) repalloc(a, nbytes); - a->size = nbytes; + SET_VARSIZE(a, nbytes); *((int *) ARR_DIMS(a)) = num; return a; } diff --git a/contrib/ltree/ltree_op.c b/contrib/ltree/ltree_op.c index 9b8a360ca897e2d56490009f5d6de860fd381727..5f80394a713c566fe63bc8053cfcc38a11966251 100644 --- a/contrib/ltree/ltree_op.c +++ b/contrib/ltree/ltree_op.c @@ -1,7 +1,7 @@ /* * op function for ltree * Teodor Sigaev <teodor@stack.net> - * $PostgreSQL: pgsql/contrib/ltree/ltree_op.c,v 1.14 2006/10/04 00:29:45 momjian Exp $ + * $PostgreSQL: pgsql/contrib/ltree/ltree_op.c,v 1.15 2007/02/27 23:48:06 tgl Exp $ */ #include "ltree.h" @@ -557,7 +557,7 @@ ltree2text(PG_FUNCTION_ARGS) curlevel = LEVEL_NEXT(curlevel); } - VARATT_SIZEP(out) = VARHDRSZ + (ptr - VARDATA(out)); + SET_VARSIZE(out, ptr - ((char *) out)); PG_FREE_IF_COPY(in, 0); PG_RETURN_POINTER(out); diff --git a/contrib/pg_trgm/trgm_op.c b/contrib/pg_trgm/trgm_op.c index f31b9bf572aa767ccc58c0e28c6980d1a9eb994d..e247756a39996c136fa9a1ac3628909d5a7e35a2 100644 --- a/contrib/pg_trgm/trgm_op.c +++ b/contrib/pg_trgm/trgm_op.c @@ -203,7 +203,7 @@ show_trgm(PG_FUNCTION_ARGS) { text *item = (text *) palloc(VARHDRSZ + 3); - VARATT_SIZEP(item) = VARHDRSZ + 3; + SET_VARSIZE(item, VARHDRSZ + 3); CPTRGM(VARDATA(item), ptr); d[ptr - GETARR(trg)] = PointerGetDatum(item); ptr++; diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c index 054ba4404bb4121d39326d1bc30b7d807376d0a8..6e2963ff2477b6d6f49e2407f2a67747488721f7 100644 --- a/contrib/pgcrypto/pgcrypto.c +++ b/contrib/pgcrypto/pgcrypto.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.c,v 1.25 2006/11/10 06:28:29 neilc Exp $ + * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.c,v 1.26 2007/02/27 23:48:06 tgl Exp $ */ #include "postgres.h" @@ -68,7 +68,7 @@ pg_digest(PG_FUNCTION_ARGS) hlen = px_md_result_size(md); res = (text *) palloc(hlen + VARHDRSZ); - VARATT_SIZEP(res) = hlen + VARHDRSZ; + SET_VARSIZE(res, hlen + VARHDRSZ); arg = PG_GETARG_BYTEA_P(0); len = VARSIZE(arg) - VARHDRSZ; @@ -106,7 +106,7 @@ pg_hmac(PG_FUNCTION_ARGS) hlen = px_hmac_result_size(h); res = (text *) palloc(hlen + VARHDRSZ); - VARATT_SIZEP(res) = hlen + VARHDRSZ; + SET_VARSIZE(res, hlen + VARHDRSZ); arg = PG_GETARG_BYTEA_P(0); key = PG_GETARG_BYTEA_P(1); @@ -150,7 +150,7 @@ pg_gen_salt(PG_FUNCTION_ARGS) errmsg("gen_salt: %s", px_strerror(len)))); res = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(res) = len + VARHDRSZ; + SET_VARSIZE(res, len + VARHDRSZ); memcpy(VARDATA(res), buf, len); PG_FREE_IF_COPY(arg0, 0); @@ -184,7 +184,7 @@ pg_gen_salt_rounds(PG_FUNCTION_ARGS) errmsg("gen_salt: %s", px_strerror(len)))); res = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(res) = len + VARHDRSZ; + SET_VARSIZE(res, len + VARHDRSZ); memcpy(VARDATA(res), buf, len); PG_FREE_IF_COPY(arg0, 0); @@ -238,7 +238,7 @@ pg_crypt(PG_FUNCTION_ARGS) clen = strlen(cres); res = (text *) palloc(clen + VARHDRSZ); - VARATT_SIZEP(res) = clen + VARHDRSZ; + SET_VARSIZE(res, clen + VARHDRSZ); memcpy(VARDATA(res), cres, clen); pfree(resbuf); @@ -293,7 +293,7 @@ pg_encrypt(PG_FUNCTION_ARGS) errmsg("encrypt error: %s", px_strerror(err)))); } - VARATT_SIZEP(res) = VARHDRSZ + rlen; + SET_VARSIZE(res, VARHDRSZ + rlen); PG_RETURN_BYTEA_P(res); } @@ -336,7 +336,7 @@ pg_decrypt(PG_FUNCTION_ARGS) (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("decrypt error: %s", px_strerror(err)))); - VARATT_SIZEP(res) = VARHDRSZ + rlen; + SET_VARSIZE(res, VARHDRSZ + rlen); PG_FREE_IF_COPY(data, 0); PG_FREE_IF_COPY(key, 1); @@ -389,7 +389,7 @@ pg_encrypt_iv(PG_FUNCTION_ARGS) (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("encrypt_iv error: %s", px_strerror(err)))); - VARATT_SIZEP(res) = VARHDRSZ + rlen; + SET_VARSIZE(res, VARHDRSZ + rlen); PG_FREE_IF_COPY(data, 0); PG_FREE_IF_COPY(key, 1); @@ -443,7 +443,7 @@ pg_decrypt_iv(PG_FUNCTION_ARGS) (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("decrypt_iv error: %s", px_strerror(err)))); - VARATT_SIZEP(res) = VARHDRSZ + rlen; + SET_VARSIZE(res, VARHDRSZ + rlen); PG_FREE_IF_COPY(data, 0); PG_FREE_IF_COPY(key, 1); @@ -469,7 +469,7 @@ pg_random_bytes(PG_FUNCTION_ARGS) errmsg("Length not in range"))); res = palloc(VARHDRSZ + len); - VARATT_SIZEP(res) = VARHDRSZ + len; + SET_VARSIZE(res, VARHDRSZ + len); /* generate result */ err = px_get_random_bytes((uint8 *) VARDATA(res), len); diff --git a/contrib/pgcrypto/pgp-pgsql.c b/contrib/pgcrypto/pgp-pgsql.c index 3483274e501a229084995d2004366d270e22a002..9f38c621c932b7c8eaf605cde586dbe67aa2c595 100644 --- a/contrib/pgcrypto/pgp-pgsql.c +++ b/contrib/pgcrypto/pgp-pgsql.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-pgsql.c,v 1.8 2006/11/10 06:28:29 neilc Exp $ + * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-pgsql.c,v 1.9 2007/02/27 23:48:06 tgl Exp $ */ #include "postgres.h" @@ -152,7 +152,7 @@ convert_charset(text *src, int cset_from, int cset_to) dst_len = strlen((char *) dst); res = palloc(dst_len + VARHDRSZ); memcpy(VARDATA(res), dst, dst_len); - VARATT_SIZEP(res) = VARHDRSZ + dst_len; + SET_VARSIZE(res, dst_len + VARHDRSZ); pfree(dst); return res; } @@ -514,7 +514,7 @@ encrypt_internal(int is_pubenc, int is_text, /* res_len includes VARHDRSZ */ res_len = mbuf_steal_data(dst, &restmp); res = (bytea *) restmp; - VARATT_SIZEP(res) = res_len; + SET_VARSIZE(res, res_len); if (tmp_data) clear_and_pfree(tmp_data); @@ -615,7 +615,7 @@ out: /* res_len includes VARHDRSZ */ res = (bytea *) restmp; - VARATT_SIZEP(res) = res_len; + SET_VARSIZE(res, res_len); if (need_text && got_unicode) { @@ -858,7 +858,7 @@ pg_armor(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("Overflow - encode estimate too small"))); - VARATT_SIZEP(res) = VARHDRSZ + res_len; + SET_VARSIZE(res, VARHDRSZ + res_len); PG_FREE_IF_COPY(data, 0); PG_RETURN_TEXT_P(res); @@ -889,7 +889,7 @@ pg_dearmor(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("Overflow - decode estimate too small"))); - VARATT_SIZEP(res) = VARHDRSZ + res_len; + SET_VARSIZE(res, VARHDRSZ + res_len); PG_FREE_IF_COPY(data, 0); PG_RETURN_TEXT_P(res); @@ -917,7 +917,7 @@ pgp_key_id_w(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("%s", px_strerror(res_len)))); - VARATT_SIZEP(res) = VARHDRSZ + res_len; + SET_VARSIZE(res, VARHDRSZ + res_len); PG_FREE_IF_COPY(data, 0); PG_RETURN_TEXT_P(res); diff --git a/contrib/sslinfo/sslinfo.c b/contrib/sslinfo/sslinfo.c index 16eea5eae3330d76a932d183dceb588cc625e789..7236203d7d81894595216d71af167e19e981ea93 100644 --- a/contrib/sslinfo/sslinfo.c +++ b/contrib/sslinfo/sslinfo.c @@ -4,7 +4,7 @@ * Written by Victor B. Wagner <vitus@cryptocom.ru>, Cryptocom LTD * This file is distributed under BSD-style license. * - * $PostgreSQL: pgsql/contrib/sslinfo/sslinfo.c,v 1.5 2006/10/04 00:29:46 momjian Exp $ + * $PostgreSQL: pgsql/contrib/sslinfo/sslinfo.c,v 1.6 2007/02/27 23:48:06 tgl Exp $ */ #include "postgres.h" @@ -136,11 +136,12 @@ ASN1_STRING_to_text(ASN1_STRING *str) outlen = strlen(dp); result = palloc(VARHDRSZ + outlen); memcpy(VARDATA(result), dp, outlen); + SET_VARSIZE(result, VARHDRSZ + outlen); + if (dp != sp) pfree(dp); - BIO_free(membuf); - VARATT_SIZEP(result) = outlen + VARHDRSZ; + PG_RETURN_TEXT_P(result); } @@ -312,9 +313,11 @@ X509_NAME_to_text(X509_NAME *name) PG_UTF8, GetDatabaseEncoding()); BIO_free(membuf); + outlen = strlen(dp); result = palloc(VARHDRSZ + outlen); memcpy(VARDATA(result), dp, outlen); + SET_VARSIZE(result, VARHDRSZ + outlen); /* * pg_do_encoding_conversion has annoying habit of returning source @@ -322,7 +325,7 @@ X509_NAME_to_text(X509_NAME *name) */ if (dp != sp) pfree(dp); - VARATT_SIZEP(result) = outlen + VARHDRSZ; + PG_RETURN_TEXT_P(result); } diff --git a/contrib/tsearch2/common.c b/contrib/tsearch2/common.c index 3ff3fad1bf2514bfd0b98f2d76a438c24ec9870c..983399a438cdbc176e93a7f0e09eebcfe09b6fe1 100644 --- a/contrib/tsearch2/common.c +++ b/contrib/tsearch2/common.c @@ -36,7 +36,7 @@ charl2text(char *in, int len) text *out = (text *) palloc(len + VARHDRSZ); memcpy(VARDATA(out), in, len); - VARATT_SIZEP(out) = len + VARHDRSZ; + SET_VARSIZE(out, len + VARHDRSZ); return out; } diff --git a/contrib/tsearch2/ginidx.c b/contrib/tsearch2/ginidx.c index 01766923c1ce74ec42538d5af904a14580ac0181..d77ee9bb9f73b2e719b2def23abea90690f38698 100644 --- a/contrib/tsearch2/ginidx.c +++ b/contrib/tsearch2/ginidx.c @@ -37,7 +37,7 @@ gin_extract_tsvector(PG_FUNCTION_ARGS) { text *txt = (text *) palloc(VARHDRSZ + we->len); - VARATT_SIZEP(txt) = VARHDRSZ + we->len; + SET_VARSIZE(txt, VARHDRSZ + we->len); memcpy(VARDATA(txt), STRPTR(vector) + we->pos, we->len); entries[i] = PointerGetDatum(txt); @@ -89,7 +89,7 @@ gin_extract_tsquery(PG_FUNCTION_ARGS) txt = (text *) palloc(VARHDRSZ + item[i].length); - VARATT_SIZEP(txt) = VARHDRSZ + item[i].length; + SET_VARSIZE(txt, VARHDRSZ + item[i].length); memcpy(VARDATA(txt), GETOPERAND(query) + item[i].distance, item[i].length); entries[j++] = PointerGetDatum(txt); diff --git a/contrib/tsearch2/query.c b/contrib/tsearch2/query.c index ea8790df25b5ec85d74dcd210799e73959fb255d..eb2d30e15921f5d11a225be5181dc69635d779da 100644 --- a/contrib/tsearch2/query.c +++ b/contrib/tsearch2/query.c @@ -907,7 +907,7 @@ tsquerytree(PG_FUNCTION_ARGS) if (query->size == 0) { res = (text *) palloc(VARHDRSZ); - VARATT_SIZEP(res) = VARHDRSZ; + SET_VARSIZE(res, VARHDRSZ); PG_RETURN_POINTER(res); } @@ -916,7 +916,7 @@ tsquerytree(PG_FUNCTION_ARGS) if (!q) { res = (text *) palloc(1 + VARHDRSZ); - VARATT_SIZEP(res) = 1 + VARHDRSZ; + SET_VARSIZE(res, 1 + VARHDRSZ); *((char *) VARDATA(res)) = 'T'; } else @@ -929,7 +929,7 @@ tsquerytree(PG_FUNCTION_ARGS) infix(&nrm, true); res = (text *) palloc(nrm.cur - nrm.buf + VARHDRSZ); - VARATT_SIZEP(res) = nrm.cur - nrm.buf + VARHDRSZ; + SET_VARSIZE(res, nrm.cur - nrm.buf + VARHDRSZ); memcpy(VARDATA(res), nrm.buf, nrm.cur - nrm.buf); pfree(q); } diff --git a/contrib/tsearch2/rank.c b/contrib/tsearch2/rank.c index 36fc2594009795b798b5aef671c8afa75fd7cdbd..b6960c3bf3e232844ea973e82f7363be86d0e3b2 100644 --- a/contrib/tsearch2/rank.c +++ b/contrib/tsearch2/rank.c @@ -839,7 +839,7 @@ get_covers(PG_FUNCTION_ARGS) if (!doc) { out = palloc(VARHDRSZ); - VARATT_SIZEP(out) = VARHDRSZ; + SET_VARSIZE(out, VARHDRSZ); PG_FREE_IF_COPY(txt, 0); PG_FREE_IF_COPY(query, 1); PG_RETURN_POINTER(out); @@ -910,7 +910,7 @@ get_covers(PG_FUNCTION_ARGS) dwptr++; } - VARATT_SIZEP(out) = cptr - ((char *) out); + SET_VARSIZE(out, cptr - ((char *) out)); pfree(dw); for (i = 0; i < rlen; i++) diff --git a/contrib/tsearch2/ts_cfg.c b/contrib/tsearch2/ts_cfg.c index 0526ce9879c29a9cce355dc4627f47cc9b55e2e9..d62d49a249919374e7b9e28c76ef398b55833fac 100644 --- a/contrib/tsearch2/ts_cfg.c +++ b/contrib/tsearch2/ts_cfg.c @@ -555,7 +555,7 @@ genhl(HLPRSTEXT * prs) wrd++; } - VARATT_SIZEP(out) = ptr - ((char *) out); + SET_VARSIZE(out, ptr - ((char *) out)); return out; } diff --git a/contrib/tsearch2/ts_stat.c b/contrib/tsearch2/ts_stat.c index 17d1ccb050558cb7a50e5517f06214b9ceab8ffb..d728dd5796053e63d91f9213ade406fe8e5cd2f4 100644 --- a/contrib/tsearch2/ts_stat.c +++ b/contrib/tsearch2/ts_stat.c @@ -17,7 +17,7 @@ tsstat_in(PG_FUNCTION_ARGS) { tsstat *stat = palloc(STATHDRSIZE); - stat->len = STATHDRSIZE; + SET_VARSIZE(stat, STATHDRSIZE); stat->size = 0; stat->weight = 0; PG_RETURN_POINTER(stat); @@ -100,7 +100,7 @@ formstat(tsstat * stat, tsvector * txt, WordEntry ** entry, uint32 len) slen += STATSTRSIZE(stat); totallen = CALCSTATSIZE(nentry, slen); newstat = palloc(totallen); - newstat->len = totallen; + SET_VARSIZE(newstat, totallen); newstat->weight = stat->weight; newstat->size = nentry; @@ -200,7 +200,7 @@ ts_accum(PG_FUNCTION_ARGS) if (stat == NULL || PG_ARGISNULL(0)) { /* Init in first */ stat = palloc(STATHDRSIZE); - stat->len = STATHDRSIZE; + SET_VARSIZE(stat, STATHDRSIZE); stat->size = 0; stat->weight = 0; } @@ -341,8 +341,8 @@ ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx, oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); st = palloc(sizeof(StatStorage)); st->cur = 0; - st->stat = palloc(stat->len); - memcpy(st->stat, stat, stat->len); + st->stat = palloc(VARSIZE(stat)); + memcpy(st->stat, stat, VARSIZE(stat)); funcctx->user_fctx = (void *) st; if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) elog(ERROR, "return type must be a row type"); @@ -466,7 +466,7 @@ ts_stat_sql(text *txt, text *ws) elog(ERROR, "column isn't of tsvector type"); stat = palloc(STATHDRSIZE); - stat->len = STATHDRSIZE; + SET_VARSIZE(stat, STATHDRSIZE); stat->size = 0; stat->weight = 0; diff --git a/contrib/tsearch2/ts_stat.h b/contrib/tsearch2/ts_stat.h index 358b68c808de010be3b819205e80141ea1e6fe57..e1ba14b99bcb5feb2c20ad140f0f47de3fd152d9 100644 --- a/contrib/tsearch2/ts_stat.h +++ b/contrib/tsearch2/ts_stat.h @@ -19,7 +19,7 @@ typedef struct typedef struct { - int4 len; + int32 vl_len_; /* varlena header (do not touch directly!) */ int4 size; int4 weight; char data[1]; @@ -29,6 +29,6 @@ typedef struct #define CALCSTATSIZE(x, lenstr) ( (x) * sizeof(StatEntry) + STATHDRSIZE + (lenstr) ) #define STATPTR(x) ( (StatEntry*) ( (char*)(x) + STATHDRSIZE ) ) #define STATSTRPTR(x) ( (char*)(x) + STATHDRSIZE + ( sizeof(StatEntry) * ((tsvector*)(x))->size ) ) -#define STATSTRSIZE(x) ( ((tsvector*)(x))->len - STATHDRSIZE - ( sizeof(StatEntry) * ((tsvector*)(x))->size ) ) +#define STATSTRSIZE(x) ( VARSIZE((tsvector*)(x)) - STATHDRSIZE - ( sizeof(StatEntry) * ((tsvector*)(x))->size ) ) #endif diff --git a/contrib/tsearch2/tsvector.c b/contrib/tsearch2/tsvector.c index f4e83ec14962dc04c8e99fcfd4475e194248b5d8..dfbdacd345b5b9a008cf437c30693afd908d9ed7 100644 --- a/contrib/tsearch2/tsvector.c +++ b/contrib/tsearch2/tsvector.c @@ -476,9 +476,8 @@ tsvector_in(PG_FUNCTION_ARGS) else buflen = 0; totallen = CALCDATASIZE(len, buflen); - in = (tsvector *) palloc(totallen); - memset(in, 0, totallen); - in->len = totallen; + in = (tsvector *) palloc0(totallen); + SET_VARSIZE(in, totallen); in->size = len; cur = STRPTR(in); inarr = ARRPTR(in); @@ -699,9 +698,8 @@ makevalue(PRSTEXT * prs) } totallen = CALCDATASIZE(prs->curwords, lenstr); - in = (tsvector *) palloc(totallen); - memset(in, 0, totallen); - in->len = totallen; + in = (tsvector *) palloc0(totallen); + SET_VARSIZE(in, totallen); in->size = prs->curwords; ptr = ARRPTR(in); @@ -746,7 +744,7 @@ to_tsvector(PG_FUNCTION_ARGS) { text *in = PG_GETARG_TEXT_P(1); PRSTEXT prs; - tsvector *out = NULL; + tsvector *out; TSCfgInfo *cfg; SET_FUNCOID(); @@ -766,7 +764,7 @@ to_tsvector(PG_FUNCTION_ARGS) { pfree(prs.words); out = palloc(CALCDATASIZE(0, 0)); - out->len = CALCDATASIZE(0, 0); + SET_VARSIZE(out, CALCDATASIZE(0, 0)); out->size = 0; } PG_RETURN_POINTER(out); @@ -957,7 +955,7 @@ tsearch2(PG_FUNCTION_ARGS) { tsvector *out = palloc(CALCDATASIZE(0, 0)); - out->len = CALCDATASIZE(0, 0); + SET_VARSIZE(out, CALCDATASIZE(0, 0)); out->size = 0; datum = PointerGetDatum(out); pfree(prs.words); @@ -975,9 +973,9 @@ tsearch2(PG_FUNCTION_ARGS) static int silly_cmp_tsvector(const tsvector * a, const tsvector * b) { - if (a->len < b->len) + if (VARSIZE(a) < VARSIZE(b)) return -1; - else if (a->len > b->len) + else if (VARSIZE(a) > VARSIZE(b)) return 1; else if (a->size < b->size) return -1; diff --git a/contrib/tsearch2/tsvector.h b/contrib/tsearch2/tsvector.h index 48bae42de0de7d87007fa593caa8565783225821..e006a1dcbdfdc5b44dc5405e8a9967cc22e77815 100644 --- a/contrib/tsearch2/tsvector.h +++ b/contrib/tsearch2/tsvector.h @@ -49,7 +49,7 @@ typedef uint16 WordEntryPos; /* * Structure of tsvector datatype: - * 1) int4 len - varlena's length + * 1) standard varlena header * 2) int4 size - number of lexemes or WordEntry array, which is the same * 3) Array of WordEntry - sorted array, comparison based on word's length * and strncmp(). WordEntry->pos points number of @@ -63,12 +63,12 @@ typedef uint16 WordEntryPos; typedef struct { - int4 len; + int32 vl_len_; /* varlena header (do not touch directly!) */ int4 size; char data[1]; } tsvector; -#define DATAHDRSIZE (sizeof(int4) * 2) +#define DATAHDRSIZE (VARHDRSZ + sizeof(int4)) #define CALCDATASIZE(x, lenstr) ( (x) * sizeof(WordEntry) + DATAHDRSIZE + (lenstr) ) #define ARRPTR(x) ( (WordEntry*) ( (char*)(x) + DATAHDRSIZE ) ) #define STRPTR(x) ( (char*)(x) + DATAHDRSIZE + ( sizeof(WordEntry) * ((tsvector*)(x))->size ) ) diff --git a/contrib/tsearch2/tsvector_op.c b/contrib/tsearch2/tsvector_op.c index 7d4113edff3eb1849fd9740f8c7611bfeb0d6f96..e8d8e16db4166b9476a897c9d703d6ece0d29977 100644 --- a/contrib/tsearch2/tsvector_op.c +++ b/contrib/tsearch2/tsvector_op.c @@ -44,9 +44,8 @@ strip(PG_FUNCTION_ARGS) len += SHORTALIGN(arrin[i].len); len = CALCDATASIZE(in->size, len); - out = (tsvector *) palloc(len); - memset(out, 0, len); - out->len = len; + out = (tsvector *) palloc0(len); + SET_VARSIZE(out, len); out->size = in->size; arrout = ARRPTR(out); cur = STRPTR(out); @@ -98,8 +97,8 @@ setweight(PG_FUNCTION_ARGS) elog(ERROR, "unrecognized weight"); } - out = (tsvector *) palloc(in->len); - memcpy(out, in, in->len); + out = (tsvector *) palloc(VARSIZE(in)); + memcpy(out, in, VARSIZE(in)); entry = ARRPTR(out); i = out->size; while (i--) @@ -203,9 +202,8 @@ concat(PG_FUNCTION_ARGS) data2 = STRPTR(in2); i1 = in1->size; i2 = in2->size; - out = (tsvector *) palloc(in1->len + in2->len); - memset(out, 0, in1->len + in2->len); - out->len = in1->len + in2->len; + out = (tsvector *) palloc0(VARSIZE(in1) + VARSIZE(in2)); + SET_VARSIZE(out, VARSIZE(in1) + VARSIZE(in2)); out->size = in1->size + in2->size; data = cur = STRPTR(out); ptr = ARRPTR(out); @@ -322,7 +320,7 @@ concat(PG_FUNCTION_ARGS) } out->size = ptr - ARRPTR(out); - out->len = CALCDATASIZE(out->size, cur - data); + SET_VARSIZE(out, CALCDATASIZE(out->size, cur - data)); if (data != STRPTR(out)) memmove(STRPTR(out), data, cur - data); diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c index 11349eff0b01efaab496c25c345c20943f7b9b1a..c5c9bd2f78567c2f4a47746fdeec57f5ed650ed3 100644 --- a/contrib/xml2/xpath.c +++ b/contrib/xml2/xpath.c @@ -212,7 +212,7 @@ xml_encode_special_chars(PG_FUNCTION_ARGS) ressize = strlen(tt); tout = (text *) palloc(ressize + VARHDRSZ); memcpy(VARDATA(tout), tt, ressize); - VARATT_SIZEP(tout) = ressize + VARHDRSZ; + SET_VARSIZE(tout, ressize + VARHDRSZ); xmlFree(tt); @@ -612,7 +612,7 @@ pgxml_result_to_text(xmlXPathObjectPtr res, ressize = strlen(xpresstr); xpres = (text *) palloc(ressize + VARHDRSZ); memcpy(VARDATA(xpres), xpresstr, ressize); - VARATT_SIZEP(xpres) = ressize + VARHDRSZ; + SET_VARSIZE(xpres, ressize + VARHDRSZ); /* Free various storage */ xmlCleanupParser(); diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c index 433030ead96f5002fb3f7dcfa8ae79867d429a84..3e6de5a97dfdddf80243effe4239f78ebdf292af 100644 --- a/contrib/xml2/xslt_proc.c +++ b/contrib/xml2/xslt_proc.c @@ -129,7 +129,7 @@ xslt_process(PG_FUNCTION_ARGS) tres = palloc(reslen + VARHDRSZ); memcpy(VARDATA(tres), resstr, reslen); - VARATT_SIZEP(tres) = reslen + VARHDRSZ; + SET_VARSIZE(tres, reslen + VARHDRSZ); PG_RETURN_TEXT_P(tres); } diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml index ce60bb2a81bf38c01388e923cc01d94dcc14f037..65d636b5e4c695fcbbd113829f3b1f59992e1246 100644 --- a/doc/src/sgml/xfunc.sgml +++ b/doc/src/sgml/xfunc.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.125 2007/02/01 19:10:24 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.126 2007/02/27 23:48:06 tgl Exp $ --> <sect1 id="xfunc"> <title>User-Defined Functions</title> @@ -1645,7 +1645,7 @@ copytext(text *t) * VARSIZE is the total size of the struct in bytes. */ text *new_t = (text *) palloc(VARSIZE(t)); - VARATT_SIZEP(new_t) = VARSIZE(t); + SET_VARSIZE(new_t, VARSIZE(t)); /* * VARDATA is a pointer to the data region of the struct. */ @@ -1661,7 +1661,7 @@ concat_text(text *arg1, text *arg2) int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ; text *new_text = (text *) palloc(new_text_size); - VARATT_SIZEP(new_text) = new_text_size; + SET_VARSIZE(new_text, new_text_size); memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1) - VARHDRSZ); memcpy(VARDATA(new_text) + (VARSIZE(arg1) - VARHDRSZ), VARDATA(arg2), VARSIZE(arg2) - VARHDRSZ); @@ -1831,7 +1831,7 @@ copytext(PG_FUNCTION_ARGS) * VARSIZE is the total size of the struct in bytes. */ text *new_t = (text *) palloc(VARSIZE(t)); - VARATT_SIZEP(new_t) = VARSIZE(t); + SET_VARSIZE(new_t, VARSIZE(t)); /* * VARDATA is a pointer to the data region of the struct. */ @@ -1851,7 +1851,7 @@ concat_text(PG_FUNCTION_ARGS) int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ; text *new_text = (text *) palloc(new_text_size); - VARATT_SIZEP(new_text) = new_text_size; + SET_VARSIZE(new_text, new_text_size); memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1) - VARHDRSZ); memcpy(VARDATA(new_text) + (VARSIZE(arg1) - VARHDRSZ), VARDATA(arg2), VARSIZE(arg2) - VARHDRSZ); diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index 470f48777de3ee733dfb2ff0d1c4b507ae515137..0c83262c3b8f4321dba82d2f1202ffe889840c2a 100644 --- a/src/backend/access/common/heaptuple.c +++ b/src/backend/access/common/heaptuple.c @@ -16,7 +16,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.115 2007/02/09 03:35:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.116 2007/02/27 23:48:06 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -162,7 +162,7 @@ heap_fill_tuple(TupleDesc tupleDesc, *infomask |= HEAP_HASEXTERNAL; if (VARATT_IS_COMPRESSED(values[i])) *infomask |= HEAP_HASCOMPRESSED; - data_length = VARATT_SIZE(DatumGetPointer(values[i])); + data_length = VARSIZE(DatumGetPointer(values[i])); memcpy(data, DatumGetPointer(values[i]), data_length); } else if (att[i]->attlen == -2) @@ -261,7 +261,7 @@ DataFill(char *data, *infomask |= HEAP_HASEXTERNAL; if (VARATT_IS_COMPRESSED(values[i])) *infomask |= HEAP_HASCOMPRESSED; - data_length = VARATT_SIZE(DatumGetPointer(values[i])); + data_length = VARSIZE(DatumGetPointer(values[i])); memcpy(data, DatumGetPointer(values[i]), data_length); } else if (att[i]->attlen == -2) diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c index f2a14240ecbfee0e58370fce35adfecd9a8d405e..c83e34834ca80f113c62625f99524e95b1735f1f 100644 --- a/src/backend/access/common/indextuple.c +++ b/src/backend/access/common/indextuple.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.80 2007/01/05 22:19:21 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.81 2007/02/27 23:48:06 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -84,7 +84,7 @@ index_form_tuple(TupleDesc tupleDescriptor, * If value is above size target, and is of a compressible datatype, * try to compress it in-line. */ - if (VARATT_SIZE(untoasted_values[i]) > TOAST_INDEX_TARGET && + if (VARSIZE(untoasted_values[i]) > TOAST_INDEX_TARGET && !VARATT_IS_EXTENDED(untoasted_values[i]) && (att->attstorage == 'x' || att->attstorage == 'm')) { diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 98cbce6761b3a8193427c369788849d5900e649b..4adf4666e776a0035661a7a0d19618e4f06fd4b4 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.3 2007/01/05 22:19:21 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.4 2007/02/27 23:48:06 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -72,8 +72,8 @@ transformRelOptions(Datum oldOptions, List *defList, for (i = 0; i < noldoptions; i++) { text *oldoption = DatumGetTextP(oldoptions[i]); - char *text_str = (char *) VARATT_DATA(oldoption); - int text_len = VARATT_SIZE(oldoption) - VARHDRSZ; + char *text_str = VARDATA(oldoption); + int text_len = VARSIZE(oldoption) - VARHDRSZ; /* Search for a match in defList */ foreach(cell, defList) @@ -131,8 +131,8 @@ transformRelOptions(Datum oldOptions, List *defList, len = VARHDRSZ + strlen(def->defname) + 1 + strlen(value); /* +1 leaves room for sprintf's trailing null */ t = (text *) palloc(len + 1); - VARATT_SIZEP(t) = len; - sprintf((char *) VARATT_DATA(t), "%s=%s", def->defname, value); + SET_VARSIZE(t, len); + sprintf(VARDATA(t), "%s=%s", def->defname, value); astate = accumArrayResult(astate, PointerGetDatum(t), false, TEXTOID, @@ -188,8 +188,8 @@ parseRelOptions(Datum options, int numkeywords, const char *const * keywords, for (i = 0; i < noptions; i++) { text *optiontext = DatumGetTextP(optiondatums[i]); - char *text_str = (char *) VARATT_DATA(optiontext); - int text_len = VARATT_SIZE(optiontext) - VARHDRSZ; + char *text_str = VARDATA(optiontext); + int text_len = VARSIZE(optiontext) - VARHDRSZ; int j; /* Search for a match in keywords */ @@ -267,7 +267,7 @@ default_reloptions(Datum reloptions, bool validate, } result = (StdRdOptions *) palloc(sizeof(StdRdOptions)); - VARATT_SIZEP(result) = sizeof(StdRdOptions); + SET_VARSIZE(result, sizeof(StdRdOptions)); result->fillfactor = fillfactor; diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c index 6fde18104a3be81c350deecbe7386f104a62cb86..b1eb8aea4d362e0d308477a90bb864290d76dbf1 100644 --- a/src/backend/access/heap/tuptoaster.c +++ b/src/backend/access/heap/tuptoaster.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.70 2007/02/04 20:00:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.71 2007/02/27 23:48:07 tgl Exp $ * * * INTERFACE ROUTINES @@ -104,8 +104,8 @@ heap_tuple_untoast_attr(varattrib *attr) tmp = (PGLZ_Header *) toast_fetch_datum(attr); result = (varattrib *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); - VARATT_SIZEP(result) = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; - pglz_decompress(tmp, VARATT_DATA(result)); + SET_VARSIZE(result, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); + pglz_decompress(tmp, VARDATA(result)); pfree(tmp); } else @@ -124,8 +124,8 @@ heap_tuple_untoast_attr(varattrib *attr) PGLZ_Header *tmp = (PGLZ_Header *) attr; result = (varattrib *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); - VARATT_SIZEP(result) = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; - pglz_decompress(tmp, VARATT_DATA(result)); + SET_VARSIZE(result, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); + pglz_decompress(tmp, VARDATA(result)); } else @@ -162,8 +162,8 @@ heap_tuple_untoast_attr_slice(varattrib *attr, int32 sliceoffset, int32 slicelen tmp = (PGLZ_Header *) attr; /* compressed in main tuple */ preslice = (varattrib *) palloc(PGLZ_RAW_SIZE(tmp) + VARHDRSZ); - VARATT_SIZEP(preslice) = PGLZ_RAW_SIZE(tmp) + VARHDRSZ; - pglz_decompress(tmp, VARATT_DATA(preslice)); + SET_VARSIZE(preslice, PGLZ_RAW_SIZE(tmp) + VARHDRSZ); + pglz_decompress(tmp, VARDATA(preslice)); if (tmp != (PGLZ_Header *) attr) pfree(tmp); @@ -193,7 +193,7 @@ heap_tuple_untoast_attr_slice(varattrib *attr, int32 sliceoffset, int32 slicelen slicelength = attrsize - sliceoffset; result = (varattrib *) palloc(slicelength + VARHDRSZ); - VARATT_SIZEP(result) = slicelength + VARHDRSZ; + SET_VARSIZE(result, slicelength + VARHDRSZ); memcpy(VARDATA(result), VARDATA(preslice) + sliceoffset, slicelength); @@ -435,7 +435,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us * tuple. */ toast_action[i] = 'p'; - toast_sizes[i] = VARATT_SIZE(toast_values[i]); + toast_sizes[i] = VARSIZE(toast_values[i]); continue; } } @@ -486,7 +486,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us /* * Remember the size of this attribute */ - toast_sizes[i] = VARATT_SIZE(new_value); + toast_sizes[i] = VARSIZE(new_value); } else { @@ -564,7 +564,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us pfree(DatumGetPointer(old_value)); toast_values[i] = new_value; toast_free[i] = true; - toast_sizes[i] = VARATT_SIZE(toast_values[i]); + toast_sizes[i] = VARSIZE(toast_values[i]); need_change = true; need_free = true; } @@ -623,7 +623,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us pfree(DatumGetPointer(old_value)); toast_free[i] = true; - toast_sizes[i] = VARATT_SIZE(toast_values[i]); + toast_sizes[i] = VARSIZE(toast_values[i]); need_change = true; need_free = true; @@ -676,7 +676,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us pfree(DatumGetPointer(old_value)); toast_values[i] = new_value; toast_free[i] = true; - toast_sizes[i] = VARATT_SIZE(toast_values[i]); + toast_sizes[i] = VARSIZE(toast_values[i]); need_change = true; need_free = true; } @@ -734,7 +734,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool us pfree(DatumGetPointer(old_value)); toast_free[i] = true; - toast_sizes[i] = VARATT_SIZE(toast_values[i]); + toast_sizes[i] = VARSIZE(toast_values[i]); need_change = true; need_free = true; @@ -949,15 +949,15 @@ Datum toast_compress_datum(Datum value) { varattrib *tmp; - int32 valsize = VARATT_SIZE(value) - VARHDRSZ; + int32 valsize = VARSIZE(value) - VARHDRSZ; tmp = (varattrib *) palloc(PGLZ_MAX_OUTPUT(valsize)); - if (pglz_compress(VARATT_DATA(value), valsize, + if (pglz_compress(VARDATA(value), valsize, (PGLZ_Header *) tmp, PGLZ_strategy_default) && - VARATT_SIZE(tmp) < VARATT_SIZE(value)) + VARSIZE(tmp) < VARSIZE(value)) { /* successful compression */ - VARATT_SIZEP(tmp) |= VARATT_FLAG_COMPRESSED; + VARATT_SIZEP_DEPRECATED(tmp) |= VARATT_FLAG_COMPRESSED; return PointerGetDatum(tmp); } else @@ -1010,18 +1010,19 @@ toast_save_datum(Relation rel, Datum value, bool use_wal) */ result = (varattrib *) palloc(sizeof(varattrib)); - result->va_header = sizeof(varattrib) | VARATT_FLAG_EXTERNAL; + SET_VARSIZE(result, sizeof(varattrib)); + VARATT_SIZEP_DEPRECATED(result) |= VARATT_FLAG_EXTERNAL; if (VARATT_IS_COMPRESSED(value)) { - result->va_header |= VARATT_FLAG_COMPRESSED; + VARATT_SIZEP_DEPRECATED(result) |= VARATT_FLAG_COMPRESSED; result->va_content.va_external.va_rawsize = ((varattrib *) value)->va_content.va_compressed.va_rawsize; } else - result->va_content.va_external.va_rawsize = VARATT_SIZE(value); + result->va_content.va_external.va_rawsize = VARSIZE(value); result->va_content.va_external.va_extsize = - VARATT_SIZE(value) - VARHDRSZ; + VARSIZE(value) - VARHDRSZ; result->va_content.va_external.va_valueid = GetNewOidWithIndex(toastrel, toastidx); result->va_content.va_external.va_toastrelid = @@ -1039,8 +1040,8 @@ toast_save_datum(Relation rel, Datum value, bool use_wal) /* * Get the data to process */ - data_p = VARATT_DATA(value); - data_todo = VARATT_SIZE(value) - VARHDRSZ; + data_p = VARDATA(value); + data_todo = VARSIZE(value) - VARHDRSZ; /* * Split up the item into chunks @@ -1056,8 +1057,8 @@ toast_save_datum(Relation rel, Datum value, bool use_wal) * Build a tuple and store it */ t_values[1] = Int32GetDatum(chunk_seq++); - VARATT_SIZEP(&chunk_data) = chunk_size + VARHDRSZ; - memcpy(VARATT_DATA(&chunk_data), data_p, chunk_size); + SET_VARSIZE(&chunk_data, chunk_size + VARHDRSZ); + memcpy(VARDATA(&chunk_data), data_p, chunk_size); toasttup = heap_form_tuple(toasttupDesc, t_values, t_isnull); if (!HeapTupleIsValid(toasttup)) elog(ERROR, "failed to build TOAST tuple"); @@ -1184,9 +1185,9 @@ toast_fetch_datum(varattrib *attr) numchunks = ((ressize - 1) / TOAST_MAX_CHUNK_SIZE) + 1; result = (varattrib *) palloc(ressize + VARHDRSZ); - VARATT_SIZEP(result) = ressize + VARHDRSZ; + SET_VARSIZE(result, ressize + VARHDRSZ); if (VARATT_IS_COMPRESSED(attr)) - VARATT_SIZEP(result) |= VARATT_FLAG_COMPRESSED; + VARATT_SIZEP_DEPRECATED(result) |= VARATT_FLAG_COMPRESSED; /* * Open the toast relation and its index @@ -1224,7 +1225,7 @@ toast_fetch_datum(varattrib *attr) Assert(!isnull); chunk = DatumGetPointer(fastgetattr(ttup, 3, toasttupDesc, &isnull)); Assert(!isnull); - chunksize = VARATT_SIZE(chunk) - VARHDRSZ; + chunksize = VARSIZE(chunk) - VARHDRSZ; /* * Some checks on the data we've found @@ -1255,8 +1256,8 @@ toast_fetch_datum(varattrib *attr) /* * Copy the data into proper place in our result */ - memcpy(((char *) VARATT_DATA(result)) + residx * TOAST_MAX_CHUNK_SIZE, - VARATT_DATA(chunk), + memcpy(VARDATA(result) + residx * TOAST_MAX_CHUNK_SIZE, + VARDATA(chunk), chunksize); nextidx++; @@ -1326,10 +1327,10 @@ toast_fetch_datum_slice(varattrib *attr, int32 sliceoffset, int32 length) length = attrsize - sliceoffset; result = (varattrib *) palloc(length + VARHDRSZ); - VARATT_SIZEP(result) = length + VARHDRSZ; + SET_VARSIZE(result, length + VARHDRSZ); if (VARATT_IS_COMPRESSED(attr)) - VARATT_SIZEP(result) |= VARATT_FLAG_COMPRESSED; + VARATT_SIZEP_DEPRECATED(result) |= VARATT_FLAG_COMPRESSED; if (length == 0) return result; /* Can save a lot of work at this point! */ @@ -1399,7 +1400,7 @@ toast_fetch_datum_slice(varattrib *attr, int32 sliceoffset, int32 length) Assert(!isnull); chunk = DatumGetPointer(fastgetattr(ttup, 3, toasttupDesc, &isnull)); Assert(!isnull); - chunksize = VARATT_SIZE(chunk) - VARHDRSZ; + chunksize = VARSIZE(chunk) - VARHDRSZ; /* * Some checks on the data we've found @@ -1433,9 +1434,9 @@ toast_fetch_datum_slice(varattrib *attr, int32 sliceoffset, int32 length) if (residx == endchunk) chcpyend = endoffset; - memcpy(((char *) VARATT_DATA(result)) + + memcpy(VARDATA(result) + (residx * TOAST_MAX_CHUNK_SIZE - sliceoffset) + chcpystrt, - VARATT_DATA(chunk) + chcpystrt, + VARDATA(chunk) + chcpystrt, (chcpyend - chcpystrt) + 1); nextidx++; diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c index 63779452850f7a37f732e6c190f2b8745adff737..262d9f41fb70d7e1696c61a668bb260a96706e1e 100644 --- a/src/backend/catalog/pg_conversion.c +++ b/src/backend/catalog/pg_conversion.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_conversion.c,v 1.35 2007/02/14 01:58:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_conversion.c,v 1.36 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -338,7 +338,7 @@ pg_convert_using(PG_FUNCTION_ARGS) */ len = strlen(result) + VARHDRSZ; retval = palloc(len); - VARATT_SIZEP(retval) = len; + SET_VARSIZE(retval, len); memcpy(VARDATA(retval), result, len - VARHDRSZ); pfree(result); diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 234441c0f6c80cce5e2fccf430062b9647197d58..784bbac231f127272171a762f36330f7a2229a57 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.214 2007/02/27 01:11:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.215 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2533,7 +2533,7 @@ ExecEvalArray(ArrayExprState *astate, ExprContext *econtext, } result = (ArrayType *) palloc(nbytes); - result->size = nbytes; + SET_VARSIZE(result, nbytes); result->ndim = ndims; result->dataoffset = dataoffset; result->elemtype = element_type; @@ -2967,7 +2967,7 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext, int len = buf.len + VARHDRSZ; result = palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), buf.data, buf.len); } diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c index 1b43c42c96e95c519878e85189e77aa05d0f0527..80eddc2821b9a3991d3cca78dd179ff67b89f043 100644 --- a/src/backend/libpq/be-fsstubs.c +++ b/src/backend/libpq/be-fsstubs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.84 2007/01/05 22:19:29 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.85 2007/02/27 23:48:07 tgl Exp $ * * NOTES * This should be moved to a more appropriate place. It is here @@ -304,7 +304,7 @@ loread(PG_FUNCTION_ARGS) retval = (bytea *) palloc(VARHDRSZ + len); totalread = lo_read(fd, VARDATA(retval), len); - VARATT_SIZEP(retval) = totalread + VARHDRSZ; + SET_VARSIZE(retval, totalread + VARHDRSZ); PG_RETURN_BYTEA_P(retval); } diff --git a/src/backend/libpq/pqformat.c b/src/backend/libpq/pqformat.c index 6ecf0413d76e93073ddb86fda94a5292ca2c99b0..c81dfa5b227d09155dd79b09b6dd58912c7d5659 100644 --- a/src/backend/libpq/pqformat.c +++ b/src/backend/libpq/pqformat.c @@ -24,7 +24,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.43 2007/01/05 22:19:29 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.44 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -386,7 +386,7 @@ pq_endtypsend(StringInfo buf) /* Insert correct length into bytea length word */ Assert(buf->len >= VARHDRSZ); - VARATT_SIZEP(result) = buf->len; + SET_VARSIZE(result, buf->len); return result; } diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c index b787c6a3caf4e1aa5af8518e0c7781573f11de5d..9e033c436c9c39e275cd4fc54c17d2ea82ec2db6 100644 --- a/src/backend/storage/large_object/inv_api.c +++ b/src/backend/storage/large_object/inv_api.c @@ -17,7 +17,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.121 2007/01/05 22:19:38 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.122 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -507,7 +507,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes) bytea hdr; char data[LOBLKSIZE]; } workbuf; - char *workb = VARATT_DATA(&workbuf.hdr); + char *workb = VARDATA(&workbuf.hdr); HeapTuple newtup; Datum values[Natts_pg_largeobject]; char nulls[Natts_pg_largeobject]; @@ -607,7 +607,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes) off += n; /* compute valid length of new page */ len = (len >= off) ? len : off; - VARATT_SIZEP(&workbuf.hdr) = len + VARHDRSZ; + SET_VARSIZE(&workbuf.hdr, len + VARHDRSZ); /* * Form and insert updated tuple @@ -651,7 +651,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes) obj_desc->offset += n; /* compute valid length of new page */ len = off + n; - VARATT_SIZEP(&workbuf.hdr) = len + VARHDRSZ; + SET_VARSIZE(&workbuf.hdr, len + VARHDRSZ); /* * Form and insert updated tuple diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index c9f9a07f230a1942fee2d79512ba23ec0ee3748c..0865c7f0d602996e94f8dad7435fe71798695f79 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.137 2007/01/05 22:19:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.138 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -353,7 +353,7 @@ allocacl(int n) elog(ERROR, "invalid size: %d", n); size = ACL_N_SIZE(n); new_acl = (Acl *) palloc0(size); - new_acl->size = size; + SET_VARSIZE(new_acl, size); new_acl->ndim = 1; new_acl->dataoffset = 0; /* we never put in any nulls */ new_acl->elemtype = ACLITEMOID; @@ -716,8 +716,9 @@ aclupdate(const Acl *old_acl, const AclItem *mod_aip, memmove(new_aip + dst, new_aip + dst + 1, (num - dst - 1) * sizeof(AclItem)); + /* Adjust array size to be 'num - 1' items */ ARR_DIMS(new_acl)[0] = num - 1; - ARR_SIZE(new_acl) -= sizeof(AclItem); + SET_VARSIZE(new_acl, ACL_N_SIZE(num - 1)); } /* @@ -830,7 +831,7 @@ aclnewowner(const Acl *old_acl, Oid oldOwnerId, Oid newOwnerId) } /* Adjust array size to be 'dst' items */ ARR_DIMS(new_acl)[0] = dst; - ARR_SIZE(new_acl) = ACL_N_SIZE(dst); + SET_VARSIZE(new_acl, ACL_N_SIZE(dst)); } return new_acl; diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index 1dad5210156baed0d5649b51fd6b4854cd91a79d..0745f1e1d2a38a157086e3227e0071256e2f8fab 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -6,7 +6,7 @@ * Copyright (c) 2003-2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.21 2007/01/05 22:19:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.22 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -376,7 +376,7 @@ array_cat(PG_FUNCTION_ARGS) nbytes = ndatabytes + ARR_OVERHEAD_NONULLS(ndims); } result = (ArrayType *) palloc(nbytes); - result->size = nbytes; + SET_VARSIZE(result, nbytes); result->ndim = ndims; result->dataoffset = dataoffset; result->elemtype = element_type; diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 525d94e1ecd8d5afb15ac429ebef234d6cdd3b1a..43acdffcaf0b8b8cd829450891e5a194e6e80765 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.136 2007/01/05 22:19:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.137 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -324,7 +324,7 @@ array_in(PG_FUNCTION_ARGS) nbytes += ARR_OVERHEAD_NONULLS(ndim); } retval = (ArrayType *) palloc(nbytes); - retval->size = nbytes; + SET_VARSIZE(retval, nbytes); retval->ndim = ndim; retval->dataoffset = dataoffset; retval->elemtype = element_type; @@ -1279,7 +1279,7 @@ array_recv(PG_FUNCTION_ARGS) nbytes += ARR_OVERHEAD_NONULLS(ndim); } retval = (ArrayType *) palloc(nbytes); - retval->size = nbytes; + SET_VARSIZE(retval, nbytes); retval->ndim = ndim; retval->dataoffset = dataoffset; retval->elemtype = element_type; @@ -1573,7 +1573,7 @@ array_dims(PG_FUNCTION_ARGS) sprintf(p, "[%d:%d]", lb[i], dimv[i] + lb[i] - 1); p += strlen(p); } - VARATT_SIZEP(result) = strlen(VARDATA(result)) + VARHDRSZ; + SET_VARSIZE(result, strlen(VARDATA(result)) + VARHDRSZ); PG_RETURN_TEXT_P(result); } @@ -1879,7 +1879,7 @@ array_get_slice(ArrayType *array, } newarray = (ArrayType *) palloc(bytes); - newarray->size = bytes; + SET_VARSIZE(newarray, bytes); newarray->ndim = ndim; newarray->dataoffset = dataoffset; newarray->elemtype = elemtype; @@ -2132,7 +2132,7 @@ array_set(ArrayType *array, * OK, create the new array and fill in header/dimensions */ newarray = (ArrayType *) palloc(newsize); - newarray->size = newsize; + SET_VARSIZE(newarray, newsize); newarray->ndim = ndim; newarray->dataoffset = newhasnulls ? overheadlen : 0; newarray->elemtype = ARR_ELEMTYPE(array); @@ -2458,7 +2458,7 @@ array_set_slice(ArrayType *array, newsize = overheadlen + olddatasize - olditemsize + newitemsize; newarray = (ArrayType *) palloc(newsize); - newarray->size = newsize; + SET_VARSIZE(newarray, newsize); newarray->ndim = ndim; newarray->dataoffset = newhasnulls ? overheadlen : 0; newarray->elemtype = ARR_ELEMTYPE(array); @@ -2717,7 +2717,7 @@ array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType, nbytes += ARR_OVERHEAD_NONULLS(ndim); } result = (ArrayType *) palloc(nbytes); - result->size = nbytes; + SET_VARSIZE(result, nbytes); result->ndim = ndim; result->dataoffset = dataoffset; result->elemtype = retType; @@ -2853,7 +2853,7 @@ construct_md_array(Datum *elems, nbytes += ARR_OVERHEAD_NONULLS(ndims); } result = (ArrayType *) palloc(nbytes); - result->size = nbytes; + SET_VARSIZE(result, nbytes); result->ndim = ndims; result->dataoffset = dataoffset; result->elemtype = elmtype; @@ -2877,7 +2877,7 @@ construct_empty_array(Oid elmtype) ArrayType *result; result = (ArrayType *) palloc(sizeof(ArrayType)); - result->size = sizeof(ArrayType); + SET_VARSIZE(result, sizeof(ArrayType)); result->ndim = 0; result->dataoffset = 0; result->elemtype = elmtype; diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c index d04f3d38c22922c7ff0cef6d83d01c32c06a4afe..06dc4fec8c0b731f13c34d7e6d1819d4edd95200 100644 --- a/src/backend/utils/adt/cash.c +++ b/src/backend/utils/adt/cash.c @@ -13,7 +13,7 @@ * this version handles 64 bit numbers and so can hold values up to * $92,233,720,368,547,758.07. * - * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.69 2007/01/03 01:19:50 darcy Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.70 2007/02/27 23:48:07 tgl Exp $ */ #include "postgres.h" @@ -860,7 +860,7 @@ cash_words(PG_FUNCTION_ARGS) /* make a text type for output */ result = (text *) palloc(strlen(buf) + VARHDRSZ); - VARATT_SIZEP(result) = strlen(buf) + VARHDRSZ; + SET_VARSIZE(result, strlen(buf) + VARHDRSZ); memcpy(VARDATA(result), buf, strlen(buf)); PG_RETURN_TEXT_P(result); diff --git a/src/backend/utils/adt/char.c b/src/backend/utils/adt/char.c index 2ed8172c4eea9817f9f490bb62b3cfb28679d5ad..489c4673a4e05c7ec1bd282b9603bdffbee21bc9 100644 --- a/src/backend/utils/adt/char.c +++ b/src/backend/utils/adt/char.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/char.c,v 1.46 2007/01/05 22:19:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/char.c,v 1.47 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -203,11 +203,11 @@ char_text(PG_FUNCTION_ARGS) */ if (arg1 != '\0') { - VARATT_SIZEP(result) = VARHDRSZ + 1; + SET_VARSIZE(result, VARHDRSZ + 1); *(VARDATA(result)) = arg1; } else - VARATT_SIZEP(result) = VARHDRSZ; + SET_VARSIZE(result, VARHDRSZ); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index c3a6415634bf7e68f17619cb70755bfeade2ca98..bdda749bed0d64cf26ee6066b486903e56cb7f13 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.128 2007/02/16 03:39:44 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.129 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -891,8 +891,8 @@ date_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, (len - VARHDRSZ)); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); @@ -1634,8 +1634,8 @@ time_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, (len - VARHDRSZ)); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); @@ -2420,8 +2420,8 @@ timetz_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, (len - VARHDRSZ)); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); diff --git a/src/backend/utils/adt/datum.c b/src/backend/utils/adt/datum.c index 40963bc2b9973234792080035dcfde4296263014..21e7cc55412fb4ca64890fc1b1f2f8bc77752fc3 100644 --- a/src/backend/utils/adt/datum.c +++ b/src/backend/utils/adt/datum.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/datum.c,v 1.33 2007/01/05 22:19:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/datum.c,v 1.34 2007/02/27 23:48:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -79,7 +79,7 @@ datumGetSize(Datum value, bool typByVal, int typLen) (errcode(ERRCODE_DATA_EXCEPTION), errmsg("invalid Datum pointer"))); - size = (Size) VARATT_SIZE(s); + size = (Size) VARSIZE(s); } else if (typLen == -2) { diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index dcb84a7d249c1e3de0762b7cea3f15052d1d4374..6df746c38eb0000f28ed5321568bdc4cb9917e03 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -5,7 +5,7 @@ * Copyright (c) 2002-2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.10 2007/01/05 22:19:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.11 2007/02/27 23:48:07 tgl Exp $ * */ @@ -396,7 +396,7 @@ pg_size_pretty(PG_FUNCTION_ARGS) } } - VARATT_SIZEP(result) = strlen(VARDATA(result)) + VARHDRSZ; + SET_VARSIZE(result, strlen(VARDATA(result)) + VARHDRSZ); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/encode.c b/src/backend/utils/adt/encode.c index c092e7ec3a36b1d90b4d239451abb76257b1ab28..3d753e9a6cfb811df828a66c2e3ce3bf8c89c5e1 100644 --- a/src/backend/utils/adt/encode.c +++ b/src/backend/utils/adt/encode.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/encode.c,v 1.18 2007/01/05 22:19:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/encode.c,v 1.19 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -63,7 +63,7 @@ binary_encode(PG_FUNCTION_ARGS) if (res > resultlen) elog(FATAL, "overflow - encode estimate too small"); - VARATT_SIZEP(result) = VARHDRSZ + res; + SET_VARSIZE(result, VARHDRSZ + res); PG_RETURN_TEXT_P(result); } @@ -99,7 +99,7 @@ binary_decode(PG_FUNCTION_ARGS) if (res > resultlen) elog(FATAL, "overflow - decode estimate too small"); - VARATT_SIZEP(result) = VARHDRSZ + res; + SET_VARSIZE(result, VARHDRSZ + res); PG_RETURN_BYTEA_P(result); } diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index a123d106fac5109f38387386b653fb961d614241..f2c229375649ac80cb363cc5547c52be6eca214d 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.148 2007/01/20 21:47:10 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.149 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1214,7 +1214,7 @@ float8_text(PG_FUNCTION_ARGS) result = (text *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); @@ -1265,7 +1265,7 @@ float4_text(PG_FUNCTION_ARGS) result = (text *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 344bf7db087febe576211eab439855dd80979cb6..6095a1f4fdc0091557c45a1974f1c181f111c61f 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- * formatting.c * - * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.128 2007/02/17 03:11:32 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.129 2007/02/27 23:48:08 tgl Exp $ * * * Portions Copyright (c) 1999-2007, PostgreSQL Global Development Group @@ -2991,7 +2991,7 @@ datetime_to_char_body(TmToChar *tmtc, text *fmt, bool is_interval) reslen = strlen(result); res = (text *) palloc(reslen + VARHDRSZ); memcpy(VARDATA(res), result, reslen); - VARATT_SIZEP(res) = reslen + VARHDRSZ; + SET_VARSIZE(res, reslen + VARHDRSZ); pfree(result); return res; @@ -4829,10 +4829,10 @@ do { \ } \ \ result_tmp = result; \ - result = (text *) palloc( len + 1 + VARHDRSZ); \ + result = (text *) palloc(len + VARHDRSZ); \ \ - strcpy( VARDATA(result), VARDATA(result_tmp)); \ - VARATT_SIZEP(result) = len + VARHDRSZ; \ + memcpy(VARDATA(result), VARDATA(result_tmp), len); \ + SET_VARSIZE(result, len + VARHDRSZ); \ pfree(result_tmp); \ } while(0) diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c index af277875c5632b296b442bc4211b0690159691ca..e95c04876ca2015adb5fcabfff7f0c641ec1099c 100644 --- a/src/backend/utils/adt/genfile.c +++ b/src/backend/utils/adt/genfile.c @@ -9,7 +9,7 @@ * Author: Andreas Pflug <pgadmin@pse-consulting.de> * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/genfile.c,v 1.15 2007/02/01 19:10:28 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/genfile.c,v 1.16 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -135,7 +135,7 @@ pg_read_file(PG_FUNCTION_ARGS) (errcode_for_file_access(), errmsg("could not read file \"%s\": %m", filename))); - VARATT_SIZEP(buf) = nbytes + VARHDRSZ; + SET_VARSIZE(buf, nbytes + VARHDRSZ); FreeFile(file); pfree(filename); @@ -261,7 +261,7 @@ pg_ls_dir(PG_FUNCTION_ARGS) continue; result = palloc(len + VARHDRSZ); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, len + VARHDRSZ); memcpy(VARDATA(result), de->d_name, len); SRF_RETURN_NEXT(funcctx, PointerGetDatum(result)); diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index 61217fc94c1a204ddfe4a5088cc57f1d384ab259..3360c07afc162bb9af6fbe80c138ec808a15c1e3 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.94 2007/01/05 22:19:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.95 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1415,7 +1415,7 @@ path_in(PG_FUNCTION_ARGS) size = offsetof(PATH, p[0]) +sizeof(path->p[0]) * npts; path = (PATH *) palloc(size); - path->size = size; + SET_VARSIZE(path, size); path->npts = npts; if ((!path_decode(TRUE, npts, s, &isopen, &s, &(path->p[0]))) @@ -1464,7 +1464,7 @@ path_recv(PG_FUNCTION_ARGS) size = offsetof(PATH, p[0]) +sizeof(path->p[0]) * npts; path = (PATH *) palloc(size); - path->size = size; + SET_VARSIZE(path, size); path->npts = npts; path->closed = (closed ? 1 : 0); @@ -3440,7 +3440,7 @@ poly_in(PG_FUNCTION_ARGS) size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * npts; poly = (POLYGON *) palloc0(size); /* zero any holes */ - poly->size = size; + SET_VARSIZE(poly, size); poly->npts = npts; if ((!path_decode(FALSE, npts, str, &isopen, &s, &(poly->p[0]))) @@ -3492,7 +3492,7 @@ poly_recv(PG_FUNCTION_ARGS) size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * npts; poly = (POLYGON *) palloc0(size); /* zero any holes */ - poly->size = size; + SET_VARSIZE(poly, size); poly->npts = npts; for (i = 0; i < npts; i++) @@ -4079,7 +4079,7 @@ path_add(PG_FUNCTION_ARGS) result = (PATH *) palloc(size); - result->size = size; + SET_VARSIZE(result, size); result->npts = (p1->npts + p2->npts); result->closed = p1->closed; @@ -4207,7 +4207,7 @@ path_poly(PG_FUNCTION_ARGS) size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * path->npts; poly = (POLYGON *) palloc(size); - poly->size = size; + SET_VARSIZE(poly, size); poly->npts = path->npts; for (i = 0; i < path->npts; i++) @@ -4282,7 +4282,7 @@ box_poly(PG_FUNCTION_ARGS) size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * 4; poly = (POLYGON *) palloc(size); - poly->size = size; + SET_VARSIZE(poly, size); poly->npts = 4; poly->p[0].x = box->low.x; @@ -4312,7 +4312,7 @@ poly_path(PG_FUNCTION_ARGS) size = offsetof(PATH, p[0]) +sizeof(path->p[0]) * poly->npts; path = (PATH *) palloc(size); - path->size = size; + SET_VARSIZE(path, size); path->npts = poly->npts; path->closed = TRUE; @@ -4995,7 +4995,7 @@ circle_poly(PG_FUNCTION_ARGS) errmsg("too many points requested"))); poly = (POLYGON *) palloc0(size); /* zero any holes */ - poly->size = size; + SET_VARSIZE(poly, size); poly->npts = npts; anglestep = (2.0 * M_PI) / npts; diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c index fce3bb89fbab0e28e630011789b548c813fc8690..d6d590220776f77b2e18b28ea1544a756972e33b 100644 --- a/src/backend/utils/adt/int.c +++ b/src/backend/utils/adt/int.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.78 2007/02/01 19:10:28 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.79 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -124,7 +124,7 @@ buildint2vector(const int2 *int2s, int n) * Attach standard array header. For historical reasons, we set the index * lower bound to 0 not 1. */ - result->size = Int2VectorSize(n); + SET_VARSIZE(result, Int2VectorSize(n)); result->ndim = 1; result->dataoffset = 0; /* never any nulls */ result->elemtype = INT2OID; @@ -162,7 +162,7 @@ int2vectorin(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("int2vector has too many elements"))); - result->size = Int2VectorSize(n); + SET_VARSIZE(result, Int2VectorSize(n)); result->ndim = 1; result->dataoffset = 0; /* never any nulls */ result->elemtype = INT2OID; @@ -350,7 +350,7 @@ int2_text(PG_FUNCTION_ARGS) text *result = (text *) palloc(7 + VARHDRSZ); /* sign,5 digits, '\0' */ pg_itoa(arg1, VARDATA(result)); - VARATT_SIZEP(result) = strlen(VARDATA(result)) + VARHDRSZ; + SET_VARSIZE(result, strlen(VARDATA(result)) + VARHDRSZ); PG_RETURN_TEXT_P(result); } @@ -381,7 +381,7 @@ int4_text(PG_FUNCTION_ARGS) text *result = (text *) palloc(12 + VARHDRSZ); /* sign,10 digits,'\0' */ pg_ltoa(arg1, VARDATA(result)); - VARATT_SIZEP(result) = strlen(VARDATA(result)) + VARHDRSZ; + SET_VARSIZE(result, strlen(VARDATA(result)) + VARHDRSZ); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c index 7f0d1df93ccfe525304ff15ed659565b9e99d264..25672b680fc88bd4ea50b9ecf0faddda1f5c04a5 100644 --- a/src/backend/utils/adt/int8.c +++ b/src/backend/utils/adt/int8.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/int8.c,v 1.64 2007/02/01 19:10:28 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/int8.c,v 1.65 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1171,7 +1171,7 @@ int8_text(PG_FUNCTION_ARGS) result = (text *) palloc(VARHDRSZ + len); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, VARHDRSZ + len); memcpy(VARDATA(result), s, len); pfree(s); diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c index 3455432220f439950a585013d26af93dcc14dbcc..46f223b38ffd1519b941ddd4d1254d5a6532eab4 100644 --- a/src/backend/utils/adt/like.c +++ b/src/backend/utils/adt/like.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/like.c,v 1.67 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/like.c,v 1.68 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -532,7 +532,7 @@ like_escape_bytea(PG_FUNCTION_ARGS) } } - VARATT_SIZEP(result) = r - ((char *) result); + SET_VARSIZE(result, r - ((char *) result)); PG_RETURN_BYTEA_P(result); } diff --git a/src/backend/utils/adt/like_match.c b/src/backend/utils/adt/like_match.c index 69f73c1dc367f7d3526c58fc3ad9d3b59393073b..22e2705fb368f7f51cb0b81806d5d53f67c9488b 100644 --- a/src/backend/utils/adt/like_match.c +++ b/src/backend/utils/adt/like_match.c @@ -19,7 +19,7 @@ * Copyright (c) 1996-2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.14 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.15 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -332,7 +332,7 @@ do_like_escape(text *pat, text *esc) } } - VARATT_SIZEP(result) = r - ((char *) result); + SET_VARSIZE(result, r - ((char *) result)); return result; } diff --git a/src/backend/utils/adt/mac.c b/src/backend/utils/adt/mac.c index 0c9bff2b8fe0c3ce6f9a409a9dd86fe87c3b50c8..fa13abe4618d8596e36bb4982ce36fe5e0b2626f 100644 --- a/src/backend/utils/adt/mac.c +++ b/src/backend/utils/adt/mac.c @@ -1,7 +1,7 @@ /* * PostgreSQL type definitions for MAC addresses. * - * $PostgreSQL: pgsql/src/backend/utils/adt/mac.c,v 1.36 2006/01/11 08:43:12 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/mac.c,v 1.37 2007/02/27 23:48:08 tgl Exp $ */ #include "postgres.h" @@ -163,8 +163,8 @@ macaddr_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, (len - VARHDRSZ)); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index dfab102fa76a7f9dcc65fcb08ff1769981be96fa..3ec098a39f3ddd855a42aea78678e9ce8a857e32 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.149 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.150 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1596,7 +1596,7 @@ timeofday(PG_FUNCTION_ARGS) len = VARHDRSZ + strlen(buf); result = (text *) palloc(len); - VARATT_SIZEP(result) = len; - memcpy(VARDATA(result), buf, strlen(buf)); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), buf, len - VARHDRSZ); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 29ba260b45a724784ea42b17ee37ca530d9c5cdd..88fa427450f2da6282093406505b9252472d2011 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -1,7 +1,7 @@ /* * PostgreSQL type definitions for the INET and CIDR types. * - * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.67 2007/01/02 22:21:08 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.68 2007/02/27 23:48:08 tgl Exp $ * * Jon Postel RIP 16 Oct 1998 */ @@ -105,9 +105,9 @@ network_in(char *src, bool is_cidr) errdetail("Value has bits set to right of mask."))); } - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); ip_bits(dst) = bits; return dst; @@ -220,9 +220,9 @@ network_recv(StringInfo buf, bool is_cidr) /* translator: %s is inet or cidr */ errmsg("invalid length in external \"%s\" value", is_cidr ? "cidr" : "inet"))); - VARATT_SIZEP(addr) = VARHDRSZ + + SET_VARSIZE(addr, VARHDRSZ + ((char *) ip_addr(addr) - (char *) VARDATA(addr)) + - ip_addrsize(addr); + ip_addrsize(addr)); addrptr = (char *) ip_addr(addr); for (i = 0; i < nb; i++) @@ -638,7 +638,7 @@ network_host(PG_FUNCTION_ARGS) /* Return string as a text datum */ len = strlen(tmp); ret = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(ret) = len + VARHDRSZ; + SET_VARSIZE(ret, len + VARHDRSZ); memcpy(VARDATA(ret), tmp, len); PG_RETURN_TEXT_P(ret); } @@ -667,7 +667,7 @@ network_show(PG_FUNCTION_ARGS) /* Return string as a text datum */ len = strlen(tmp); ret = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(ret) = len + VARHDRSZ; + SET_VARSIZE(ret, len + VARHDRSZ); memcpy(VARDATA(ret), tmp, len); PG_RETURN_TEXT_P(ret); } @@ -692,7 +692,7 @@ inet_abbrev(PG_FUNCTION_ARGS) /* Return string as a text datum */ len = strlen(tmp); ret = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(ret) = len + VARHDRSZ; + SET_VARSIZE(ret, len + VARHDRSZ); memcpy(VARDATA(ret), tmp, len); PG_RETURN_TEXT_P(ret); } @@ -717,7 +717,7 @@ cidr_abbrev(PG_FUNCTION_ARGS) /* Return string as a text datum */ len = strlen(tmp); ret = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(ret) = len + VARHDRSZ; + SET_VARSIZE(ret, len + VARHDRSZ); memcpy(VARDATA(ret), tmp, len); PG_RETURN_TEXT_P(ret); } @@ -793,9 +793,9 @@ network_broadcast(PG_FUNCTION_ARGS) ip_family(dst) = ip_family(ip); ip_bits(dst) = ip_bits(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -838,9 +838,9 @@ network_network(PG_FUNCTION_ARGS) ip_family(dst) = ip_family(ip); ip_bits(dst) = ip_bits(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -881,9 +881,9 @@ network_netmask(PG_FUNCTION_ARGS) ip_family(dst) = ip_family(ip); ip_bits(dst) = ip_maxbits(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -930,9 +930,9 @@ network_hostmask(PG_FUNCTION_ARGS) ip_family(dst) = ip_family(ip); ip_bits(dst) = ip_maxbits(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -1272,9 +1272,9 @@ inetnot(PG_FUNCTION_ARGS) ip_bits(dst) = ip_bits(ip); ip_family(dst) = ip_family(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -1306,9 +1306,9 @@ inetand(PG_FUNCTION_ARGS) ip_bits(dst) = Max(ip_bits(ip), ip_bits(ip2)); ip_family(dst) = ip_family(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -1340,9 +1340,9 @@ inetor(PG_FUNCTION_ARGS) ip_bits(dst) = Max(ip_bits(ip), ip_bits(ip2)); ip_family(dst) = ip_family(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); PG_RETURN_INET_P(dst); } @@ -1394,9 +1394,9 @@ internal_inetpl(inet *ip, int64 addend) ip_bits(dst) = ip_bits(ip); ip_family(dst) = ip_family(ip); - VARATT_SIZEP(dst) = VARHDRSZ + + SET_VARSIZE(dst, VARHDRSZ + ((char *) ip_addr(dst) - (char *) VARDATA(dst)) + - ip_addrsize(dst); + ip_addrsize(dst)); return dst; } diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 19fc4d45055e36c507a21bf4e4cf17db6151957a..f173f30211c7a62d414e2d4f18bc2165223d7e44 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -14,7 +14,7 @@ * Copyright (c) 1998-2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.100 2007/02/17 00:55:57 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.101 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -230,7 +230,7 @@ static void dump_var(const char *str, NumericVar *var); #define NUMERIC_DIGITS(num) ((NumericDigit *)(num)->n_data) #define NUMERIC_NDIGITS(num) \ - (((num)->varlen - NUMERIC_HDRSZ) / sizeof(NumericDigit)) + ((VARSIZE(num) - NUMERIC_HDRSZ) / sizeof(NumericDigit)) static void alloc_var(NumericVar *var, int ndigits); static void free_var(NumericVar *var); @@ -494,8 +494,8 @@ numeric(PG_FUNCTION_ARGS) */ if (typmod < (int32) (VARHDRSZ)) { - new = (Numeric) palloc(num->varlen); - memcpy(new, num, num->varlen); + new = (Numeric) palloc(VARSIZE(num)); + memcpy(new, num, VARSIZE(num)); PG_RETURN_NUMERIC(new); } @@ -515,8 +515,8 @@ numeric(PG_FUNCTION_ARGS) ddigits = (num->n_weight + 1) * DEC_DIGITS; if (ddigits <= maxdigits && scale >= NUMERIC_DSCALE(num)) { - new = (Numeric) palloc(num->varlen); - memcpy(new, num, num->varlen); + new = (Numeric) palloc(VARSIZE(num)); + memcpy(new, num, VARSIZE(num)); new->n_sign_dscale = NUMERIC_SIGN(new) | ((uint16) scale & NUMERIC_DSCALE_MASK); PG_RETURN_NUMERIC(new); @@ -621,8 +621,8 @@ numeric_abs(PG_FUNCTION_ARGS) /* * Do it the easy way directly on the packed format */ - res = (Numeric) palloc(num->varlen); - memcpy(res, num, num->varlen); + res = (Numeric) palloc(VARSIZE(num)); + memcpy(res, num, VARSIZE(num)); res->n_sign_dscale = NUMERIC_POS | NUMERIC_DSCALE(num); @@ -645,15 +645,15 @@ numeric_uminus(PG_FUNCTION_ARGS) /* * Do it the easy way directly on the packed format */ - res = (Numeric) palloc(num->varlen); - memcpy(res, num, num->varlen); + res = (Numeric) palloc(VARSIZE(num)); + memcpy(res, num, VARSIZE(num)); /* * The packed format is known to be totally zero digit trimmed always. So * we can identify a ZERO by the fact that there are no digits at all. Do * nothing to a zero. */ - if (num->varlen != NUMERIC_HDRSZ) + if (VARSIZE(num) != NUMERIC_HDRSZ) { /* Else, flip the sign */ if (NUMERIC_SIGN(num) == NUMERIC_POS) @@ -672,8 +672,8 @@ numeric_uplus(PG_FUNCTION_ARGS) Numeric num = PG_GETARG_NUMERIC(0); Numeric res; - res = (Numeric) palloc(num->varlen); - memcpy(res, num, num->varlen); + res = (Numeric) palloc(VARSIZE(num)); + memcpy(res, num, VARSIZE(num)); PG_RETURN_NUMERIC(res); } @@ -703,7 +703,7 @@ numeric_sign(PG_FUNCTION_ARGS) * The packed format is known to be totally zero digit trimmed always. So * we can identify a ZERO by the fact that there are no digits at all. */ - if (num->varlen == NUMERIC_HDRSZ) + if (VARSIZE(num) == NUMERIC_HDRSZ) set_var_from_var(&const_zero, &result); else { @@ -2105,7 +2105,7 @@ numeric_text(PG_FUNCTION_ARGS) result = (text *) palloc(VARHDRSZ + len); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, VARHDRSZ + len); memcpy(VARDATA(result), s, len); pfree(s); @@ -2301,7 +2301,7 @@ numeric_avg(PG_FUNCTION_ARGS) /* SQL92 defines AVG of no values to be NULL */ /* N is zero iff no digits (cf. numeric_uminus) */ - if (N->varlen == NUMERIC_HDRSZ) + if (VARSIZE(N) == NUMERIC_HDRSZ) PG_RETURN_NULL(); PG_RETURN_DATUM(DirectFunctionCall2(numeric_div, @@ -3232,7 +3232,7 @@ make_result(NumericVar *var) { result = (Numeric) palloc(NUMERIC_HDRSZ); - result->varlen = NUMERIC_HDRSZ; + SET_VARSIZE(result, NUMERIC_HDRSZ); result->n_weight = 0; result->n_sign_dscale = NUMERIC_NAN; @@ -3263,7 +3263,7 @@ make_result(NumericVar *var) /* Build the result */ len = NUMERIC_HDRSZ + n * sizeof(NumericDigit); result = (Numeric) palloc(len); - result->varlen = len; + SET_VARSIZE(result, len); result->n_weight = weight; result->n_sign_dscale = sign | (var->dscale & NUMERIC_DSCALE_MASK); diff --git a/src/backend/utils/adt/oid.c b/src/backend/utils/adt/oid.c index 42a44eed758448a05233b99e08942ec6e5dc1386..8a9f971a227fbcb59c236599ba98c26f62783d1e 100644 --- a/src/backend/utils/adt/oid.c +++ b/src/backend/utils/adt/oid.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.70 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.71 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -174,7 +174,7 @@ buildoidvector(const Oid *oids, int n) * Attach standard array header. For historical reasons, we set the index * lower bound to 0 not 1. */ - result->size = OidVectorSize(n); + SET_VARSIZE(result, OidVectorSize(n)); result->ndim = 1; result->dataoffset = 0; /* never any nulls */ result->elemtype = OIDOID; @@ -211,7 +211,7 @@ oidvectorin(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("oidvector has too many elements"))); - result->size = OidVectorSize(n); + SET_VARSIZE(result, OidVectorSize(n)); result->ndim = 1; result->dataoffset = 0; /* never any nulls */ result->elemtype = OIDOID; @@ -434,7 +434,7 @@ oid_text(PG_FUNCTION_ARGS) result = (text *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), str, (len - VARHDRSZ)); pfree(str); diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c index 6da6b30cca3b862a7821ddc40f8698a215c28a87..9fcd5ae747aaf63964bf5eaaf1bbffe7d59a4397 100644 --- a/src/backend/utils/adt/oracle_compat.c +++ b/src/backend/utils/adt/oracle_compat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/oracle_compat.c,v 1.69 2007/02/08 18:19:33 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/oracle_compat.c,v 1.70 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -144,7 +144,7 @@ wcstotext(const wchar_t *str, int ncodes) Assert(nbytes <= (size_t) (ncodes * MB_CUR_MAX)); - VARATT_SIZEP(result) = nbytes + VARHDRSZ; + SET_VARSIZE(result, nbytes + VARHDRSZ); return result; } @@ -229,7 +229,7 @@ win32_utf8_wcstotext(const wchar_t *str) errmsg("UTF-16 to UTF-8 translation failed: %lu", GetLastError()))); - VARATT_SIZEP(result) = nbytes + VARHDRSZ - 1; /* -1 to ignore null */ + SET_VARSIZE(result, nbytes + VARHDRSZ - 1); /* -1 to ignore null */ return result; } @@ -278,7 +278,7 @@ wstring_upper(char *str) in_text = palloc(nbytes + VARHDRSZ); memcpy(VARDATA(in_text), str, nbytes); - VARATT_SIZEP(in_text) = nbytes + VARHDRSZ; + SET_VARSIZE(in_text, nbytes + VARHDRSZ); workspace = texttowcs(in_text); @@ -312,7 +312,7 @@ wstring_lower(char *str) in_text = palloc(nbytes + VARHDRSZ); memcpy(VARDATA(in_text), str, nbytes); - VARATT_SIZEP(in_text) = nbytes + VARHDRSZ; + SET_VARSIZE(in_text, nbytes + VARHDRSZ); workspace = texttowcs(in_text); @@ -639,7 +639,7 @@ lpad(PG_FUNCTION_ARGS) ptr1 += mlen; } - VARATT_SIZEP(ret) = ptr_ret - (char *) ret; + SET_VARSIZE(ret, ptr_ret - (char *) ret); PG_RETURN_TEXT_P(ret); } @@ -735,7 +735,7 @@ rpad(PG_FUNCTION_ARGS) ptr2 = VARDATA(string2); } - VARATT_SIZEP(ret) = ptr_ret - (char *) ret; + SET_VARSIZE(ret, ptr_ret - (char *) ret); PG_RETURN_TEXT_P(ret); } @@ -944,7 +944,7 @@ dotrim(const char *string, int stringlen, /* Return selected portion of string */ result = (text *) palloc(VARHDRSZ + stringlen); - VARATT_SIZEP(result) = VARHDRSZ + stringlen; + SET_VARSIZE(result, VARHDRSZ + stringlen); memcpy(VARDATA(result), string, stringlen); return result; @@ -1017,7 +1017,7 @@ byteatrim(PG_FUNCTION_ARGS) } ret = (bytea *) palloc(VARHDRSZ + m); - VARATT_SIZEP(ret) = VARHDRSZ + m; + SET_VARSIZE(ret, VARHDRSZ + m); memcpy(VARDATA(ret), ptr, m); PG_RETURN_BYTEA_P(ret); @@ -1223,7 +1223,7 @@ translate(PG_FUNCTION_ARGS) m -= source_len; } - VARATT_SIZEP(result) = retlen + VARHDRSZ; + SET_VARSIZE(result, retlen + VARHDRSZ); /* * There may be some wasted space in the result if deletions occurred, but @@ -1275,13 +1275,13 @@ ascii(PG_FUNCTION_ARGS) ********************************************************************/ Datum -chr (PG_FUNCTION_ARGS) +chr(PG_FUNCTION_ARGS) { int32 cvalue = PG_GETARG_INT32(0); text *result; result = (text *) palloc(VARHDRSZ + 1); - VARATT_SIZEP(result) = VARHDRSZ + 1; + SET_VARSIZE(result, VARHDRSZ + 1); *VARDATA(result) = (char) cvalue; PG_RETURN_TEXT_P(result); @@ -1332,7 +1332,7 @@ repeat(PG_FUNCTION_ARGS) result = (text *) palloc(tlen); - VARATT_SIZEP(result) = tlen; + SET_VARSIZE(result, tlen); cp = VARDATA(result); for (i = 0; i < count; i++) { diff --git a/src/backend/utils/adt/pg_lzcompress.c b/src/backend/utils/adt/pg_lzcompress.c index 918f7bad7ffb06235ef6374dd3c5a382b1314472..c756e5707a5ae20368dffe7a179274ecebb03a24 100644 --- a/src/backend/utils/adt/pg_lzcompress.c +++ b/src/backend/utils/adt/pg_lzcompress.c @@ -45,7 +45,7 @@ * PGLZ_Header is defined as * * typedef struct PGLZ_Header { - * int32 varsize; + * int32 vl_len_; * int32 rawsize; * } * @@ -54,7 +54,7 @@ * The data representation is easiest explained by describing * the process of decompression. * - * If varsize == rawsize + sizeof(PGLZ_Header), then the data + * If VARSIZE(x) == rawsize + sizeof(PGLZ_Header), then the data * is stored uncompressed as plain bytes. Thus, the decompressor * simply copies rawsize bytes from the location after the * header to the destination. @@ -166,7 +166,7 @@ * * Copyright (c) 1999-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.24 2007/01/20 01:08:42 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.25 2007/02/27 23:48:08 tgl Exp $ * ---------- */ #include "postgres.h" @@ -618,7 +618,7 @@ pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, /* * Success - need only fill in the actual length of the compressed datum. */ - dest->varsize = result_size + sizeof(PGLZ_Header); + SET_VARSIZE(dest, result_size + sizeof(PGLZ_Header)); return true; } @@ -643,7 +643,7 @@ pglz_decompress(const PGLZ_Header *source, char *dest) int32 destsize; dp = ((const unsigned char *) source) + sizeof(PGLZ_Header); - dend = ((const unsigned char *) source) + VARATT_SIZE(source); + dend = ((const unsigned char *) source) + VARSIZE(source); bp = (unsigned char *) dest; while (dp < dend) diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index d011fff76f8495064ce0f37f2ded9d6b5ddb4c4f..50624d6e7281fbba45c43b75bb6f97d4461ebfcc 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.38 2007/02/07 23:11:29 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.39 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -398,7 +398,7 @@ pg_stat_get_backend_activity(PG_FUNCTION_ARGS) len = strlen(activity); result = palloc(VARHDRSZ + len); - VARATT_SIZEP(result) = VARHDRSZ + len; + SET_VARSIZE(result, VARHDRSZ + len); memcpy(VARDATA(result), activity, len); PG_RETURN_TEXT_P(result); diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c index 3cc7f03007adfaed761a2e515e4466d3d2f5621e..31fbf57aaf8a6a77e8a2455d08db699d98a0fd47 100644 --- a/src/backend/utils/adt/quote.c +++ b/src/backend/utils/adt/quote.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.21 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.22 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -39,7 +39,7 @@ quote_ident(PG_FUNCTION_ARGS) len = strlen(qstr); result = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, len + VARHDRSZ); memcpy(VARDATA(result), qstr, len); PG_RETURN_TEXT_P(result); @@ -92,7 +92,7 @@ quote_literal(PG_FUNCTION_ARGS) } *cp2++ = '\''; - VARATT_SIZEP(result) = cp2 - ((char *) result); + SET_VARSIZE(result, cp2 - ((char *) result)); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 48a70820a30c4d0010276c971e6a3a2edcecf745..6a7a5fcc13be2d29721e7720e10ded16a4eeaa26 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.68 2007/01/05 22:19:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.69 2007/02/27 23:48:08 tgl Exp $ * * Alistair Crooks added the code for the regex caching * agc - cached the regular expressions used - there's a good chance @@ -620,7 +620,7 @@ similar_escape(PG_FUNCTION_ARGS) *r++ = ')'; *r++ = '$'; - VARATT_SIZEP(result) = r - ((char *) result); + SET_VARSIZE(result, r - ((char *) result)); PG_RETURN_TEXT_P(result); } diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 765b3c65c3060f03ed93b04dc7b2a20741f2c1a7..f17061738a4a8d3ac9a1d1e517025d7d4c3338bf 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.251 2007/02/23 21:59:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.252 2007/02/27 23:48:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -5298,7 +5298,7 @@ string_to_text(char *str) tlen = slen + VARHDRSZ; result = (text *) palloc(tlen); - VARATT_SIZEP(result) = tlen; + SET_VARSIZE(result, tlen); memcpy(VARDATA(result), str, slen); pfree(str); diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index f25a8d8f70de62575cec804b5bedd90b5efdbb6b..1588ac405a2fa6e0cf846aec5c908347c82a9be6 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.227 2007/02/22 22:00:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.228 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -4731,7 +4731,7 @@ string_to_bytea_const(const char *str, size_t str_len) Datum conval; memcpy(VARDATA(bstr), str, str_len); - VARATT_SIZEP(bstr) = VARHDRSZ + str_len; + SET_VARSIZE(bstr, VARHDRSZ + str_len); conval = PointerGetDatum(bstr); return makeConst(BYTEAOID, -1, conval, false, false); diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index a842c1b02cf2a7f57621ccc6cf846b764fd58044..e9d1efe3ed1c2b39b44c96ad8051b360fbde14d6 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.173 2007/02/19 17:41:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.174 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3199,8 +3199,8 @@ timestamp_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, len - VARHDRSZ); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, len - VARHDRSZ); pfree(str); @@ -3260,8 +3260,8 @@ timestamptz_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, len - VARHDRSZ); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, len - VARHDRSZ); pfree(str); @@ -3320,8 +3320,8 @@ interval_text(PG_FUNCTION_ARGS) result = palloc(len); - VARATT_SIZEP(result) = len; - memmove(VARDATA(result), str, len - VARHDRSZ); + SET_VARSIZE(result, len); + memcpy(VARDATA(result), str, len - VARHDRSZ); pfree(str); diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 5b5c4aa5a57a2d02174a6d982a14156e13241d4c..a9eef1e0e7d078c61a8f44f46ad60fef85a86739 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -9,7 +9,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.52 2007/01/05 22:19:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.53 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -160,7 +160,7 @@ bit_in(PG_FUNCTION_ARGS) len = VARBITTOTALLEN(atttypmod); /* set to 0 so that *r is always initialised and string is zero-padded */ result = (VarBit *) palloc0(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = atttypmod; r = VARBITS(result); @@ -299,7 +299,7 @@ bit_recv(PG_FUNCTION_ARGS) len = VARBITTOTALLEN(bitlen); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = bitlen; pq_copymsgbytes(buf, (char *) VARBITS(result), VARBITBYTES(result)); @@ -356,7 +356,7 @@ bit(PG_FUNCTION_ARGS) rlen = VARBITTOTALLEN(len); /* set to 0 so that string is zero-padded */ result = (VarBit *) palloc0(rlen); - VARATT_SIZEP(result) = rlen; + SET_VARSIZE(result, rlen); VARBITLEN(result) = len; memcpy(VARBITS(result), VARBITS(arg), @@ -458,7 +458,7 @@ varbit_in(PG_FUNCTION_ARGS) len = VARBITTOTALLEN(bitlen); /* set to 0 so that *r is always initialised and string is zero-padded */ result = (VarBit *) palloc0(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = Min(bitlen, atttypmod); r = VARBITS(result); @@ -595,7 +595,7 @@ varbit_recv(PG_FUNCTION_ARGS) len = VARBITTOTALLEN(bitlen); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = bitlen; pq_copymsgbytes(buf, (char *) VARBITS(result), VARBITBYTES(result)); @@ -656,7 +656,7 @@ varbit(PG_FUNCTION_ARGS) rlen = VARBITTOTALLEN(len); result = (VarBit *) palloc(rlen); - VARATT_SIZEP(result) = rlen; + SET_VARSIZE(result, rlen); VARBITLEN(result) = len; memcpy(VARBITS(result), VARBITS(arg), VARBITBYTES(result)); @@ -884,7 +884,7 @@ bitcat(PG_FUNCTION_ARGS) bytelen = VARBITTOTALLEN(bitlen1 + bitlen2); result = (VarBit *) palloc(bytelen); - VARATT_SIZEP(result) = bytelen; + SET_VARSIZE(result, bytelen); VARBITLEN(result) = bitlen1 + bitlen2; /* Copy the first bitstring in */ @@ -951,7 +951,7 @@ bitsubstr(PG_FUNCTION_ARGS) /* Need to return a zero-length bitstring */ len = VARBITTOTALLEN(0); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = 0; } else @@ -963,7 +963,7 @@ bitsubstr(PG_FUNCTION_ARGS) rbitlen = e1 - s1; len = VARBITTOTALLEN(rbitlen); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = rbitlen; len -= VARHDRSZ + VARBITHDRSZ; /* Are we copying from a byte boundary? */ @@ -1044,7 +1044,7 @@ bitand(PG_FUNCTION_ARGS) len = VARSIZE(arg1); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = bitlen1; p1 = VARBITS(arg1); @@ -1084,7 +1084,7 @@ bitor(PG_FUNCTION_ARGS) errmsg("cannot OR bit strings of different sizes"))); len = VARSIZE(arg1); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = bitlen1; p1 = VARBITS(arg1); @@ -1131,7 +1131,7 @@ bitxor(PG_FUNCTION_ARGS) len = VARSIZE(arg1); result = (VarBit *) palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); VARBITLEN(result) = bitlen1; p1 = VARBITS(arg1); @@ -1164,7 +1164,7 @@ bitnot(PG_FUNCTION_ARGS) bits8 mask; result = (VarBit *) palloc(VARSIZE(arg)); - VARATT_SIZEP(result) = VARSIZE(arg); + SET_VARSIZE(result, VARSIZE(arg)); VARBITLEN(result) = VARBITLEN(arg); p = VARBITS(arg); @@ -1205,7 +1205,7 @@ bitshiftleft(PG_FUNCTION_ARGS) Int32GetDatum(-shft))); result = (VarBit *) palloc(VARSIZE(arg)); - VARATT_SIZEP(result) = VARSIZE(arg); + SET_VARSIZE(result, VARSIZE(arg)); VARBITLEN(result) = VARBITLEN(arg); r = VARBITS(result); @@ -1264,7 +1264,7 @@ bitshiftright(PG_FUNCTION_ARGS) Int32GetDatum(-shft))); result = (VarBit *) palloc(VARSIZE(arg)); - VARATT_SIZEP(result) = VARSIZE(arg); + SET_VARSIZE(result, VARSIZE(arg)); VARBITLEN(result) = VARBITLEN(arg); r = VARBITS(result); @@ -1324,7 +1324,7 @@ bitfromint4(PG_FUNCTION_ARGS) rlen = VARBITTOTALLEN(typmod); result = (VarBit *) palloc(rlen); - VARATT_SIZEP(result) = rlen; + SET_VARSIZE(result, rlen); VARBITLEN(result) = typmod; r = VARBITS(result); @@ -1399,7 +1399,7 @@ bitfromint8(PG_FUNCTION_ARGS) rlen = VARBITTOTALLEN(typmod); result = (VarBit *) palloc(rlen); - VARATT_SIZEP(result) = rlen; + SET_VARSIZE(result, rlen); VARBITLEN(result) = typmod; r = VARBITS(result); diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 8bc6ed5e6a1f7ab52f45ee80be21ecdb1e3cc70e..371a8a605d677cf5d363e0141217fafd6afc20bc 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.121 2007/01/05 22:19:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.122 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -169,7 +169,7 @@ bpchar_input(const char *s, size_t len, int32 atttypmod) } result = (BpChar *) palloc(maxlen + VARHDRSZ); - VARATT_SIZEP(result) = maxlen + VARHDRSZ; + SET_VARSIZE(result, maxlen + VARHDRSZ); r = VARDATA(result); memcpy(r, s, len); @@ -328,7 +328,7 @@ bpchar(PG_FUNCTION_ARGS) s = VARDATA(source); result = palloc(maxlen); - VARATT_SIZEP(result) = maxlen; + SET_VARSIZE(result, maxlen); r = VARDATA(result); memcpy(r, s, len - VARHDRSZ); @@ -352,7 +352,7 @@ char_bpchar(PG_FUNCTION_ARGS) result = (BpChar *) palloc(VARHDRSZ + 1); - VARATT_SIZEP(result) = VARHDRSZ + 1; + SET_VARSIZE(result, VARHDRSZ + 1); *(VARDATA(result)) = c; PG_RETURN_BPCHAR_P(result); @@ -409,7 +409,7 @@ name_bpchar(PG_FUNCTION_ARGS) len = strlen(NameStr(*s)); result = (BpChar *) palloc(VARHDRSZ + len); memcpy(VARDATA(result), NameStr(*s), len); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, VARHDRSZ + len); PG_RETURN_BPCHAR_P(result); } @@ -477,7 +477,7 @@ varchar_input(const char *s, size_t len, int32 atttypmod) } result = (VarChar *) palloc(len + VARHDRSZ); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, len + VARHDRSZ); memcpy(VARDATA(result), s, len); return result; @@ -601,7 +601,7 @@ varchar(PG_FUNCTION_ARGS) len = maxmblen + VARHDRSZ; result = palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), VARDATA(source), len - VARHDRSZ); PG_RETURN_VARCHAR_P(result); diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 1992db9bdfa9947253483da9c77a1b26422cdf94..51130efd79b2bc9a935a75d901ba06fe3a7a25d1 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.154 2007/01/05 22:19:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.155 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -124,7 +124,7 @@ byteain(PG_FUNCTION_ARGS) byte += VARHDRSZ; result = (bytea *) palloc(byte); - VARATT_SIZEP(result) = byte; /* set varlena length */ + SET_VARSIZE(result, byte); tp = inputText; rp = VARDATA(result); @@ -233,7 +233,7 @@ bytearecv(PG_FUNCTION_ARGS) nbytes = buf->len - buf->cursor; result = (bytea *) palloc(nbytes + VARHDRSZ); - VARATT_SIZEP(result) = nbytes + VARHDRSZ; + SET_VARSIZE(result, nbytes + VARHDRSZ); pq_copymsgbytes(buf, VARDATA(result), nbytes); PG_RETURN_BYTEA_P(result); } @@ -264,7 +264,7 @@ textin(PG_FUNCTION_ARGS) len = strlen(inputText); result = (text *) palloc(len + VARHDRSZ); - VARATT_SIZEP(result) = len + VARHDRSZ; + SET_VARSIZE(result, len + VARHDRSZ); memcpy(VARDATA(result), inputText, len); @@ -303,7 +303,7 @@ textrecv(PG_FUNCTION_ARGS) str = pq_getmsgtext(buf, buf->len - buf->cursor, &nbytes); result = (text *) palloc(nbytes + VARHDRSZ); - VARATT_SIZEP(result) = nbytes + VARHDRSZ; + SET_VARSIZE(result, nbytes + VARHDRSZ); memcpy(VARDATA(result), str, nbytes); pfree(str); PG_RETURN_TEXT_P(result); @@ -466,7 +466,7 @@ textcat(PG_FUNCTION_ARGS) result = (text *) palloc(len); /* Set size of result string... */ - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); /* Fill data field of result string... */ ptr = VARDATA(result); @@ -737,7 +737,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) p += pg_mblen(p); ret = (text *) palloc(VARHDRSZ + (p - s)); - VARATT_SIZEP(ret) = VARHDRSZ + (p - s); + SET_VARSIZE(ret, VARHDRSZ + (p - s)); memcpy(VARDATA(ret), s, (p - s)); if (slice != (text *) DatumGetPointer(str)) @@ -1409,7 +1409,7 @@ byteacat(PG_FUNCTION_ARGS) result = (bytea *) palloc(len); /* Set size of result string... */ - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); /* Fill data field of result string... */ ptr = VARDATA(result); @@ -1761,7 +1761,7 @@ name_text(PG_FUNCTION_ARGS) #endif result = palloc(VARHDRSZ + len); - VARATT_SIZEP(result) = VARHDRSZ + len; + SET_VARSIZE(result, VARHDRSZ + len); memcpy(VARDATA(result), NameStr(*s), len); PG_RETURN_TEXT_P(result); @@ -2593,7 +2593,7 @@ text_to_array(PG_FUNCTION_ARGS) /* must build a temp text datum to pass to accumArrayResult */ result_text = (text *) palloc(VARHDRSZ + chunk_len); - VARATT_SIZEP(result_text) = VARHDRSZ + chunk_len; + SET_VARSIZE(result_text, VARHDRSZ + chunk_len); memcpy(VARDATA(result_text), start_ptr, chunk_len); /* stash away this field */ diff --git a/src/backend/utils/adt/version.c b/src/backend/utils/adt/version.c index 19d75db513ea0998dcd5ac5cf950ac4970e1f6d6..7afbcd43581633dc910374361b52ca4a53ba0052 100644 --- a/src/backend/utils/adt/version.c +++ b/src/backend/utils/adt/version.c @@ -7,7 +7,7 @@ * * IDENTIFICATION * - * $PostgreSQL: pgsql/src/backend/utils/adt/version.c,v 1.14 2007/01/20 01:08:42 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/version.c,v 1.15 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ pgsql_version(PG_FUNCTION_ARGS) int n = strlen(PG_VERSION_STR); text *ret = (text *) palloc(n + VARHDRSZ); - VARATT_SIZEP(ret) = n + VARHDRSZ; + SET_VARSIZE(ret, n + VARHDRSZ); memcpy(VARDATA(ret), PG_VERSION_STR, n); PG_RETURN_TEXT_P(ret); diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index f814d7f543e327a7ed30d1da1a189c1451371604..c12522cfe4537d7ce73b197408e883a69b427c3b 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.31 2007/02/16 18:37:43 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.32 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -128,7 +128,7 @@ xml_in(PG_FUNCTION_ARGS) len = strlen(s); vardata = palloc(len + VARHDRSZ); - VARATT_SIZEP(vardata) = len + VARHDRSZ; + SET_VARSIZE(vardata, len + VARHDRSZ); memcpy(VARDATA(vardata), s, len); /* @@ -225,7 +225,7 @@ xml_recv(PG_FUNCTION_ARGS) str = pq_getmsgtext(buf, buf->len - buf->cursor, &nbytes); result = palloc(nbytes + VARHDRSZ); - VARATT_SIZEP(result) = nbytes + VARHDRSZ; + SET_VARSIZE(result, nbytes + VARHDRSZ); memcpy(VARDATA(result), str, nbytes); parse_xml_decl((xmlChar *) str, NULL, NULL, &encoding, NULL); @@ -251,7 +251,7 @@ xml_recv(PG_FUNCTION_ARGS) nbytes = strlen(newstr); result = palloc(nbytes + VARHDRSZ); - VARATT_SIZEP(result) = nbytes + VARHDRSZ; + SET_VARSIZE(result, nbytes + VARHDRSZ); memcpy(VARDATA(result), newstr, nbytes); } @@ -293,7 +293,7 @@ stringinfo_to_xmltype(StringInfo buf) len = buf->len + VARHDRSZ; result = palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), buf->data, buf->len); return result; @@ -308,7 +308,7 @@ cstring_to_xmltype(const char *string) len = strlen(string) + VARHDRSZ; result = palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), string, len - VARHDRSZ); return result; @@ -324,7 +324,7 @@ xmlBuffer_to_xmltype(xmlBufferPtr buf) len = xmlBufferLength(buf) + VARHDRSZ; result = palloc(len); - VARATT_SIZEP(result) = len; + SET_VARSIZE(result, len); memcpy(VARDATA(result), xmlBufferContent(buf), len - VARHDRSZ); return result; diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index da1f9fd924052e2694977dd90e9c8b23483e4433..ae41b169c3defee1db52cf70ac00eacdfef3ddf6 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.255 2007/01/25 02:17:26 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.256 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3244,7 +3244,7 @@ load_relcache_init_file(void) rel->rd_options = palloc(len); if ((nread = fread(rel->rd_options, 1, len, fp)) != len) goto read_failed; - if (len != VARATT_SIZE(rel->rd_options)) + if (len != VARSIZE(rel->rd_options)) goto read_failed; /* sanity check */ } else @@ -3540,7 +3540,7 @@ write_relcache_init_file(void) /* next, do the access method specific field */ write_item(rel->rd_options, - (rel->rd_options ? VARATT_SIZE(rel->rd_options) : 0), + (rel->rd_options ? VARSIZE(rel->rd_options) : 0), fp); /* If it's an index, there's more to do */ diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c index f462ba44b959d2028e80284eb93639686fb9a720..cee6807d66c004b5097c03934f0bedb352c15834 100644 --- a/src/backend/utils/mb/mbutils.c +++ b/src/backend/utils/mb/mbutils.c @@ -4,7 +4,7 @@ * (currently mule internal code (mic) is used) * Tatsuo Ishii * - * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.61 2006/12/24 00:57:48 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.62 2007/02/27 23:48:09 tgl Exp $ */ #include "postgres.h" @@ -339,7 +339,7 @@ pg_convert2(PG_FUNCTION_ARGS) */ len = strlen((char *) result) + VARHDRSZ; retval = palloc(len); - VARATT_SIZEP(retval) = len; + SET_VARSIZE(retval, len); memcpy(VARDATA(retval), result, len - VARHDRSZ); if (result != str) diff --git a/src/include/access/htup.h b/src/include/access/htup.h index 31de835d2900aa9523d5b8e229f218e2e132acf6..c37501d9109f0b59a89c13748dc8ee6d66cf0ff0 100644 --- a/src/include/access/htup.h +++ b/src/include/access/htup.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.91 2007/02/09 03:35:34 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.92 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -115,7 +115,7 @@ typedef struct HeapTupleFields typedef struct DatumTupleFields { - int32 datum_len; /* required to be a varlena type */ + int32 datum_len_; /* varlena header (do not touch directly!) */ int32 datum_typmod; /* -1, or identifier of a record type */ @@ -260,14 +260,10 @@ do { \ } while (0) #define HeapTupleHeaderGetDatumLength(tup) \ -( \ - (tup)->t_choice.t_datum.datum_len \ -) + VARSIZE(tup) #define HeapTupleHeaderSetDatumLength(tup, len) \ -( \ - (tup)->t_choice.t_datum.datum_len = (len) \ -) + SET_VARSIZE(tup, len) #define HeapTupleHeaderGetTypeId(tup) \ ( \ diff --git a/src/include/access/tupmacs.h b/src/include/access/tupmacs.h index 0b65cbd2bc60d01dc0ad14411bcfcf95cc2148d2..80c2d436f047ce5f5935c957627a5f0a005c68fa 100644 --- a/src/include/access/tupmacs.h +++ b/src/include/access/tupmacs.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/tupmacs.h,v 1.31 2007/01/05 22:19:51 momjian Exp $ + * $PostgreSQL: pgsql/src/include/access/tupmacs.h,v 1.32 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -118,7 +118,7 @@ ) \ : (((attlen) == -1) ? \ ( \ - (cur_offset) + VARATT_SIZE(DatumGetPointer(attval)) \ + (cur_offset) + VARSIZE(DatumGetPointer(attval)) \ ) \ : \ ( \ diff --git a/src/include/c.h b/src/include/c.h index 0774ec7cc1e636ad7706d8763de802e905102c4f..73b72a816adba16532c55eea268feb2e6ad5769c 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/c.h,v 1.218 2007/02/05 04:22:18 tgl Exp $ + * $PostgreSQL: pgsql/src/include/c.h,v 1.219 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -399,13 +399,16 @@ typedef struct * NOTE: for TOASTable types, this is an oversimplification, since the value * may be compressed or moved out-of-line. However datatype-specific routines * are mostly content to deal with de-TOASTed values only, and of course - * client-side routines should never see a TOASTed value. See postgres.h for - * details of the TOASTed form. + * client-side routines should never see a TOASTed value. But even in a + * de-TOASTed value, beware of touching vl_len_ directly, as its representation + * is no longer convenient. It's recommended that code always use the VARDATA, + * VARSIZE, and SET_VARSIZE macros instead of relying on direct mentions of + * the struct fields. See postgres.h for details of the TOASTed form. * ---------------- */ struct varlena { - int32 vl_len; + int32 vl_len_; /* Do not touch this field directly! */ char vl_dat[1]; }; @@ -433,7 +436,7 @@ typedef struct varlena VarChar; /* var-length char, ie SQL varchar(n) */ */ typedef struct { - int32 size; /* these fields must match ArrayType! */ + int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for int2vector */ int32 dataoffset; /* always 0 for int2vector */ Oid elemtype; @@ -444,7 +447,7 @@ typedef struct typedef struct { - int32 size; /* these fields must match ArrayType! */ + int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for oidvector */ int32 dataoffset; /* always 0 for oidvector */ Oid elemtype; diff --git a/src/include/postgres.h b/src/include/postgres.h index 03ffd89f5d734420d511bc87f238ec2f9f562435..c06333573e2eeb17c8d1fcb3f8fe40e9edd0a4ff 100644 --- a/src/include/postgres.h +++ b/src/include/postgres.h @@ -10,7 +10,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/postgres.h,v 1.76 2007/01/05 22:19:50 momjian Exp $ + * $PostgreSQL: pgsql/src/include/postgres.h,v 1.77 2007/02/27 23:48:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -56,12 +56,13 @@ /* ---------------- * struct varattrib is the header of a varlena object that may have been - * TOASTed. + * TOASTed. Generally, only the code closely associated with TOAST logic + * should mess directly with struct varattrib or use the VARATT_FOO macros. * ---------------- */ typedef struct varattrib { - int32 va_header; /* External/compressed storage */ + int32 va_header_; /* External/compressed storage */ /* flags and item size */ union { @@ -88,20 +89,21 @@ typedef struct varattrib #define VARATT_MASK_FLAGS 0xc0000000 #define VARATT_MASK_SIZE 0x3fffffff -#define VARATT_SIZEP(_PTR) (((varattrib *)(_PTR))->va_header) -#define VARATT_SIZE(PTR) (VARATT_SIZEP(PTR) & VARATT_MASK_SIZE) -#define VARATT_DATA(PTR) (((varattrib *)(PTR))->va_content.va_data) -#define VARATT_CDATA(PTR) (((varattrib *)(PTR))->va_content.va_compressed.va_data) - -#define VARSIZE(__PTR) VARATT_SIZE(__PTR) -#define VARDATA(__PTR) VARATT_DATA(__PTR) +#define VARATT_SIZEP_DEPRECATED(PTR) (((varattrib *) (PTR))->va_header_) #define VARATT_IS_EXTENDED(PTR) \ - ((VARATT_SIZEP(PTR) & VARATT_MASK_FLAGS) != 0) + ((VARATT_SIZEP_DEPRECATED(PTR) & VARATT_MASK_FLAGS) != 0) #define VARATT_IS_EXTERNAL(PTR) \ - ((VARATT_SIZEP(PTR) & VARATT_FLAG_EXTERNAL) != 0) + ((VARATT_SIZEP_DEPRECATED(PTR) & VARATT_FLAG_EXTERNAL) != 0) #define VARATT_IS_COMPRESSED(PTR) \ - ((VARATT_SIZEP(PTR) & VARATT_FLAG_COMPRESSED) != 0) + ((VARATT_SIZEP_DEPRECATED(PTR) & VARATT_FLAG_COMPRESSED) != 0) + +/* These macros are the ones for non-TOAST code to use */ + +#define VARSIZE(PTR) (VARATT_SIZEP_DEPRECATED(PTR) & VARATT_MASK_SIZE) +#define VARDATA(PTR) (((varattrib *) (PTR))->va_content.va_data) + +#define SET_VARSIZE(PTR,SIZE) (VARATT_SIZEP_DEPRECATED(PTR) = (SIZE)) /* ---------------------------------------------------------------- diff --git a/src/include/utils/array.h b/src/include/utils/array.h index 77d5e04c89514b5282c55dc2a5eac160dadc2239..9176a8b288d6c6c493d59ecddc5ae73dc16155ef 100644 --- a/src/include/utils/array.h +++ b/src/include/utils/array.h @@ -4,7 +4,7 @@ * Declarations for Postgres arrays. * * A standard varlena array has the following internal structure: - * <size> - total number of bytes (also, TOAST info flags) + * <vl_len_> - standard varlena header word * <ndim> - number of dimensions of the array * <dataoffset> - offset to stored data, or 0 if no nulls bitmap * <elemtype> - element type OID @@ -49,7 +49,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.62 2007/01/05 22:19:58 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.63 2007/02/27 23:48:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -61,18 +61,22 @@ /* * Arrays are varlena objects, so must meet the varlena convention that * the first int32 of the object contains the total object size in bytes. + * Be sure to use VARSIZE() and SET_VARSIZE() to access it, though! * * CAUTION: if you change the header for ordinary arrays you will also * need to change the headers for oidvector and int2vector! */ typedef struct { - int32 size; /* total array size (varlena requirement) */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int ndim; /* # of dimensions */ int32 dataoffset; /* offset to data, or 0 if no bitmap */ Oid elemtype; /* element type OID */ } ArrayType; +/* + * working state for accumArrayResult() and friends + */ typedef struct ArrayBuildState { MemoryContext mcontext; /* where all the temp stuff is kept */ @@ -132,7 +136,7 @@ typedef struct ArrayMapState * * Unlike C, the default lower bound is 1. */ -#define ARR_SIZE(a) ((a)->size) +#define ARR_SIZE(a) VARSIZE(a) #define ARR_NDIM(a) ((a)->ndim) #define ARR_HASNULL(a) ((a)->dataoffset != 0) #define ARR_ELEMTYPE(a) ((a)->elemtype) diff --git a/src/include/utils/geo_decls.h b/src/include/utils/geo_decls.h index 49e7aead3c85cc6eaa5e287420fe90ee07b6c142..09aefb752b8151d80050d91ded44c776cf2a6a12 100644 --- a/src/include/utils/geo_decls.h +++ b/src/include/utils/geo_decls.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/geo_decls.h,v 1.52 2007/01/05 22:19:59 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/geo_decls.h,v 1.53 2007/02/27 23:48:10 tgl Exp $ * * NOTE * These routines do *not* use the float types from adt/. @@ -78,7 +78,7 @@ typedef struct *-------------------------------------------------------------------*/ typedef struct { - int32 size; /* XXX varlena */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int32 npts; int32 closed; /* is this a closed polygon? */ int32 dummy; /* padding to make it double align */ @@ -121,7 +121,7 @@ typedef struct *-------------------------------------------------------------------*/ typedef struct { - int32 size; /* XXX varlena */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int32 npts; BOX boundbox; Point p[1]; /* variable length array of POINTs */ diff --git a/src/include/utils/numeric.h b/src/include/utils/numeric.h index c4d9d69debefe367c45fdd82c7c5ff20c2884d0f..cffba1e164197e57308d1267309f1b398a1c4cfb 100644 --- a/src/include/utils/numeric.h +++ b/src/include/utils/numeric.h @@ -7,7 +7,7 @@ * * Copyright (c) 1998-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/utils/numeric.h,v 1.23 2007/01/05 22:19:59 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/numeric.h,v 1.24 2007/02/27 23:48:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -62,7 +62,7 @@ */ typedef struct NumericData { - int32 varlen; /* Variable size (std varlena header) */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int16 n_weight; /* Weight of 1st digit */ uint16 n_sign_dscale; /* Sign + display scale */ char n_data[1]; /* Digits (really array of NumericDigit) */ @@ -70,7 +70,7 @@ typedef struct NumericData typedef NumericData *Numeric; -#define NUMERIC_HDRSZ (sizeof(int32) + sizeof(int16) + sizeof(uint16)) +#define NUMERIC_HDRSZ (VARHDRSZ + sizeof(int16) + sizeof(uint16)) /* diff --git a/src/include/utils/pg_lzcompress.h b/src/include/utils/pg_lzcompress.h index e6609dc8db3458f333ded17da85ca837196a0506..bed75d9af17e8b5d949ead8f73f80f2e697a37c7 100644 --- a/src/include/utils/pg_lzcompress.h +++ b/src/include/utils/pg_lzcompress.h @@ -3,7 +3,7 @@ * * Definitions for the builtin LZ compressor * - * $PostgreSQL: pgsql/src/include/utils/pg_lzcompress.h,v 1.13 2006/10/05 23:33:33 tgl Exp $ + * $PostgreSQL: pgsql/src/include/utils/pg_lzcompress.h,v 1.14 2007/02/27 23:48:10 tgl Exp $ * ---------- */ @@ -15,13 +15,11 @@ * PGLZ_Header - * * The information at the top of the compressed data. - * The varsize must be kept the same data type as the value - * in front of all variable size data types in PostgreSQL. * ---------- */ typedef struct PGLZ_Header { - int32 varsize; + int32 vl_len_; /* varlena header (do not touch directly!) */ int32 rawsize; } PGLZ_Header; diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index 3ac44b11cdc07006b88014225efdf0f8a4430732..4065eced8211d896e1d7836d9253fbffc0689846 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/rel.h,v 1.97 2007/02/14 01:58:58 tgl Exp $ + * $PostgreSQL: pgsql/src/include/utils/rel.h,v 1.98 2007/02/27 23:48:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -222,7 +222,7 @@ typedef Relation *RelationPtr; */ typedef struct StdRdOptions { - int32 vl_len; /* required to be a bytea */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int fillfactor; /* page fill factor in percent (0..100) */ } StdRdOptions; diff --git a/src/include/utils/varbit.h b/src/include/utils/varbit.h index 6909da77374af94fb8783ac96244406421bbc67b..6c9504d6a08c9e6f21a6c9a24fb38a383a3802cb 100644 --- a/src/include/utils/varbit.h +++ b/src/include/utils/varbit.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/varbit.h,v 1.25 2007/01/05 22:20:00 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/varbit.h,v 1.26 2007/02/27 23:48:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -22,8 +22,7 @@ */ typedef struct { - int32 vl_len; /* standard varlena header (total size in - * bytes) */ + int32 vl_len_; /* varlena header (do not touch directly!) */ int32 bit_len; /* number of valid bits */ bits8 bit_dat[1]; /* bit string, most sig. byte first */ } VarBit; diff --git a/src/tutorial/funcs.c b/src/tutorial/funcs.c index 18f8467dddb61812ae80a8c88649af81c6e181bd..f9f28a5c5eb7d43ce29d9357cf61a8594e27ad2d 100644 --- a/src/tutorial/funcs.c +++ b/src/tutorial/funcs.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/tutorial/funcs.c,v 1.16 2006/09/27 16:19:42 tgl Exp $ */ +/* $PostgreSQL: pgsql/src/tutorial/funcs.c,v 1.17 2007/02/27 23:48:10 tgl Exp $ */ /****************************************************************************** These are user-defined functions that can be bound to a Postgres backend @@ -71,7 +71,7 @@ copytext(text *t) */ text *new_t = (text *) palloc(VARSIZE(t)); - VARATT_SIZEP(new_t) = VARSIZE(t); + SET_VARSIZE(new_t, VARSIZE(t)); /* * VARDATA is a pointer to the data region of the struct. @@ -90,7 +90,7 @@ concat_text(text *arg1, text *arg2) int32 new_text_size = arg1_size + arg2_size + VARHDRSZ; text *new_text = (text *) palloc(new_text_size); - VARATT_SIZEP(new_text) = new_text_size; + SET_VARSIZE(new_text, new_text_size); memcpy(VARDATA(new_text), VARDATA(arg1), arg1_size); memcpy(VARDATA(new_text) + arg1_size, VARDATA(arg2), arg2_size); return new_text; diff --git a/src/tutorial/funcs_new.c b/src/tutorial/funcs_new.c index 88fff266c4ebc1e5c488388c2df21a75367de073..9811f5421b5a14a709728223007e26a38adb1a66 100644 --- a/src/tutorial/funcs_new.c +++ b/src/tutorial/funcs_new.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/tutorial/funcs_new.c,v 1.12 2006/09/27 16:19:42 tgl Exp $ */ +/* $PostgreSQL: pgsql/src/tutorial/funcs_new.c,v 1.13 2007/02/27 23:48:10 tgl Exp $ */ /****************************************************************************** These are user-defined functions that can be bound to a Postgres backend @@ -83,7 +83,7 @@ copytext(PG_FUNCTION_ARGS) */ text *new_t = (text *) palloc(VARSIZE(t)); - VARATT_SIZEP(new_t) = VARSIZE(t); + SET_VARSIZE(new_t, VARSIZE(t)); /* * VARDATA is a pointer to the data region of the struct. @@ -106,7 +106,7 @@ concat_text(PG_FUNCTION_ARGS) int32 new_text_size = arg1_size + arg2_size + VARHDRSZ; text *new_text = (text *) palloc(new_text_size); - VARATT_SIZEP(new_text) = new_text_size; + SET_VARSIZE(new_text, new_text_size); memcpy(VARDATA(new_text), VARDATA(arg1), arg1_size); memcpy(VARDATA(new_text) + arg1_size, VARDATA(arg2), arg2_size); PG_RETURN_TEXT_P(new_text);