Use wrappers of PG_DETOAST_DATUM_PACKED() more.
authorNoah Misch <[email protected]>
Sun, 12 Mar 2017 23:35:34 +0000 (19:35 -0400)
committerNoah Misch <[email protected]>
Sun, 12 Mar 2017 23:35:34 +0000 (19:35 -0400)
This makes almost all core code follow the policy introduced in the
previous commit.  Specific decisions:

- Text search support functions with char* and length arguments, such as
  prsstart and lexize, may receive unaligned strings.  I doubt
  maintainers of non-core text search code will notice.

- Use plain VARDATA() on values detoasted or synthesized earlier in the
  same function.  Use VARDATA_ANY() on varlenas sourced outside the
  function, even if they happen to always have four-byte headers.  As an
  exception, retain the universal practice of using VARDATA() on return
  values of SendFunctionCall().

- Retain PG_GETARG_BYTEA_P() in pageinspect.  (Page images are too large
  for a one-byte header, so this misses no optimization.)  Sites that do
  not call get_page_from_raw() typically need the four-byte alignment.

- For now, do not change btree_gist.  Its use of four-byte headers in
  memory is partly entangled with storage of 4-byte headers inside
  GBT_VARKEY, on disk.

- For now, do not change gtrgm_consistent() or gtrgm_distance().  They
  incorporate the varlena header into a cache, and there are multiple
  credible implementation strategies to consider.

59 files changed:
contrib/adminpack/adminpack.c
contrib/dblink/dblink.c
contrib/fuzzystrmatch/dmetaphone.c
contrib/fuzzystrmatch/fuzzystrmatch.c
contrib/intarray/_int_op.c
contrib/pageinspect/btreefuncs.c
contrib/pageinspect/rawpage.c
contrib/pg_prewarm/pg_prewarm.c
contrib/pg_trgm/trgm_gin.c
contrib/pg_trgm/trgm_gist.c
contrib/pg_trgm/trgm_op.c
contrib/pgcrypto/pgcrypto.c
contrib/pgcrypto/pgp-pgsql.c
contrib/pgrowlocks/pgrowlocks.c
contrib/pgstattuple/pgstatindex.c
contrib/pgstattuple/pgstattuple.c
contrib/sepgsql/label.c
contrib/spi/autoinc.c
contrib/sslinfo/sslinfo.c
contrib/unaccent/unaccent.c
contrib/uuid-ossp/uuid-ossp.c
contrib/xml2/xpath.c
contrib/xml2/xslt_proc.c
src/backend/access/spgist/spgtextproc.c
src/backend/access/transam/xlogfuncs.c
src/backend/commands/extension.c
src/backend/commands/sequence.c
src/backend/commands/trigger.c
src/backend/commands/tsearchcmds.c
src/backend/executor/execQual.c
src/backend/libpq/be-fsstubs.c
src/backend/replication/logical/origin.c
src/backend/tsearch/dict.c
src/backend/tsearch/to_tsany.c
src/backend/tsearch/wparser.c
src/backend/utils/adt/acl.c
src/backend/utils/adt/char.c
src/backend/utils/adt/dbsize.c
src/backend/utils/adt/encode.c
src/backend/utils/adt/formatting.c
src/backend/utils/adt/genfile.c
src/backend/utils/adt/json.c
src/backend/utils/adt/jsonb.c
src/backend/utils/adt/jsonfuncs.c
src/backend/utils/adt/like.c
src/backend/utils/adt/numeric.c
src/backend/utils/adt/quote.c
src/backend/utils/adt/rangetypes.c
src/backend/utils/adt/regproc.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/adt/tid.c
src/backend/utils/adt/tsquery_rewrite.c
src/backend/utils/adt/tsvector_op.c
src/backend/utils/adt/varlena.c
src/backend/utils/adt/xml.c
src/backend/utils/misc/rls.c
src/pl/plperl/Util.xs
src/pl/plpython/plpy_typeio.c

index a63ff36f05cebd27bc9323a417a59d61fe2ef6f5..10338f951ff2a4e650bb317db5a1ce2cc995e4d0 100644 (file)
@@ -124,8 +124,8 @@ pg_file_write(PG_FUNCTION_ARGS)
 
    requireSuperuser();
 
-   filename = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
-   data = PG_GETARG_TEXT_P(1);
+   filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+   data = PG_GETARG_TEXT_PP(1);
 
    if (!PG_GETARG_BOOL(2))
    {
@@ -147,8 +147,8 @@ pg_file_write(PG_FUNCTION_ARGS)
                 errmsg("could not open file \"%s\" for writing: %m",
                        filename)));
 
-   count = fwrite(VARDATA(data), 1, VARSIZE(data) - VARHDRSZ, f);
-   if (count != VARSIZE(data) - VARHDRSZ || FreeFile(f))
+   count = fwrite(VARDATA_ANY(data), 1, VARSIZE_ANY_EXHDR(data), f);
+   if (count != VARSIZE_ANY_EXHDR(data) || FreeFile(f))
        ereport(ERROR,
                (errcode_for_file_access(),
                 errmsg("could not write file \"%s\": %m", filename)));
@@ -170,12 +170,12 @@ pg_file_rename(PG_FUNCTION_ARGS)
    if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
        PG_RETURN_NULL();
 
-   fn1 = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
-   fn2 = convert_and_check_filename(PG_GETARG_TEXT_P(1), false);
+   fn1 = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+   fn2 = convert_and_check_filename(PG_GETARG_TEXT_PP(1), false);
    if (PG_ARGISNULL(2))
        fn3 = 0;
    else
-       fn3 = convert_and_check_filename(PG_GETARG_TEXT_P(2), false);
+       fn3 = convert_and_check_filename(PG_GETARG_TEXT_PP(2), false);
 
    if (access(fn1, W_OK) < 0)
    {
@@ -254,7 +254,7 @@ pg_file_unlink(PG_FUNCTION_ARGS)
 
    requireSuperuser();
 
-   filename = convert_and_check_filename(PG_GETARG_TEXT_P(0), false);
+   filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
 
    if (access(filename, W_OK) < 0)
    {
index eba6f274dc68e0277f60bb7d1cae5233c36c82c9..1266a77530696e91f605edc6f6c5175d584e7269 100644 (file)
@@ -1502,7 +1502,7 @@ dblink_get_pkey(PG_FUNCTION_ARGS)
        oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
 
        /* open target relation */
-       rel = get_rel_from_relname(PG_GETARG_TEXT_P(0), AccessShareLock, ACL_SELECT);
+       rel = get_rel_from_relname(PG_GETARG_TEXT_PP(0), AccessShareLock, ACL_SELECT);
 
        /* get the array of attnums */
        results = get_pkey_attnames(rel, &numatts);
@@ -1603,7 +1603,7 @@ PG_FUNCTION_INFO_V1(dblink_build_sql_insert);
 Datum
 dblink_build_sql_insert(PG_FUNCTION_ARGS)
 {
-   text       *relname_text = PG_GETARG_TEXT_P(0);
+   text       *relname_text = PG_GETARG_TEXT_PP(0);
    int2vector *pkattnums_arg = (int2vector *) PG_GETARG_POINTER(1);
    int32       pknumatts_arg = PG_GETARG_INT32(2);
    ArrayType  *src_pkattvals_arry = PG_GETARG_ARRAYTYPE_P(3);
@@ -1694,7 +1694,7 @@ PG_FUNCTION_INFO_V1(dblink_build_sql_delete);
 Datum
 dblink_build_sql_delete(PG_FUNCTION_ARGS)
 {
-   text       *relname_text = PG_GETARG_TEXT_P(0);
+   text       *relname_text = PG_GETARG_TEXT_PP(0);
    int2vector *pkattnums_arg = (int2vector *) PG_GETARG_POINTER(1);
    int32       pknumatts_arg = PG_GETARG_INT32(2);
    ArrayType  *tgt_pkattvals_arry = PG_GETARG_ARRAYTYPE_P(3);
@@ -1771,7 +1771,7 @@ PG_FUNCTION_INFO_V1(dblink_build_sql_update);
 Datum
 dblink_build_sql_update(PG_FUNCTION_ARGS)
 {
-   text       *relname_text = PG_GETARG_TEXT_P(0);
+   text       *relname_text = PG_GETARG_TEXT_PP(0);
    int2vector *pkattnums_arg = (int2vector *) PG_GETARG_POINTER(1);
    int32       pknumatts_arg = PG_GETARG_INT32(2);
    ArrayType  *src_pkattvals_arry = PG_GETARG_ARRAYTYPE_P(3);
@@ -2338,7 +2338,7 @@ quote_ident_cstr(char *rawstr)
    char       *result;
 
    rawstr_text = cstring_to_text(rawstr);
-   result_text = DatumGetTextP(DirectFunctionCall1(quote_ident,
+   result_text = DatumGetTextPP(DirectFunctionCall1(quote_ident,
                                              PointerGetDatum(rawstr_text)));
    result = text_to_cstring(result_text);
 
index f210869acbd40a814ac4623ad89f962b9e6c7c27..4e89983afda8c564c55c253d5cac30f72c294e20 100644 (file)
@@ -139,7 +139,7 @@ dmetaphone(PG_FUNCTION_ARGS)
    if (PG_ARGISNULL(0))
        PG_RETURN_NULL();
 #endif
-   arg = PG_GETARG_TEXT_P(0);
+   arg = PG_GETARG_TEXT_PP(0);
    aptr = text_to_cstring(arg);
 
    DoubleMetaphone(aptr, codes);
@@ -168,7 +168,7 @@ dmetaphone_alt(PG_FUNCTION_ARGS)
    if (PG_ARGISNULL(0))
        PG_RETURN_NULL();
 #endif
-   arg = PG_GETARG_TEXT_P(0);
+   arg = PG_GETARG_TEXT_PP(0);
    aptr = text_to_cstring(arg);
 
    DoubleMetaphone(aptr, codes);
index bd36fc57dc3985ed684c5c571501aa026472daad..f1bb7bca732fdc3d576692766a45853043c8088f 100644 (file)
@@ -736,7 +736,7 @@ soundex(PG_FUNCTION_ARGS)
    char        outstr[SOUNDEX_LEN + 1];
    char       *arg;
 
-   arg = text_to_cstring(PG_GETARG_TEXT_P(0));
+   arg = text_to_cstring(PG_GETARG_TEXT_PP(0));
 
    _soundex(arg, outstr);
 
@@ -802,8 +802,8 @@ difference(PG_FUNCTION_ARGS)
    int         i,
                result;
 
-   _soundex(text_to_cstring(PG_GETARG_TEXT_P(0)), sndx1);
-   _soundex(text_to_cstring(PG_GETARG_TEXT_P(1)), sndx2);
+   _soundex(text_to_cstring(PG_GETARG_TEXT_PP(0)), sndx1);
+   _soundex(text_to_cstring(PG_GETARG_TEXT_PP(1)), sndx2);
 
    result = 0;
    for (i = 0; i < SOUNDEX_LEN; i++)
index 537174175b2e37914eadf47a83b2c2e3d117bd8e..c30d3c8269f9ec735151f1ca44316726893a5456 100644 (file)
@@ -200,9 +200,9 @@ Datum
 sort(PG_FUNCTION_ARGS)
 {
    ArrayType  *a = PG_GETARG_ARRAYTYPE_P_COPY(0);
-   text       *dirstr = (fcinfo->nargs == 2) ? PG_GETARG_TEXT_P(1) : NULL;
-   int32       dc = (dirstr) ? VARSIZE(dirstr) - VARHDRSZ : 0;
-   char       *d = (dirstr) ? VARDATA(dirstr) : NULL;
+   text       *dirstr = (fcinfo->nargs == 2) ? PG_GETARG_TEXT_PP(1) : NULL;
+   int32       dc = (dirstr) ? VARSIZE_ANY_EXHDR(dirstr) : 0;
+   char       *d = (dirstr) ? VARDATA_ANY(dirstr) : NULL;
    int         dir = -1;
 
    CHECKARRVALID(a);
index d50ec3a68d9a849ee3f73ec3bab41dec543926f0..6f35e288fd16b22560badf1d17f0df35333a1f87 100644 (file)
@@ -159,7 +159,7 @@ GetBTPageStatistics(BlockNumber blkno, Buffer buffer, BTPageStat *stat)
 Datum
 bt_page_stats(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    uint32      blkno = PG_GETARG_UINT32(1);
    Buffer      buffer;
    Relation    rel;
@@ -256,7 +256,7 @@ struct user_args
 Datum
 bt_page_items(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    uint32      blkno = PG_GETARG_UINT32(1);
    Datum       result;
    char       *values[6];
@@ -408,7 +408,7 @@ bt_page_items(PG_FUNCTION_ARGS)
 Datum
 bt_metap(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    Datum       result;
    Relation    rel;
    RangeVar   *relrv;
index 1ccc3ff3204f6bb0b3bdc04cd4ee61d9cdd0c8dd..a5def917511cd5ce78dc2c92ad6ab0aeb3cdf298 100644 (file)
@@ -45,7 +45,7 @@ PG_FUNCTION_INFO_V1(get_raw_page);
 Datum
 get_raw_page(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    uint32      blkno = PG_GETARG_UINT32(1);
    bytea      *raw_page;
 
@@ -74,8 +74,8 @@ PG_FUNCTION_INFO_V1(get_raw_page_fork);
 Datum
 get_raw_page_fork(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
-   text       *forkname = PG_GETARG_TEXT_P(1);
+   text       *relname = PG_GETARG_TEXT_PP(0);
+   text       *forkname = PG_GETARG_TEXT_PP(1);
    uint32      blkno = PG_GETARG_UINT32(2);
    bytea      *raw_page;
    ForkNumber  forknum;
@@ -184,7 +184,7 @@ get_page_from_raw(bytea *raw_page)
    Page        page;
    int         raw_page_size;
 
-   raw_page_size = VARSIZE(raw_page) - VARHDRSZ;
+   raw_page_size = VARSIZE_ANY_EXHDR(raw_page);
 
    if (raw_page_size != BLCKSZ)
        ereport(ERROR,
@@ -195,7 +195,7 @@ get_page_from_raw(bytea *raw_page)
 
    page = palloc(raw_page_size);
 
-   memcpy(page, VARDATA(raw_page), raw_page_size);
+   memcpy(page, VARDATA_ANY(raw_page), raw_page_size);
 
    return page;
 }
index 52ea004e7f148e90a53a3a44a46804b5d5aa34b8..78d71ab0785d2d7c32a2a9bff26011d118de8c20 100644 (file)
@@ -79,7 +79,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 (errmsg("prewarm type cannot be null"))));
-   type = PG_GETARG_TEXT_P(1);
+   type = PG_GETARG_TEXT_PP(1);
    ttype = text_to_cstring(type);
    if (strcmp(ttype, "prefetch") == 0)
        ptype = PREWARM_PREFETCH;
@@ -99,7 +99,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 (errmsg("relation fork cannot be null"))));
-   forkName = PG_GETARG_TEXT_P(2);
+   forkName = PG_GETARG_TEXT_PP(2);
    forkString = text_to_cstring(forkName);
    forkNumber = forkname_to_number(forkString);
 
index ead33ef5447ccae522f871ef2d3fc8da7d5c827e..e4b3daea446b4177a34dfaf7c052af1dde8c00b6 100644 (file)
@@ -35,7 +35,7 @@ gin_extract_trgm(PG_FUNCTION_ARGS)
 Datum
 gin_extract_value_trgm(PG_FUNCTION_ARGS)
 {
-   text       *val = (text *) PG_GETARG_TEXT_P(0);
+   text       *val = (text *) PG_GETARG_TEXT_PP(0);
    int32      *nentries = (int32 *) PG_GETARG_POINTER(1);
    Datum      *entries = NULL;
    TRGM       *trg;
@@ -43,7 +43,7 @@ gin_extract_value_trgm(PG_FUNCTION_ARGS)
 
    *nentries = 0;
 
-   trg = generate_trgm(VARDATA(val), VARSIZE(val) - VARHDRSZ);
+   trg = generate_trgm(VARDATA_ANY(val), VARSIZE_ANY_EXHDR(val));
    trglen = ARRNELEM(trg);
 
    if (trglen > 0)
@@ -70,7 +70,7 @@ gin_extract_value_trgm(PG_FUNCTION_ARGS)
 Datum
 gin_extract_query_trgm(PG_FUNCTION_ARGS)
 {
-   text       *val = (text *) PG_GETARG_TEXT_P(0);
+   text       *val = (text *) PG_GETARG_TEXT_PP(0);
    int32      *nentries = (int32 *) PG_GETARG_POINTER(1);
    StrategyNumber strategy = PG_GETARG_UINT16(2);
 
@@ -90,7 +90,7 @@ gin_extract_query_trgm(PG_FUNCTION_ARGS)
    {
        case SimilarityStrategyNumber:
        case WordSimilarityStrategyNumber:
-           trg = generate_trgm(VARDATA(val), VARSIZE(val) - VARHDRSZ);
+           trg = generate_trgm(VARDATA_ANY(val), VARSIZE_ANY_EXHDR(val));
            break;
        case ILikeStrategyNumber:
 #ifndef IGNORECASE
@@ -103,7 +103,8 @@ gin_extract_query_trgm(PG_FUNCTION_ARGS)
             * For wildcard search we extract all the trigrams that every
             * potentially-matching string must include.
             */
-           trg = generate_wildcard_trgm(VARDATA(val), VARSIZE(val) - VARHDRSZ);
+           trg = generate_wildcard_trgm(VARDATA_ANY(val),
+                                        VARSIZE_ANY_EXHDR(val));
            break;
        case RegExpICaseStrategyNumber:
 #ifndef IGNORECASE
@@ -170,7 +171,7 @@ gin_trgm_consistent(PG_FUNCTION_ARGS)
    bool       *check = (bool *) PG_GETARG_POINTER(0);
    StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-   /* text    *query = PG_GETARG_TEXT_P(2); */
+   /* text    *query = PG_GETARG_TEXT_PP(2); */
    int32       nkeys = PG_GETARG_INT32(3);
    Pointer    *extra_data = (Pointer *) PG_GETARG_POINTER(4);
    bool       *recheck = (bool *) PG_GETARG_POINTER(5);
@@ -268,7 +269,7 @@ gin_trgm_triconsistent(PG_FUNCTION_ARGS)
    GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
    StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-   /* text    *query = PG_GETARG_TEXT_P(2); */
+   /* text    *query = PG_GETARG_TEXT_PP(2); */
    int32       nkeys = PG_GETARG_INT32(3);
    Pointer    *extra_data = (Pointer *) PG_GETARG_POINTER(4);
    GinTernaryValue res = GIN_MAYBE;
index f52867df32407a771b9e62cd33ec64f2a32d68d2..ed02af875ca255f6f44d3c57e4e0ac30b05af390 100644 (file)
@@ -100,9 +100,9 @@ gtrgm_compress(PG_FUNCTION_ARGS)
    if (entry->leafkey)
    {                           /* trgm */
        TRGM       *res;
-       text       *val = DatumGetTextP(entry->key);
+       text       *val = DatumGetTextPP(entry->key);
 
-       res = generate_trgm(VARDATA(val), VARSIZE(val) - VARHDRSZ);
+       res = generate_trgm(VARDATA_ANY(val), VARSIZE_ANY_EXHDR(val));
        retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
        gistentryinit(*retval, PointerGetDatum(res),
                      entry->rel, entry->page,
@@ -142,7 +142,7 @@ gtrgm_decompress(PG_FUNCTION_ARGS)
    GISTENTRY  *retval;
    text       *key;
 
-   key = DatumGetTextP(entry->key);
+   key = DatumGetTextPP(entry->key);
 
    if (key != (text *) DatumGetPointer(entry->key))
    {
@@ -200,11 +200,12 @@ gtrgm_consistent(PG_FUNCTION_ARGS)
     * depends on strategy.
     *
     * The cached structure is a single palloc chunk containing the
-    * gtrgm_consistent_cache header, then the input query (starting at a
-    * MAXALIGN boundary), then the TRGM value (also starting at a MAXALIGN
-    * boundary).  However we don't try to include the regex graph (if any) in
-    * that struct.  (XXX currently, this approach can leak regex graphs
-    * across index rescans.  Not clear if that's worth fixing.)
+    * gtrgm_consistent_cache header, then the input query (4-byte length
+    * word, uncompressed, starting at a MAXALIGN boundary), then the TRGM
+    * value (also starting at a MAXALIGN boundary).  However we don't try to
+    * include the regex graph (if any) in that struct.  (XXX currently, this
+    * approach can leak regex graphs across index rescans.  Not clear if
+    * that's worth fixing.)
     */
    cache = (gtrgm_consistent_cache *) fcinfo->flinfo->fn_extra;
    if (cache == NULL ||
index 368e7c8941d08252169dd616a0274ca02b78fe88..e9a713113eda95dff41367a19f8486c7293a6fe4 100644 (file)
@@ -878,14 +878,14 @@ trgm2int(trgm *ptr)
 Datum
 show_trgm(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(0);
+   text       *in = PG_GETARG_TEXT_PP(0);
    TRGM       *trg;
    Datum      *d;
    ArrayType  *a;
    trgm       *ptr;
    int         i;
 
-   trg = generate_trgm(VARDATA(in), VARSIZE(in) - VARHDRSZ);
+   trg = generate_trgm(VARDATA_ANY(in), VARSIZE_ANY_EXHDR(in));
    d = (Datum *) palloc(sizeof(Datum) * (1 + ARRNELEM(trg)));
 
    for (i = 0, ptr = GETARR(trg); i < ARRNELEM(trg); i++, ptr++)
@@ -1053,14 +1053,14 @@ trgm_presence_map(TRGM *query, TRGM *key)
 Datum
 similarity(PG_FUNCTION_ARGS)
 {
-   text       *in1 = PG_GETARG_TEXT_P(0);
-   text       *in2 = PG_GETARG_TEXT_P(1);
+   text       *in1 = PG_GETARG_TEXT_PP(0);
+   text       *in2 = PG_GETARG_TEXT_PP(1);
    TRGM       *trg1,
               *trg2;
    float4      res;
 
-   trg1 = generate_trgm(VARDATA(in1), VARSIZE(in1) - VARHDRSZ);
-   trg2 = generate_trgm(VARDATA(in2), VARSIZE(in2) - VARHDRSZ);
+   trg1 = generate_trgm(VARDATA_ANY(in1), VARSIZE_ANY_EXHDR(in1));
+   trg2 = generate_trgm(VARDATA_ANY(in2), VARSIZE_ANY_EXHDR(in2));
 
    res = cnt_sml(trg1, trg2, false);
 
index d815de30734f5782073cf712427288185b15ae6a..ccfdc20ed72c8cfd73475c2456ca5e869e6c4ac5 100644 (file)
@@ -62,7 +62,7 @@ pg_digest(PG_FUNCTION_ARGS)
    PX_MD      *md;
    bytea      *res;
 
-   name = PG_GETARG_TEXT_P(1);
+   name = PG_GETARG_TEXT_PP(1);
 
    /* will give error if fails */
    md = find_provider(name, (PFN) px_find_digest, "Digest", 0);
@@ -72,10 +72,10 @@ pg_digest(PG_FUNCTION_ARGS)
    res = (text *) palloc(hlen + VARHDRSZ);
    SET_VARSIZE(res, hlen + VARHDRSZ);
 
-   arg = PG_GETARG_BYTEA_P(0);
-   len = VARSIZE(arg) - VARHDRSZ;
+   arg = PG_GETARG_BYTEA_PP(0);
+   len = VARSIZE_ANY_EXHDR(arg);
 
-   px_md_update(md, (uint8 *) VARDATA(arg), len);
+   px_md_update(md, (uint8 *) VARDATA_ANY(arg), len);
    px_md_finish(md, (uint8 *) VARDATA(res));
    px_md_free(md);
 
@@ -100,7 +100,7 @@ pg_hmac(PG_FUNCTION_ARGS)
    PX_HMAC    *h;
    bytea      *res;
 
-   name = PG_GETARG_TEXT_P(2);
+   name = PG_GETARG_TEXT_PP(2);
 
    /* will give error if fails */
    h = find_provider(name, (PFN) px_find_hmac, "HMAC", 0);
@@ -110,13 +110,13 @@ pg_hmac(PG_FUNCTION_ARGS)
    res = (text *) palloc(hlen + VARHDRSZ);
    SET_VARSIZE(res, hlen + VARHDRSZ);
 
-   arg = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
-   len = VARSIZE(arg) - VARHDRSZ;
-   klen = VARSIZE(key) - VARHDRSZ;
+   arg = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
+   len = VARSIZE_ANY_EXHDR(arg);
+   klen = VARSIZE_ANY_EXHDR(key);
 
-   px_hmac_init(h, (uint8 *) VARDATA(key), klen);
-   px_hmac_update(h, (uint8 *) VARDATA(arg), len);
+   px_hmac_init(h, (uint8 *) VARDATA_ANY(key), klen);
+   px_hmac_update(h, (uint8 *) VARDATA_ANY(arg), len);
    px_hmac_finish(h, (uint8 *) VARDATA(res));
    px_hmac_free(h);
 
@@ -228,20 +228,20 @@ pg_encrypt(PG_FUNCTION_ARGS)
                klen,
                rlen;
 
-   type = PG_GETARG_TEXT_P(2);
+   type = PG_GETARG_TEXT_PP(2);
    c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
-   dlen = VARSIZE(data) - VARHDRSZ;
-   klen = VARSIZE(key) - VARHDRSZ;
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
+   dlen = VARSIZE_ANY_EXHDR(data);
+   klen = VARSIZE_ANY_EXHDR(key);
 
    rlen = px_combo_encrypt_len(c, dlen);
    res = palloc(VARHDRSZ + rlen);
 
-   err = px_combo_init(c, (uint8 *) VARDATA(key), klen, NULL, 0);
+   err = px_combo_init(c, (uint8 *) VARDATA_ANY(key), klen, NULL, 0);
    if (!err)
-       err = px_combo_encrypt(c, (uint8 *) VARDATA(data), dlen,
+       err = px_combo_encrypt(c, (uint8 *) VARDATA_ANY(data), dlen,
                               (uint8 *) VARDATA(res), &rlen);
    px_combo_free(c);
 
@@ -277,20 +277,20 @@ pg_decrypt(PG_FUNCTION_ARGS)
                klen,
                rlen;
 
-   type = PG_GETARG_TEXT_P(2);
+   type = PG_GETARG_TEXT_PP(2);
    c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
-   dlen = VARSIZE(data) - VARHDRSZ;
-   klen = VARSIZE(key) - VARHDRSZ;
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
+   dlen = VARSIZE_ANY_EXHDR(data);
+   klen = VARSIZE_ANY_EXHDR(key);
 
    rlen = px_combo_decrypt_len(c, dlen);
    res = palloc(VARHDRSZ + rlen);
 
-   err = px_combo_init(c, (uint8 *) VARDATA(key), klen, NULL, 0);
+   err = px_combo_init(c, (uint8 *) VARDATA_ANY(key), klen, NULL, 0);
    if (!err)
-       err = px_combo_decrypt(c, (uint8 *) VARDATA(data), dlen,
+       err = px_combo_decrypt(c, (uint8 *) VARDATA_ANY(data), dlen,
                               (uint8 *) VARDATA(res), &rlen);
 
    px_combo_free(c);
@@ -327,23 +327,23 @@ pg_encrypt_iv(PG_FUNCTION_ARGS)
                ivlen,
                rlen;
 
-   type = PG_GETARG_TEXT_P(3);
+   type = PG_GETARG_TEXT_PP(3);
    c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
-   iv = PG_GETARG_BYTEA_P(2);
-   dlen = VARSIZE(data) - VARHDRSZ;
-   klen = VARSIZE(key) - VARHDRSZ;
-   ivlen = VARSIZE(iv) - VARHDRSZ;
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
+   iv = PG_GETARG_BYTEA_PP(2);
+   dlen = VARSIZE_ANY_EXHDR(data);
+   klen = VARSIZE_ANY_EXHDR(key);
+   ivlen = VARSIZE_ANY_EXHDR(iv);
 
    rlen = px_combo_encrypt_len(c, dlen);
    res = palloc(VARHDRSZ + rlen);
 
-   err = px_combo_init(c, (uint8 *) VARDATA(key), klen,
-                       (uint8 *) VARDATA(iv), ivlen);
+   err = px_combo_init(c, (uint8 *) VARDATA_ANY(key), klen,
+                       (uint8 *) VARDATA_ANY(iv), ivlen);
    if (!err)
-       err = px_combo_encrypt(c, (uint8 *) VARDATA(data), dlen,
+       err = px_combo_encrypt(c, (uint8 *) VARDATA_ANY(data), dlen,
                               (uint8 *) VARDATA(res), &rlen);
 
    px_combo_free(c);
@@ -381,23 +381,23 @@ pg_decrypt_iv(PG_FUNCTION_ARGS)
                rlen,
                ivlen;
 
-   type = PG_GETARG_TEXT_P(3);
+   type = PG_GETARG_TEXT_PP(3);
    c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
-   iv = PG_GETARG_BYTEA_P(2);
-   dlen = VARSIZE(data) - VARHDRSZ;
-   klen = VARSIZE(key) - VARHDRSZ;
-   ivlen = VARSIZE(iv) - VARHDRSZ;
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
+   iv = PG_GETARG_BYTEA_PP(2);
+   dlen = VARSIZE_ANY_EXHDR(data);
+   klen = VARSIZE_ANY_EXHDR(key);
+   ivlen = VARSIZE_ANY_EXHDR(iv);
 
    rlen = px_combo_decrypt_len(c, dlen);
    res = palloc(VARHDRSZ + rlen);
 
-   err = px_combo_init(c, (uint8 *) VARDATA(key), klen,
-                       (uint8 *) VARDATA(iv), ivlen);
+   err = px_combo_init(c, (uint8 *) VARDATA_ANY(key), klen,
+                       (uint8 *) VARDATA_ANY(iv), ivlen);
    if (!err)
-       err = px_combo_decrypt(c, (uint8 *) VARDATA(data), dlen,
+       err = px_combo_decrypt(c, (uint8 *) VARDATA_ANY(data), dlen,
                               (uint8 *) VARDATA(res), &rlen);
 
    px_combo_free(c);
@@ -480,8 +480,8 @@ find_provider(text *name,
    char       *buf;
    int         err;
 
-   buf = downcase_truncate_identifier(VARDATA(name),
-                                      VARSIZE(name) - VARHDRSZ,
+   buf = downcase_truncate_identifier(VARDATA_ANY(name),
+                                      VARSIZE_ANY_EXHDR(name),
                                       false);
 
    err = provider_lookup(buf, &res);
index ce16db71d878c279df9dc40bb930534d4a135a0b..cc5df14725e048cd4e6b4008bd34b1728fa61bc1 100644 (file)
@@ -67,9 +67,9 @@ PG_FUNCTION_INFO_V1(pgp_armor_headers);
 static text *
 convert_charset(text *src, int cset_from, int cset_to)
 {
-   int         src_len = VARSIZE(src) - VARHDRSZ;
+   int         src_len = VARSIZE_ANY_EXHDR(src);
    unsigned char *dst;
-   unsigned char *csrc = (unsigned char *) VARDATA(src);
+   unsigned char *csrc = (unsigned char *) VARDATA_ANY(src);
    text       *res;
 
    dst = pg_do_encoding_conversion(csrc, src_len, cset_from, cset_to);
@@ -109,7 +109,7 @@ string_is_ascii(const char *str)
 static void
 clear_and_pfree(text *p)
 {
-   px_memset(p, 0, VARSIZE(p));
+   px_memset(p, 0, VARSIZE_ANY(p));
    pfree(p);
 }
 
@@ -356,8 +356,8 @@ parse_args(PGP_Context *ctx, uint8 *args, int arg_len,
 static MBuf *
 create_mbuf_from_vardata(text *data)
 {
-   return mbuf_create_from_data((uint8 *) VARDATA(data),
-                                VARSIZE(data) - VARHDRSZ);
+   return mbuf_create_from_data((uint8 *) VARDATA_ANY(data),
+                                VARSIZE_ANY_EXHDR(data));
 }
 
 static void
@@ -369,8 +369,8 @@ init_work(PGP_Context **ctx_p, int is_text,
    fill_expect(ex, is_text);
 
    if (err == 0 && args != NULL)
-       err = parse_args(*ctx_p, (uint8 *) VARDATA(args),
-                        VARSIZE(args) - VARHDRSZ, ex);
+       err = parse_args(*ctx_p, (uint8 *) VARDATA_ANY(args),
+                        VARSIZE_ANY_EXHDR(args), ex);
 
    if (err)
        px_THROW_ERROR(err);
@@ -408,7 +408,7 @@ encrypt_internal(int is_pubenc, int is_text,
    }
 
    src = create_mbuf_from_vardata(data);
-   dst = mbuf_create(VARSIZE(data) + 128);
+   dst = mbuf_create(VARSIZE_ANY(data) + 128);
 
    /*
     * reserve room for header
@@ -427,8 +427,8 @@ encrypt_internal(int is_pubenc, int is_text,
        mbuf_free(kbuf);
    }
    else
-       err = pgp_set_symkey(ctx, (uint8 *) VARDATA(key),
-                            VARSIZE(key) - VARHDRSZ);
+       err = pgp_set_symkey(ctx, (uint8 *) VARDATA_ANY(key),
+                            VARSIZE_ANY_EXHDR(key));
 
    /*
     * encrypt
@@ -485,9 +485,9 @@ decrypt_internal(int is_pubenc, int need_text, text *data,
 
    init_work(&ctx, need_text, args, &ex);
 
-   src = mbuf_create_from_data((uint8 *) VARDATA(data),
-                               VARSIZE(data) - VARHDRSZ);
-   dst = mbuf_create(VARSIZE(data) + 2048);
+   src = mbuf_create_from_data((uint8 *) VARDATA_ANY(data),
+                               VARSIZE_ANY_EXHDR(data));
+   dst = mbuf_create(VARSIZE_ANY(data) + 2048);
 
    /*
     * reserve room for header
@@ -505,16 +505,16 @@ decrypt_internal(int is_pubenc, int need_text, text *data,
 
        if (keypsw)
        {
-           psw = (uint8 *) VARDATA(keypsw);
-           psw_len = VARSIZE(keypsw) - VARHDRSZ;
+           psw = (uint8 *) VARDATA_ANY(keypsw);
+           psw_len = VARSIZE_ANY_EXHDR(keypsw);
        }
        kbuf = create_mbuf_from_vardata(key);
        err = pgp_set_pubkey(ctx, kbuf, psw, psw_len, 1);
        mbuf_free(kbuf);
    }
    else
-       err = pgp_set_symkey(ctx, (uint8 *) VARDATA(key),
-                            VARSIZE(key) - VARHDRSZ);
+       err = pgp_set_symkey(ctx, (uint8 *) VARDATA_ANY(key),
+                            VARSIZE_ANY_EXHDR(key));
 
    /* decrypt */
    if (err >= 0)
@@ -571,10 +571,10 @@ pgp_sym_encrypt_bytea(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = encrypt_internal(0, 0, data, key, arg);
 
@@ -593,10 +593,10 @@ pgp_sym_encrypt_text(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = encrypt_internal(0, 1, data, key, arg);
 
@@ -616,10 +616,10 @@ pgp_sym_decrypt_bytea(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = decrypt_internal(0, 0, data, key, NULL, arg);
 
@@ -638,10 +638,10 @@ pgp_sym_decrypt_text(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = decrypt_internal(0, 1, data, key, NULL, arg);
 
@@ -664,10 +664,10 @@ pgp_pub_encrypt_bytea(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = encrypt_internal(1, 0, data, key, arg);
 
@@ -686,10 +686,10 @@ pgp_pub_encrypt_text(PG_FUNCTION_ARGS)
    text       *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       arg = PG_GETARG_BYTEA_P(2);
+       arg = PG_GETARG_BYTEA_PP(2);
 
    res = encrypt_internal(1, 1, data, key, arg);
 
@@ -710,12 +710,12 @@ pgp_pub_decrypt_bytea(PG_FUNCTION_ARGS)
               *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       psw = PG_GETARG_BYTEA_P(2);
+       psw = PG_GETARG_BYTEA_PP(2);
    if (PG_NARGS() > 3)
-       arg = PG_GETARG_BYTEA_P(3);
+       arg = PG_GETARG_BYTEA_PP(3);
 
    res = decrypt_internal(1, 0, data, key, psw, arg);
 
@@ -737,12 +737,12 @@ pgp_pub_decrypt_text(PG_FUNCTION_ARGS)
               *arg = NULL;
    text       *res;
 
-   data = PG_GETARG_BYTEA_P(0);
-   key = PG_GETARG_BYTEA_P(1);
+   data = PG_GETARG_BYTEA_PP(0);
+   key = PG_GETARG_BYTEA_PP(1);
    if (PG_NARGS() > 2)
-       psw = PG_GETARG_BYTEA_P(2);
+       psw = PG_GETARG_BYTEA_PP(2);
    if (PG_NARGS() > 3)
-       arg = PG_GETARG_BYTEA_P(3);
+       arg = PG_GETARG_BYTEA_PP(3);
 
    res = decrypt_internal(1, 1, data, key, psw, arg);
 
@@ -865,8 +865,8 @@ pg_armor(PG_FUNCTION_ARGS)
    char      **keys = NULL,
              **values = NULL;
 
-   data = PG_GETARG_BYTEA_P(0);
-   data_len = VARSIZE(data) - VARHDRSZ;
+   data = PG_GETARG_BYTEA_PP(0);
+   data_len = VARSIZE_ANY_EXHDR(data);
    if (PG_NARGS() == 3)
    {
        num_headers = parse_key_value_arrays(PG_GETARG_ARRAYTYPE_P(1),
@@ -880,7 +880,7 @@ pg_armor(PG_FUNCTION_ARGS)
 
    initStringInfo(&buf);
 
-   pgp_armor_encode((uint8 *) VARDATA(data), data_len, &buf,
+   pgp_armor_encode((uint8 *) VARDATA_ANY(data), data_len, &buf,
                     num_headers, keys, values);
 
    res = palloc(VARHDRSZ + buf.len);
@@ -901,12 +901,12 @@ pg_dearmor(PG_FUNCTION_ARGS)
    int         ret;
    StringInfoData buf;
 
-   data = PG_GETARG_TEXT_P(0);
-   data_len = VARSIZE(data) - VARHDRSZ;
+   data = PG_GETARG_TEXT_PP(0);
+   data_len = VARSIZE_ANY_EXHDR(data);
 
    initStringInfo(&buf);
 
-   ret = pgp_armor_decode((uint8 *) VARDATA(data), data_len, &buf);
+   ret = pgp_armor_decode((uint8 *) VARDATA_ANY(data), data_len, &buf);
    if (ret < 0)
        px_THROW_ERROR(ret);
    res = palloc(VARHDRSZ + buf.len);
@@ -1004,7 +1004,7 @@ pgp_key_id_w(PG_FUNCTION_ARGS)
    int         res_len;
    MBuf       *buf;
 
-   data = PG_GETARG_BYTEA_P(0);
+   data = PG_GETARG_BYTEA_PP(0);
    buf = create_mbuf_from_vardata(data);
    res = palloc(VARHDRSZ + 17);
 
index 4d49610641aa9270683e9d9dd7cb1b0076e1f9ae..db9e0349a0390868150d15a0c44d5c01a2a5b02f 100644 (file)
@@ -94,7 +94,7 @@ pgrowlocks(PG_FUNCTION_ARGS)
        attinmeta = TupleDescGetAttInMetadata(tupdesc);
        funcctx->attinmeta = attinmeta;
 
-       relname = PG_GETARG_TEXT_P(0);
+       relname = PG_GETARG_TEXT_PP(0);
        relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname));
        rel = heap_openrv(relrv, AccessShareLock);
 
index c69f9ec0937a4672879f20314a428ab84d8fbb2c..d448e9ede65cf1ebb79905bec562e57df655776a 100644 (file)
@@ -143,7 +143,7 @@ static void check_relation_relkind(Relation rel);
 Datum
 pgstatindex(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    Relation    rel;
    RangeVar   *relrv;
 
@@ -168,7 +168,7 @@ pgstatindex(PG_FUNCTION_ARGS)
 Datum
 pgstatindex_v1_5(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    Relation    rel;
    RangeVar   *relrv;
 
@@ -377,7 +377,7 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
 Datum
 pg_relpages(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    int64       relpages;
    Relation    rel;
    RangeVar   *relrv;
@@ -406,7 +406,7 @@ pg_relpages(PG_FUNCTION_ARGS)
 Datum
 pg_relpages_v1_5(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    int64       relpages;
    Relation    rel;
    RangeVar   *relrv;
index b2432f43edf14506c65397b798ea24fa7b2df798..1e0de5d660ad703afb04a1592ace4165fbdd2fc6 100644 (file)
@@ -165,7 +165,7 @@ build_pgstattuple_type(pgstattuple_type *stat, FunctionCallInfo fcinfo)
 Datum
 pgstattuple(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    RangeVar   *relrv;
    Relation    rel;
 
@@ -191,7 +191,7 @@ pgstattuple(PG_FUNCTION_ARGS)
 Datum
 pgstattuple_v1_5(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    RangeVar   *relrv;
    Relation    rel;
 
index 82deb93093525fbd25577659b41deed17d670c50..1a8f8848f59d5096c1c56d69b190acaf51946283 100644 (file)
@@ -590,7 +590,7 @@ PG_FUNCTION_INFO_V1(sepgsql_mcstrans_in);
 Datum
 sepgsql_mcstrans_in(PG_FUNCTION_ARGS)
 {
-   text       *label = PG_GETARG_TEXT_P(0);
+   text       *label = PG_GETARG_TEXT_PP(0);
    char       *raw_label;
    char       *result;
 
@@ -630,7 +630,7 @@ PG_FUNCTION_INFO_V1(sepgsql_mcstrans_out);
 Datum
 sepgsql_mcstrans_out(PG_FUNCTION_ARGS)
 {
-   text       *label = PG_GETARG_TEXT_P(0);
+   text       *label = PG_GETARG_TEXT_PP(0);
    char       *qual_label;
    char       *result;
 
index 54f85a37090a3443c176294f4680279d8dc6a0e7..8bf742230e057017e9b778b4e3fd9e0d5094a4cb 100644 (file)
@@ -106,7 +106,7 @@ autoinc(PG_FUNCTION_ARGS)
            newvals[chnattrs] = Int32GetDatum((int32) DatumGetInt64(newvals[chnattrs]));
        }
        newnulls[chnattrs] = false;
-       pfree(DatumGetTextP(seqname));
+       pfree(DatumGetTextPP(seqname));
        chnattrs++;
        i++;
    }
index a4b0f9b6a11e69e10fd5e616d8d4dc43bca416ea..42846436eb5651bea3ae6a6600bea127c1f958a3 100644 (file)
@@ -225,7 +225,7 @@ PG_FUNCTION_INFO_V1(ssl_client_dn_field);
 Datum
 ssl_client_dn_field(PG_FUNCTION_ARGS)
 {
-   text       *fieldname = PG_GETARG_TEXT_P(0);
+   text       *fieldname = PG_GETARG_TEXT_PP(0);
    Datum       result;
 
    if (!(MyProcPort->peer))
@@ -260,7 +260,7 @@ PG_FUNCTION_INFO_V1(ssl_issuer_field);
 Datum
 ssl_issuer_field(PG_FUNCTION_ARGS)
 {
-   text       *fieldname = PG_GETARG_TEXT_P(0);
+   text       *fieldname = PG_GETARG_TEXT_PP(0);
    Datum       result;
 
    if (!(MyProcPort->peer))
index 542e7267be4c910497947df7d25c51243f8d8d72..6a34cfd3edfbf5323fe539917bf1a948398f1a23 100644 (file)
@@ -384,14 +384,14 @@ unaccent_dict(PG_FUNCTION_ARGS)
        dictOid = PG_GETARG_OID(0);
        strArg = 1;
    }
-   str = PG_GETARG_TEXT_P(strArg);
+   str = PG_GETARG_TEXT_PP(strArg);
 
    dict = lookup_ts_dictionary_cache(dictOid);
 
    res = (TSLexeme *) DatumGetPointer(FunctionCall4(&(dict->lexize),
                                             PointerGetDatum(dict->dictData),
-                                              PointerGetDatum(VARDATA(str)),
-                                     Int32GetDatum(VARSIZE(str) - VARHDRSZ),
+                                          PointerGetDatum(VARDATA_ANY(str)),
+                                      Int32GetDatum(VARSIZE_ANY_EXHDR(str)),
                                                     PointerGetDatum(NULL)));
 
    PG_FREE_IF_COPY(str, strArg);
index 57bdf4d8d47f981903079f8dfa5d8c0139a8c41f..1ce08555cfbb45cb8eba1489102b6e5f2fa1ea80 100644 (file)
@@ -503,13 +503,13 @@ Datum
 uuid_generate_v3(PG_FUNCTION_ARGS)
 {
    pg_uuid_t  *ns = PG_GETARG_UUID_P(0);
-   text       *name = PG_GETARG_TEXT_P(1);
+   text       *name = PG_GETARG_TEXT_PP(1);
 
 #ifdef HAVE_UUID_OSSP
    return uuid_generate_v35_internal(UUID_MAKE_V3, ns, name);
 #else
    return uuid_generate_internal(UUID_MAKE_V3, (unsigned char *) ns,
-                                 VARDATA(name), VARSIZE(name) - VARHDRSZ);
+                                 VARDATA_ANY(name), VARSIZE_ANY_EXHDR(name));
 #endif
 }
 
@@ -525,12 +525,12 @@ Datum
 uuid_generate_v5(PG_FUNCTION_ARGS)
 {
    pg_uuid_t  *ns = PG_GETARG_UUID_P(0);
-   text       *name = PG_GETARG_TEXT_P(1);
+   text       *name = PG_GETARG_TEXT_PP(1);
 
 #ifdef HAVE_UUID_OSSP
    return uuid_generate_v35_internal(UUID_MAKE_V5, ns, name);
 #else
    return uuid_generate_internal(UUID_MAKE_V5, (unsigned char *) ns,
-                                 VARDATA(name), VARSIZE(name) - VARHDRSZ);
+                                 VARDATA_ANY(name), VARSIZE_ANY_EXHDR(name));
 #endif
 }
index 73b74c875e915c86eb36376833542fdb6eee2463..034545caa8711fe1f2abc48f3ea2ff80d80c92f6 100644 (file)
@@ -95,9 +95,9 @@ PG_FUNCTION_INFO_V1(xml_is_well_formed);
 Datum
 xml_is_well_formed(PG_FUNCTION_ARGS)
 {
-   text       *t = PG_GETARG_TEXT_P(0);        /* document buffer */
+   text       *t = PG_GETARG_TEXT_PP(0);       /* document buffer */
    bool        result = false;
-   int32       docsize = VARSIZE(t) - VARHDRSZ;
+   int32       docsize = VARSIZE_ANY_EXHDR(t);
    xmlDocPtr   doctree;
    PgXmlErrorContext *xmlerrcxt;
 
@@ -105,7 +105,7 @@ xml_is_well_formed(PG_FUNCTION_ARGS)
 
    PG_TRY();
    {
-       doctree = xmlParseMemory((char *) VARDATA(t), docsize);
+       doctree = xmlParseMemory((char *) VARDATA_ANY(t), docsize);
 
        result = (doctree != NULL);
 
@@ -133,7 +133,7 @@ PG_FUNCTION_INFO_V1(xml_encode_special_chars);
 Datum
 xml_encode_special_chars(PG_FUNCTION_ARGS)
 {
-   text       *tin = PG_GETARG_TEXT_P(0);
+   text       *tin = PG_GETARG_TEXT_PP(0);
    text       *tout;
    xmlChar    *ts,
               *tt;
@@ -248,10 +248,10 @@ PG_FUNCTION_INFO_V1(xpath_nodeset);
 Datum
 xpath_nodeset(PG_FUNCTION_ARGS)
 {
-   text       *document = PG_GETARG_TEXT_P(0);
-   text       *xpathsupp = PG_GETARG_TEXT_P(1);        /* XPath expression */
-   xmlChar    *toptag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(2));
-   xmlChar    *septag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(3));
+   text       *document = PG_GETARG_TEXT_PP(0);
+   text       *xpathsupp = PG_GETARG_TEXT_PP(1);       /* XPath expression */
+   xmlChar    *toptag = pgxml_texttoxmlchar(PG_GETARG_TEXT_PP(2));
+   xmlChar    *septag = pgxml_texttoxmlchar(PG_GETARG_TEXT_PP(3));
    xmlChar    *xpath;
    text       *xpres;
    xmlXPathObjectPtr res;
@@ -281,9 +281,9 @@ PG_FUNCTION_INFO_V1(xpath_list);
 Datum
 xpath_list(PG_FUNCTION_ARGS)
 {
-   text       *document = PG_GETARG_TEXT_P(0);
-   text       *xpathsupp = PG_GETARG_TEXT_P(1);        /* XPath expression */
-   xmlChar    *plainsep = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(2));
+   text       *document = PG_GETARG_TEXT_PP(0);
+   text       *xpathsupp = PG_GETARG_TEXT_PP(1);       /* XPath expression */
+   xmlChar    *plainsep = pgxml_texttoxmlchar(PG_GETARG_TEXT_PP(2));
    xmlChar    *xpath;
    text       *xpres;
    xmlXPathObjectPtr res;
@@ -310,15 +310,15 @@ PG_FUNCTION_INFO_V1(xpath_string);
 Datum
 xpath_string(PG_FUNCTION_ARGS)
 {
-   text       *document = PG_GETARG_TEXT_P(0);
-   text       *xpathsupp = PG_GETARG_TEXT_P(1);        /* XPath expression */
+   text       *document = PG_GETARG_TEXT_PP(0);
+   text       *xpathsupp = PG_GETARG_TEXT_PP(1);       /* XPath expression */
    xmlChar    *xpath;
    int32       pathsize;
    text       *xpres;
    xmlXPathObjectPtr res;
    xpath_workspace workspace;
 
-   pathsize = VARSIZE(xpathsupp) - VARHDRSZ;
+   pathsize = VARSIZE_ANY_EXHDR(xpathsupp);
 
    /*
     * We encapsulate the supplied path with "string()" = 8 chars + 1 for NUL
@@ -328,7 +328,7 @@ xpath_string(PG_FUNCTION_ARGS)
 
    xpath = (xmlChar *) palloc(pathsize + 9);
    memcpy((char *) xpath, "string(", 7);
-   memcpy((char *) (xpath + 7), VARDATA(xpathsupp), pathsize);
+   memcpy((char *) (xpath + 7), VARDATA_ANY(xpathsupp), pathsize);
    xpath[pathsize + 7] = ')';
    xpath[pathsize + 8] = '\0';
 
@@ -351,8 +351,8 @@ PG_FUNCTION_INFO_V1(xpath_number);
 Datum
 xpath_number(PG_FUNCTION_ARGS)
 {
-   text       *document = PG_GETARG_TEXT_P(0);
-   text       *xpathsupp = PG_GETARG_TEXT_P(1);        /* XPath expression */
+   text       *document = PG_GETARG_TEXT_PP(0);
+   text       *xpathsupp = PG_GETARG_TEXT_PP(1);       /* XPath expression */
    xmlChar    *xpath;
    float4      fRes;
    xmlXPathObjectPtr res;
@@ -383,8 +383,8 @@ PG_FUNCTION_INFO_V1(xpath_bool);
 Datum
 xpath_bool(PG_FUNCTION_ARGS)
 {
-   text       *document = PG_GETARG_TEXT_P(0);
-   text       *xpathsupp = PG_GETARG_TEXT_P(1);        /* XPath expression */
+   text       *document = PG_GETARG_TEXT_PP(0);
+   text       *xpathsupp = PG_GETARG_TEXT_PP(1);       /* XPath expression */
    xmlChar    *xpath;
    int         bRes;
    xmlXPathObjectPtr res;
@@ -413,7 +413,7 @@ xpath_bool(PG_FUNCTION_ARGS)
 static xmlXPathObjectPtr
 pgxml_xpath(text *document, xmlChar *xpath, xpath_workspace *workspace)
 {
-   int32       docsize = VARSIZE(document) - VARHDRSZ;
+   int32       docsize = VARSIZE_ANY_EXHDR(document);
    PgXmlErrorContext *xmlerrcxt;
    xmlXPathCompExprPtr comppath;
 
@@ -425,7 +425,7 @@ pgxml_xpath(text *document, xmlChar *xpath, xpath_workspace *workspace)
 
    PG_TRY();
    {
-       workspace->doctree = xmlParseMemory((char *) VARDATA(document),
+       workspace->doctree = xmlParseMemory((char *) VARDATA_ANY(document),
                                            docsize);
        if (workspace->doctree != NULL)
        {
index 343924e99177efb41aa30862fd8a8bd16cc42128..391e6b593b033faf1423dcd45e49fb679b074b56 100644 (file)
@@ -49,8 +49,8 @@ xslt_process(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXSLT
 
-   text       *doct = PG_GETARG_TEXT_P(0);
-   text       *ssheet = PG_GETARG_TEXT_P(1);
+   text       *doct = PG_GETARG_TEXT_PP(0);
+   text       *ssheet = PG_GETARG_TEXT_PP(1);
    text       *result;
    text       *paramstr;
    const char **params;
@@ -66,7 +66,7 @@ xslt_process(PG_FUNCTION_ARGS)
 
    if (fcinfo->nargs == 3)
    {
-       paramstr = PG_GETARG_TEXT_P(2);
+       paramstr = PG_GETARG_TEXT_PP(2);
        params = parse_params(paramstr);
    }
    else
@@ -85,16 +85,16 @@ xslt_process(PG_FUNCTION_ARGS)
        bool        xslt_sec_prefs_error;
 
        /* Parse document */
-       doctree = xmlParseMemory((char *) VARDATA(doct),
-                                VARSIZE(doct) - VARHDRSZ);
+       doctree = xmlParseMemory((char *) VARDATA_ANY(doct),
+                                VARSIZE_ANY_EXHDR(doct));
 
        if (doctree == NULL)
            xml_ereport(xmlerrcxt, ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
                        "error parsing XML document");
 
        /* Same for stylesheet */
-       ssdoc = xmlParseMemory((char *) VARDATA(ssheet),
-                              VARSIZE(ssheet) - VARHDRSZ);
+       ssdoc = xmlParseMemory((char *) VARDATA_ANY(ssheet),
+                              VARSIZE_ANY_EXHDR(ssheet));
 
        if (ssdoc == NULL)
            xml_ereport(xmlerrcxt, ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
index 86788549a5508aa177c17c4c5092c1fae5435911..53f298b6c2fb260ef02922884913c0f6556838eb 100644 (file)
@@ -568,8 +568,9 @@ spg_text_leaf_consistent(PG_FUNCTION_ARGS)
 
    leafValue = DatumGetTextPP(in->leafDatum);
 
+   /* As above, in->reconstructedValue isn't toasted or short. */
    if (DatumGetPointer(in->reconstructedValue))
-       reconstrValue = DatumGetTextP(in->reconstructedValue);
+       reconstrValue = (text *) DatumGetPointer(in->reconstructedValue);
 
    Assert(reconstrValue == NULL ? level == 0 :
           VARSIZE_ANY_EXHDR(reconstrValue) == level);
index 27c0c561a8fbbab5bd2c1330499c4eac54598469..96aa15e9cc3d72cc4843b5b944b9235aa80bc71d 100644 (file)
@@ -72,7 +72,7 @@ nonexclusive_base_backup_cleanup(int code, Datum arg)
 Datum
 pg_start_backup(PG_FUNCTION_ARGS)
 {
-   text       *backupid = PG_GETARG_TEXT_P(0);
+   text       *backupid = PG_GETARG_TEXT_PP(0);
    bool        fast = PG_GETARG_BOOL(1);
    bool        exclusive = PG_GETARG_BOOL(2);
    char       *backupidstr;
@@ -309,7 +309,7 @@ pg_switch_wal(PG_FUNCTION_ARGS)
 Datum
 pg_create_restore_point(PG_FUNCTION_ARGS)
 {
-   text       *restore_name = PG_GETARG_TEXT_P(0);
+   text       *restore_name = PG_GETARG_TEXT_PP(0);
    char       *restore_name_str;
    XLogRecPtr  restorepoint;
 
index 585fcce98e8ae4460c598808132606d3310b631a..86a84ee23463511beda8af956f2247d91337480e 100644 (file)
@@ -2317,7 +2317,7 @@ Datum
 pg_extension_config_dump(PG_FUNCTION_ARGS)
 {
    Oid         tableoid = PG_GETARG_OID(0);
-   text       *wherecond = PG_GETARG_TEXT_P(1);
+   text       *wherecond = PG_GETARG_TEXT_PP(1);
    char       *tablename;
    Relation    extRel;
    ScanKeyData key[1];
index 5820fee5a36dc429e2e8c39d6589219bf9d84954..d547db714ea7ce193acf93d5e2d19a1e1ae9b23c 100644 (file)
@@ -538,7 +538,7 @@ DeleteSequenceTuple(Oid relid)
 Datum
 nextval(PG_FUNCTION_ARGS)
 {
-   text       *seqin = PG_GETARG_TEXT_P(0);
+   text       *seqin = PG_GETARG_TEXT_PP(0);
    RangeVar   *sequence;
    Oid         relid;
 
index d80bff671c0996f9e07d38f888530104fa3ea21f..a1bb3e958c768e8e0d30a3f82b395cf0bf1671df 100644 (file)
@@ -1673,13 +1673,13 @@ RelationBuildTriggers(Relation relation)
            bytea      *val;
            char       *p;
 
-           val = DatumGetByteaP(fastgetattr(htup,
-                                            Anum_pg_trigger_tgargs,
-                                            tgrel->rd_att, &isnull));
+           val = DatumGetByteaPP(fastgetattr(htup,
+                                             Anum_pg_trigger_tgargs,
+                                             tgrel->rd_att, &isnull));
            if (isnull)
                elog(ERROR, "tgargs is null in trigger for relation \"%s\"",
                     RelationGetRelationName(relation));
-           p = (char *) VARDATA(val);
+           p = (char *) VARDATA_ANY(val);
            build->tgargs = (char **) palloc(build->tgnargs * sizeof(char *));
            for (i = 0; i < build->tgnargs; i++)
            {
index 49668be0d70aa6b8410354d1d1a1e5535bfbc72e..b58d60c855d2a933ab9b231940ff4e3312b10bcc 100644 (file)
@@ -1561,9 +1561,9 @@ serialize_deflist(List *deflist)
 List *
 deserialize_deflist(Datum txt)
 {
-   text       *in = DatumGetTextP(txt);        /* in case it's toasted */
+   text       *in = DatumGetTextPP(txt);       /* in case it's toasted */
    List       *result = NIL;
-   int         len = VARSIZE(in) - VARHDRSZ;
+   int         len = VARSIZE_ANY_EXHDR(in);
    char       *ptr,
               *endptr,
               *workspace,
@@ -1583,7 +1583,7 @@ deserialize_deflist(Datum txt)
    ds_state    state = CS_WAITKEY;
 
    workspace = (char *) palloc(len + 1);       /* certainly enough room */
-   ptr = VARDATA(in);
+   ptr = VARDATA_ANY(in);
    endptr = ptr + len;
    for (; ptr < endptr; ptr++)
    {
index 4ff0188bccf7d92677be3040c2ded024d3df6d4d..90bef6f01f04af338fdc8fe9518fd079c23385dd 100644 (file)
@@ -3440,7 +3440,7 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext,
                value = ExecEvalExpr(e, econtext, &isnull);
                if (isnull)
                    return (Datum) 0;
-               data = DatumGetTextP(value);
+               data = DatumGetTextPP(value);
 
                e = (ExprState *) lsecond(xmlExpr->args);
                value = ExecEvalExpr(e, econtext, &isnull);
@@ -3471,7 +3471,7 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext,
                    if (isnull)
                        arg = NULL;
                    else
-                       arg = DatumGetTextP(value);
+                       arg = DatumGetTextPP(value);
                }
                else
                {
@@ -3504,7 +3504,7 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext,
                if (isnull)
                    version = NULL;
                else
-                   version = DatumGetTextP(value);
+                   version = DatumGetTextPP(value);
 
                e = (ExprState *) lthird(xmlExpr->args);
                value = ExecEvalExpr(e, econtext, &isnull);
index f537affdd99d225d80c9674ff6d36bd81f088618..2cb60393852b93cda0a614bdb4dc69dc0c1aa47f 100644 (file)
@@ -399,12 +399,12 @@ Datum
 be_lowrite(PG_FUNCTION_ARGS)
 {
    int32       fd = PG_GETARG_INT32(0);
-   bytea      *wbuf = PG_GETARG_BYTEA_P(1);
+   bytea      *wbuf = PG_GETARG_BYTEA_PP(1);
    int         bytestowrite;
    int         totalwritten;
 
-   bytestowrite = VARSIZE(wbuf) - VARHDRSZ;
-   totalwritten = lo_write(fd, VARDATA(wbuf), bytestowrite);
+   bytestowrite = VARSIZE_ANY_EXHDR(wbuf);
+   totalwritten = lo_write(fd, VARDATA_ANY(wbuf), bytestowrite);
    PG_RETURN_INT32(totalwritten);
 }
 
index bf84c68a0cdafb8a8cd3cebfa711f7b69e55d066..5eaf863e02c03abeeaf880a527bc4ff0a69ea6f0 100644 (file)
@@ -1307,7 +1307,7 @@ pg_replication_origin_xact_reset(PG_FUNCTION_ARGS)
 Datum
 pg_replication_origin_advance(PG_FUNCTION_ARGS)
 {
-   text       *name = PG_GETARG_TEXT_P(0);
+   text       *name = PG_GETARG_TEXT_PP(0);
    XLogRecPtr  remote_commit = PG_GETARG_LSN(1);
    RepOriginId node;
 
index 87ee8bfe2e080b9091cf334944fd030c2ec88044..ba8a3d79a83ce8eacb51b052ceaaf636d563ba3f 100644 (file)
@@ -26,7 +26,7 @@ Datum
 ts_lexize(PG_FUNCTION_ARGS)
 {
    Oid         dictId = PG_GETARG_OID(0);
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    ArrayType  *a;
    TSDictionaryCacheEntry *dict;
    TSLexeme   *res,
@@ -38,8 +38,8 @@ ts_lexize(PG_FUNCTION_ARGS)
 
    res = (TSLexeme *) DatumGetPointer(FunctionCall4(&dict->lexize,
                                             PointerGetDatum(dict->dictData),
-                                               PointerGetDatum(VARDATA(in)),
-                                      Int32GetDatum(VARSIZE(in) - VARHDRSZ),
+                                           PointerGetDatum(VARDATA_ANY(in)),
+                                       Int32GetDatum(VARSIZE_ANY_EXHDR(in)),
                                                  PointerGetDatum(&dstate)));
 
    if (dstate.getnext)
@@ -47,8 +47,8 @@ ts_lexize(PG_FUNCTION_ARGS)
        dstate.isend = true;
        ptr = (TSLexeme *) DatumGetPointer(FunctionCall4(&dict->lexize,
                                             PointerGetDatum(dict->dictData),
-                                               PointerGetDatum(VARDATA(in)),
-                                      Int32GetDatum(VARSIZE(in) - VARHDRSZ),
+                                           PointerGetDatum(VARDATA_ANY(in)),
+                                       Int32GetDatum(VARSIZE_ANY_EXHDR(in)),
                                                  PointerGetDatum(&dstate)));
        if (ptr != NULL)
            res = ptr;
index 6e5de8f92020fa2c42f0a6fe9cb97613ed672207..398a781c037ee455216fbb4677f06e11038c2aef 100644 (file)
@@ -216,19 +216,19 @@ Datum
 to_tsvector_byid(PG_FUNCTION_ARGS)
 {
    Oid         cfgId = PG_GETARG_OID(0);
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    ParsedText  prs;
    TSVector    out;
 
-   prs.lenwords = (VARSIZE(in) - VARHDRSZ) / 6;        /* just estimation of
-                                                        * word's number */
+   prs.lenwords = VARSIZE_ANY_EXHDR(in) / 6;   /* just estimation of word's
+                                                * number */
    if (prs.lenwords == 0)
        prs.lenwords = 2;
    prs.curwords = 0;
    prs.pos = 0;
    prs.words = (ParsedWord *) palloc(sizeof(ParsedWord) * prs.lenwords);
 
-   parsetext(cfgId, &prs, VARDATA(in), VARSIZE(in) - VARHDRSZ);
+   parsetext(cfgId, &prs, VARDATA_ANY(in), VARSIZE_ANY_EXHDR(in));
    PG_FREE_IF_COPY(in, 1);
 
    if (prs.curwords)
@@ -247,7 +247,7 @@ to_tsvector_byid(PG_FUNCTION_ARGS)
 Datum
 to_tsvector(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(0);
+   text       *in = PG_GETARG_TEXT_PP(0);
    Oid         cfgId;
 
    cfgId = getTSCurrentConfig(true);
@@ -362,7 +362,7 @@ pushval_morph(Datum opaque, TSQueryParserState state, char *strval, int lenval,
 Datum
 to_tsquery_byid(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    TSQuery     query;
    MorphOpaque data;
 
@@ -380,7 +380,7 @@ to_tsquery_byid(PG_FUNCTION_ARGS)
 Datum
 to_tsquery(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(0);
+   text       *in = PG_GETARG_TEXT_PP(0);
    Oid         cfgId;
 
    cfgId = getTSCurrentConfig(true);
@@ -392,7 +392,7 @@ to_tsquery(PG_FUNCTION_ARGS)
 Datum
 plainto_tsquery_byid(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    TSQuery     query;
    MorphOpaque data;
 
@@ -410,7 +410,7 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS)
 Datum
 plainto_tsquery(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(0);
+   text       *in = PG_GETARG_TEXT_PP(0);
    Oid         cfgId;
 
    cfgId = getTSCurrentConfig(true);
@@ -423,7 +423,7 @@ plainto_tsquery(PG_FUNCTION_ARGS)
 Datum
 phraseto_tsquery_byid(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    TSQuery     query;
    MorphOpaque data;
 
@@ -441,7 +441,7 @@ phraseto_tsquery_byid(PG_FUNCTION_ARGS)
 Datum
 phraseto_tsquery(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(0);
+   text       *in = PG_GETARG_TEXT_PP(0);
    Oid         cfgId;
 
    cfgId = getTSCurrentConfig(true);
index 8ca1c62713ecbc74dd0717cd13b86fd329fda946..d8f2f65542bb66459b35c1bbbc78803d46542124 100644 (file)
@@ -123,7 +123,7 @@ ts_token_type_byname(PG_FUNCTION_ARGS)
 
    if (SRF_IS_FIRSTCALL())
    {
-       text       *prsname = PG_GETARG_TEXT_P(0);
+       text       *prsname = PG_GETARG_TEXT_PP(0);
        Oid         prsId;
 
        funcctx = SRF_FIRSTCALL_INIT();
@@ -172,8 +172,8 @@ prs_setup_firstcall(FuncCallContext *funcctx, Oid prsid, text *txt)
    st->list = (LexemeEntry *) palloc(sizeof(LexemeEntry) * st->len);
 
    prsdata = (void *) DatumGetPointer(FunctionCall2(&prs->prsstart,
-                                              PointerGetDatum(VARDATA(txt)),
-                                   Int32GetDatum(VARSIZE(txt) - VARHDRSZ)));
+                                          PointerGetDatum(VARDATA_ANY(txt)),
+                                    Int32GetDatum(VARSIZE_ANY_EXHDR(txt))));
 
    while ((type = DatumGetInt32(FunctionCall3(&prs->prstoken,
                                               PointerGetDatum(prsdata),
@@ -248,7 +248,7 @@ ts_parse_byid(PG_FUNCTION_ARGS)
 
    if (SRF_IS_FIRSTCALL())
    {
-       text       *txt = PG_GETARG_TEXT_P(1);
+       text       *txt = PG_GETARG_TEXT_PP(1);
 
        funcctx = SRF_FIRSTCALL_INIT();
        prs_setup_firstcall(funcctx, PG_GETARG_OID(0), txt);
@@ -270,8 +270,8 @@ ts_parse_byname(PG_FUNCTION_ARGS)
 
    if (SRF_IS_FIRSTCALL())
    {
-       text       *prsname = PG_GETARG_TEXT_P(0);
-       text       *txt = PG_GETARG_TEXT_P(1);
+       text       *prsname = PG_GETARG_TEXT_PP(0);
+       text       *txt = PG_GETARG_TEXT_PP(1);
        Oid         prsId;
 
        funcctx = SRF_FIRSTCALL_INIT();
@@ -289,9 +289,9 @@ ts_parse_byname(PG_FUNCTION_ARGS)
 Datum
 ts_headline_byid_opt(PG_FUNCTION_ARGS)
 {
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    TSQuery     query = PG_GETARG_TSQUERY(2);
-   text       *opt = (PG_NARGS() > 3 && PG_GETARG_POINTER(3)) ? PG_GETARG_TEXT_P(3) : NULL;
+   text       *opt = (PG_NARGS() > 3 && PG_GETARG_POINTER(3)) ? PG_GETARG_TEXT_PP(3) : NULL;
    HeadlineParsedText prs;
    List       *prsoptions;
    text       *out;
@@ -310,7 +310,8 @@ ts_headline_byid_opt(PG_FUNCTION_ARGS)
    prs.lenwords = 32;
    prs.words = (HeadlineWordEntry *) palloc(sizeof(HeadlineWordEntry) * prs.lenwords);
 
-   hlparsetext(cfg->cfgId, &prs, query, VARDATA(in), VARSIZE(in) - VARHDRSZ);
+   hlparsetext(cfg->cfgId, &prs, query,
+               VARDATA_ANY(in), VARSIZE_ANY_EXHDR(in));
 
    if (opt)
        prsoptions = deserialize_deflist(PointerGetDatum(opt));
index fca8420b0165485dec13fd3426d298fb84cce81a..35bdfc9a461787572c3155846a692bf0c4d55cee 100644 (file)
@@ -1559,7 +1559,7 @@ makeaclitem(PG_FUNCTION_ARGS)
 {
    Oid         grantee = PG_GETARG_OID(0);
    Oid         grantor = PG_GETARG_OID(1);
-   text       *privtext = PG_GETARG_TEXT_P(2);
+   text       *privtext = PG_GETARG_TEXT_PP(2);
    bool        goption = PG_GETARG_BOOL(3);
    AclItem    *result;
    AclMode     priv;
@@ -1835,8 +1835,8 @@ Datum
 has_table_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -1860,8 +1860,8 @@ has_table_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_table_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *tablename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -1886,7 +1886,7 @@ has_table_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -1912,7 +1912,7 @@ Datum
 has_table_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         tableoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -1937,8 +1937,8 @@ Datum
 has_table_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         tableoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -1961,7 +1961,7 @@ has_table_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -2043,8 +2043,8 @@ Datum
 has_sequence_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *sequencename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *sequencename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         sequenceoid;
    AclMode     mode;
@@ -2073,8 +2073,8 @@ has_sequence_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_sequence_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *sequencename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *sequencename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         sequenceoid;
    AclMode     mode;
@@ -2104,7 +2104,7 @@ has_sequence_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         sequenceoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2136,7 +2136,7 @@ Datum
 has_sequence_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         sequenceoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2167,8 +2167,8 @@ Datum
 has_sequence_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *sequencename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *sequencename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         sequenceoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2196,7 +2196,7 @@ has_sequence_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         sequenceoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
    char        relkind;
@@ -2254,8 +2254,8 @@ Datum
 has_any_column_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -2283,8 +2283,8 @@ has_any_column_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_any_column_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *tablename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -2313,7 +2313,7 @@ has_any_column_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2343,7 +2343,7 @@ Datum
 has_any_column_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         tableoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2372,8 +2372,8 @@ Datum
 has_any_column_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         tableoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2400,7 +2400,7 @@ has_any_column_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -2494,9 +2494,9 @@ Datum
 has_column_privilege_name_name_name(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *column = PG_GETARG_TEXT_P(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *column = PG_GETARG_TEXT_PP(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         roleid;
    Oid         tableoid;
    AttrNumber  colattnum;
@@ -2523,9 +2523,9 @@ Datum
 has_column_privilege_name_name_attnum(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
    AttrNumber  colattnum = PG_GETARG_INT16(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -2551,8 +2551,8 @@ has_column_privilege_name_id_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *column = PG_GETARG_TEXT_P(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *column = PG_GETARG_TEXT_PP(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         roleid;
    AttrNumber  colattnum;
    AclMode     mode;
@@ -2579,7 +2579,7 @@ has_column_privilege_name_id_attnum(PG_FUNCTION_ARGS)
    Name        username = PG_GETARG_NAME(0);
    Oid         tableoid = PG_GETARG_OID(1);
    AttrNumber  colattnum = PG_GETARG_INT16(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         roleid;
    AclMode     mode;
    int         privresult;
@@ -2602,9 +2602,9 @@ Datum
 has_column_privilege_id_name_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
-   text       *column = PG_GETARG_TEXT_P(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
+   text       *column = PG_GETARG_TEXT_PP(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         tableoid;
    AttrNumber  colattnum;
    AclMode     mode;
@@ -2629,9 +2629,9 @@ Datum
 has_column_privilege_id_name_attnum(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *tablename = PG_GETARG_TEXT_P(1);
+   text       *tablename = PG_GETARG_TEXT_PP(1);
    AttrNumber  colattnum = PG_GETARG_INT16(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    Oid         tableoid;
    AclMode     mode;
    int         privresult;
@@ -2655,8 +2655,8 @@ has_column_privilege_id_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         tableoid = PG_GETARG_OID(1);
-   text       *column = PG_GETARG_TEXT_P(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *column = PG_GETARG_TEXT_PP(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    AttrNumber  colattnum;
    AclMode     mode;
    int         privresult;
@@ -2681,7 +2681,7 @@ has_column_privilege_id_id_attnum(PG_FUNCTION_ARGS)
    Oid         roleid = PG_GETARG_OID(0);
    Oid         tableoid = PG_GETARG_OID(1);
    AttrNumber  colattnum = PG_GETARG_INT16(2);
-   text       *priv_type_text = PG_GETARG_TEXT_P(3);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(3);
    AclMode     mode;
    int         privresult;
 
@@ -2702,9 +2702,9 @@ has_column_privilege_id_id_attnum(PG_FUNCTION_ARGS)
 Datum
 has_column_privilege_name_name(PG_FUNCTION_ARGS)
 {
-   text       *tablename = PG_GETARG_TEXT_P(0);
-   text       *column = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
+   text       *column = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         tableoid;
    AttrNumber  colattnum;
@@ -2731,9 +2731,9 @@ has_column_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_column_privilege_name_attnum(PG_FUNCTION_ARGS)
 {
-   text       *tablename = PG_GETARG_TEXT_P(0);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
    AttrNumber  colattnum = PG_GETARG_INT16(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         tableoid;
    AclMode     mode;
@@ -2759,8 +2759,8 @@ Datum
 has_column_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         tableoid = PG_GETARG_OID(0);
-   text       *column = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *column = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AttrNumber  colattnum;
    AclMode     mode;
@@ -2787,7 +2787,7 @@ has_column_privilege_id_attnum(PG_FUNCTION_ARGS)
 {
    Oid         tableoid = PG_GETARG_OID(0);
    AttrNumber  colattnum = PG_GETARG_INT16(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    int         privresult;
@@ -2868,8 +2868,8 @@ Datum
 has_database_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *databasename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *databasename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         databaseoid;
    AclMode     mode;
@@ -2893,8 +2893,8 @@ has_database_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_database_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *databasename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *databasename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         databaseoid;
    AclMode     mode;
@@ -2919,7 +2919,7 @@ has_database_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         databaseoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2945,7 +2945,7 @@ Datum
 has_database_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         databaseoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2970,8 +2970,8 @@ Datum
 has_database_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *databasename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *databasename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         databaseoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -2994,7 +2994,7 @@ has_database_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         databaseoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -3066,8 +3066,8 @@ Datum
 has_foreign_data_wrapper_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *fdwname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *fdwname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         fdwid;
    AclMode     mode;
@@ -3091,8 +3091,8 @@ has_foreign_data_wrapper_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_foreign_data_wrapper_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *fdwname = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *fdwname = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         fdwid;
    AclMode     mode;
@@ -3117,7 +3117,7 @@ has_foreign_data_wrapper_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         fdwid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3140,7 +3140,7 @@ Datum
 has_foreign_data_wrapper_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         fdwid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3162,8 +3162,8 @@ Datum
 has_foreign_data_wrapper_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *fdwname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *fdwname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         fdwid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3186,7 +3186,7 @@ has_foreign_data_wrapper_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         fdwid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -3248,8 +3248,8 @@ Datum
 has_function_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *functionname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *functionname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         functionoid;
    AclMode     mode;
@@ -3273,8 +3273,8 @@ has_function_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_function_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *functionname = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *functionname = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         functionoid;
    AclMode     mode;
@@ -3299,7 +3299,7 @@ has_function_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         functionoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3325,7 +3325,7 @@ Datum
 has_function_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         functionoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3350,8 +3350,8 @@ Datum
 has_function_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *functionname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *functionname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         functionoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3374,7 +3374,7 @@ has_function_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         functionoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -3448,8 +3448,8 @@ Datum
 has_language_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *languagename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *languagename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         languageoid;
    AclMode     mode;
@@ -3473,8 +3473,8 @@ has_language_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_language_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *languagename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *languagename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         languageoid;
    AclMode     mode;
@@ -3499,7 +3499,7 @@ has_language_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         languageoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3525,7 +3525,7 @@ Datum
 has_language_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         languageoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3550,8 +3550,8 @@ Datum
 has_language_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *languagename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *languagename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         languageoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3574,7 +3574,7 @@ has_language_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         languageoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -3639,8 +3639,8 @@ Datum
 has_schema_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *schemaname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *schemaname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         schemaoid;
    AclMode     mode;
@@ -3664,8 +3664,8 @@ has_schema_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_schema_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *schemaname = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *schemaname = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         schemaoid;
    AclMode     mode;
@@ -3690,7 +3690,7 @@ has_schema_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         schemaoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3716,7 +3716,7 @@ Datum
 has_schema_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         schemaoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3741,8 +3741,8 @@ Datum
 has_schema_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *schemaname = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *schemaname = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         schemaoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3765,7 +3765,7 @@ has_schema_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         schemaoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -3832,8 +3832,8 @@ Datum
 has_server_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *servername = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *servername = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         serverid;
    AclMode     mode;
@@ -3857,8 +3857,8 @@ has_server_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_server_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *servername = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *servername = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         serverid;
    AclMode     mode;
@@ -3883,7 +3883,7 @@ has_server_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         serverid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3906,7 +3906,7 @@ Datum
 has_server_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         serverid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3928,8 +3928,8 @@ Datum
 has_server_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *servername = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *servername = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         serverid;
    AclMode     mode;
    AclResult   aclresult;
@@ -3952,7 +3952,7 @@ has_server_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         serverid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -4014,8 +4014,8 @@ Datum
 has_tablespace_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *tablespacename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablespacename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         tablespaceoid;
    AclMode     mode;
@@ -4039,8 +4039,8 @@ has_tablespace_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_tablespace_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *tablespacename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *tablespacename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         tablespaceoid;
    AclMode     mode;
@@ -4065,7 +4065,7 @@ has_tablespace_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         tablespaceoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4088,7 +4088,7 @@ Datum
 has_tablespace_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         tablespaceoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4110,8 +4110,8 @@ Datum
 has_tablespace_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *tablespacename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *tablespacename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         tablespaceoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4134,7 +4134,7 @@ has_tablespace_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         tablespaceoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -4195,8 +4195,8 @@ Datum
 has_type_privilege_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
-   text       *typename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *typename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         typeoid;
    AclMode     mode;
@@ -4220,8 +4220,8 @@ has_type_privilege_name_name(PG_FUNCTION_ARGS)
 Datum
 has_type_privilege_name(PG_FUNCTION_ARGS)
 {
-   text       *typename = PG_GETARG_TEXT_P(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *typename = PG_GETARG_TEXT_PP(0);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         typeoid;
    AclMode     mode;
@@ -4246,7 +4246,7 @@ has_type_privilege_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         typeoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4272,7 +4272,7 @@ Datum
 has_type_privilege_id(PG_FUNCTION_ARGS)
 {
    Oid         typeoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4297,8 +4297,8 @@ Datum
 has_type_privilege_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
-   text       *typename = PG_GETARG_TEXT_P(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *typename = PG_GETARG_TEXT_PP(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         typeoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4321,7 +4321,7 @@ has_type_privilege_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         typeoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
@@ -4396,7 +4396,7 @@ pg_has_role_name_name(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Name        rolename = PG_GETARG_NAME(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    Oid         roleoid;
    AclMode     mode;
@@ -4421,7 +4421,7 @@ Datum
 pg_has_role_name(PG_FUNCTION_ARGS)
 {
    Name        rolename = PG_GETARG_NAME(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    Oid         roleoid;
    AclMode     mode;
@@ -4446,7 +4446,7 @@ pg_has_role_name_id(PG_FUNCTION_ARGS)
 {
    Name        username = PG_GETARG_NAME(0);
    Oid         roleoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4469,7 +4469,7 @@ Datum
 pg_has_role_id(PG_FUNCTION_ARGS)
 {
    Oid         roleoid = PG_GETARG_OID(0);
-   text       *priv_type_text = PG_GETARG_TEXT_P(1);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(1);
    Oid         roleid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4492,7 +4492,7 @@ pg_has_role_id_name(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Name        rolename = PG_GETARG_NAME(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    Oid         roleoid;
    AclMode     mode;
    AclResult   aclresult;
@@ -4515,7 +4515,7 @@ pg_has_role_id_id(PG_FUNCTION_ARGS)
 {
    Oid         roleid = PG_GETARG_OID(0);
    Oid         roleoid = PG_GETARG_OID(1);
-   text       *priv_type_text = PG_GETARG_TEXT_P(2);
+   text       *priv_type_text = PG_GETARG_TEXT_PP(2);
    AclMode     mode;
    AclResult   aclresult;
 
index f0c4d2539619d875e458201d5aa753015d701320..1b849e870354d9ca6c54f9175cd1b33b20ab6857 100644 (file)
@@ -175,7 +175,7 @@ i4tochar(PG_FUNCTION_ARGS)
 Datum
 text_char(PG_FUNCTION_ARGS)
 {
-   text       *arg1 = PG_GETARG_TEXT_P(0);
+   text       *arg1 = PG_GETARG_TEXT_PP(0);
    char        result;
 
    /*
@@ -183,8 +183,8 @@ text_char(PG_FUNCTION_ARGS)
     * If the input is longer than one character, the excess data is silently
     * discarded.
     */
-   if (VARSIZE(arg1) > VARHDRSZ)
-       result = *(VARDATA(arg1));
+   if (VARSIZE_ANY_EXHDR(arg1) > 0)
+       result = *(VARDATA_ANY(arg1));
    else
        result = '\0';
 
index 8cdd1dc4f79a3b7633bf73a39062a038c8b483a3..58923912eb7792a0cbb81d63230a1e2081788a60 100644 (file)
@@ -308,7 +308,7 @@ Datum
 pg_relation_size(PG_FUNCTION_ARGS)
 {
    Oid         relOid = PG_GETARG_OID(0);
-   text       *forkName = PG_GETARG_TEXT_P(1);
+   text       *forkName = PG_GETARG_TEXT_PP(1);
    Relation    rel;
    int64       size;
 
index 027f28eb6236e0010ce3c586b0821631a4cc4db4..8fd8ede39e5ca8be8b6bd38a3a2ae279a025e22d 100644 (file)
@@ -35,7 +35,7 @@ static const struct pg_encoding *pg_find_encoding(const char *name);
 Datum
 binary_encode(PG_FUNCTION_ARGS)
 {
-   bytea      *data = PG_GETARG_BYTEA_P(0);
+   bytea      *data = PG_GETARG_BYTEA_PP(0);
    Datum       name = PG_GETARG_DATUM(1);
    text       *result;
    char       *namebuf;
@@ -44,7 +44,7 @@ binary_encode(PG_FUNCTION_ARGS)
                res;
    const struct pg_encoding *enc;
 
-   datalen = VARSIZE(data) - VARHDRSZ;
+   datalen = VARSIZE_ANY_EXHDR(data);
 
    namebuf = TextDatumGetCString(name);
 
@@ -54,10 +54,10 @@ binary_encode(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("unrecognized encoding: \"%s\"", namebuf)));
 
-   resultlen = enc->encode_len(VARDATA(data), datalen);
+   resultlen = enc->encode_len(VARDATA_ANY(data), datalen);
    result = palloc(VARHDRSZ + resultlen);
 
-   res = enc->encode(VARDATA(data), datalen, VARDATA(result));
+   res = enc->encode(VARDATA_ANY(data), datalen, VARDATA(result));
 
    /* Make this FATAL 'cause we've trodden on memory ... */
    if (res > resultlen)
@@ -71,7 +71,7 @@ binary_encode(PG_FUNCTION_ARGS)
 Datum
 binary_decode(PG_FUNCTION_ARGS)
 {
-   text       *data = PG_GETARG_TEXT_P(0);
+   text       *data = PG_GETARG_TEXT_PP(0);
    Datum       name = PG_GETARG_DATUM(1);
    bytea      *result;
    char       *namebuf;
@@ -80,7 +80,7 @@ binary_decode(PG_FUNCTION_ARGS)
                res;
    const struct pg_encoding *enc;
 
-   datalen = VARSIZE(data) - VARHDRSZ;
+   datalen = VARSIZE_ANY_EXHDR(data);
 
    namebuf = TextDatumGetCString(name);
 
@@ -90,10 +90,10 @@ binary_decode(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("unrecognized encoding: \"%s\"", namebuf)));
 
-   resultlen = enc->decode_len(VARDATA(data), datalen);
+   resultlen = enc->decode_len(VARDATA_ANY(data), datalen);
    result = palloc(VARHDRSZ + resultlen);
 
-   res = enc->decode(VARDATA(data), datalen, VARDATA(result));
+   res = enc->decode(VARDATA_ANY(data), datalen, VARDATA(result));
 
    /* Make this FATAL 'cause we've trodden on memory ... */
    if (res > resultlen)
index e552c8d20b61a082049068d2f8d776e35fef1179..c16bfbca9338a5ac85a05aefb7f8efbff97735ea 100644 (file)
@@ -3380,13 +3380,13 @@ Datum
 timestamp_to_char(PG_FUNCTION_ARGS)
 {
    Timestamp   dt = PG_GETARG_TIMESTAMP(0);
-   text       *fmt = PG_GETARG_TEXT_P(1),
+   text       *fmt = PG_GETARG_TEXT_PP(1),
               *res;
    TmToChar    tmtc;
    struct pg_tm *tm;
    int         thisdate;
 
-   if ((VARSIZE(fmt) - VARHDRSZ) <= 0 || TIMESTAMP_NOT_FINITE(dt))
+   if (VARSIZE_ANY_EXHDR(fmt) <= 0 || TIMESTAMP_NOT_FINITE(dt))
        PG_RETURN_NULL();
 
    ZERO_tmtc(&tmtc);
@@ -3411,14 +3411,14 @@ Datum
 timestamptz_to_char(PG_FUNCTION_ARGS)
 {
    TimestampTz dt = PG_GETARG_TIMESTAMP(0);
-   text       *fmt = PG_GETARG_TEXT_P(1),
+   text       *fmt = PG_GETARG_TEXT_PP(1),
               *res;
    TmToChar    tmtc;
    int         tz;
    struct pg_tm *tm;
    int         thisdate;
 
-   if ((VARSIZE(fmt) - VARHDRSZ) <= 0 || TIMESTAMP_NOT_FINITE(dt))
+   if (VARSIZE_ANY_EXHDR(fmt) <= 0 || TIMESTAMP_NOT_FINITE(dt))
        PG_RETURN_NULL();
 
    ZERO_tmtc(&tmtc);
@@ -3448,12 +3448,12 @@ Datum
 interval_to_char(PG_FUNCTION_ARGS)
 {
    Interval   *it = PG_GETARG_INTERVAL_P(0);
-   text       *fmt = PG_GETARG_TEXT_P(1),
+   text       *fmt = PG_GETARG_TEXT_PP(1),
               *res;
    TmToChar    tmtc;
    struct pg_tm *tm;
 
-   if ((VARSIZE(fmt) - VARHDRSZ) <= 0)
+   if (VARSIZE_ANY_EXHDR(fmt) <= 0)
        PG_RETURN_NULL();
 
    ZERO_tmtc(&tmtc);
@@ -3481,8 +3481,8 @@ interval_to_char(PG_FUNCTION_ARGS)
 Datum
 to_timestamp(PG_FUNCTION_ARGS)
 {
-   text       *date_txt = PG_GETARG_TEXT_P(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *date_txt = PG_GETARG_TEXT_PP(0);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    Timestamp   result;
    int         tz;
    struct pg_tm tm;
@@ -3508,8 +3508,8 @@ to_timestamp(PG_FUNCTION_ARGS)
 Datum
 to_date(PG_FUNCTION_ARGS)
 {
-   text       *date_txt = PG_GETARG_TEXT_P(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *date_txt = PG_GETARG_TEXT_PP(0);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    DateADT     result;
    struct pg_tm tm;
    fsec_t      fsec;
@@ -5038,8 +5038,8 @@ do { \
 Datum
 numeric_to_number(PG_FUNCTION_ARGS)
 {
-   text       *value = PG_GETARG_TEXT_P(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *value = PG_GETARG_TEXT_PP(0);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    Datum       result;
    FormatNode *format;
@@ -5049,7 +5049,7 @@ numeric_to_number(PG_FUNCTION_ARGS)
    int         scale,
                precision;
 
-   len = VARSIZE(fmt) - VARHDRSZ;
+   len = VARSIZE_ANY_EXHDR(fmt);
 
    if (len <= 0 || len >= INT_MAX / NUM_MAX_ITEM_SIZ)
        PG_RETURN_NULL();
@@ -5058,8 +5058,8 @@ numeric_to_number(PG_FUNCTION_ARGS)
 
    numstr = (char *) palloc((len * NUM_MAX_ITEM_SIZ) + 1);
 
-   NUM_processor(format, &Num, VARDATA(value), numstr,
-                 VARSIZE(value) - VARHDRSZ, 0, 0, false, PG_GET_COLLATION());
+   NUM_processor(format, &Num, VARDATA_ANY(value), numstr,
+                 VARSIZE_ANY_EXHDR(value), 0, 0, false, PG_GET_COLLATION());
 
    scale = Num.post;
    precision = Num.pre + Num.multi + scale;
@@ -5100,7 +5100,7 @@ Datum
 numeric_to_char(PG_FUNCTION_ARGS)
 {
    Numeric     value = PG_GETARG_NUMERIC(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    FormatNode *format;
    text       *result;
@@ -5224,7 +5224,7 @@ Datum
 int4_to_char(PG_FUNCTION_ARGS)
 {
    int32       value = PG_GETARG_INT32(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    FormatNode *format;
    text       *result;
@@ -5319,7 +5319,7 @@ Datum
 int8_to_char(PG_FUNCTION_ARGS)
 {
    int64       value = PG_GETARG_INT64(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    FormatNode *format;
    text       *result;
@@ -5429,7 +5429,7 @@ Datum
 float4_to_char(PG_FUNCTION_ARGS)
 {
    float4      value = PG_GETARG_FLOAT4(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    FormatNode *format;
    text       *result;
@@ -5535,7 +5535,7 @@ Datum
 float8_to_char(PG_FUNCTION_ARGS)
 {
    float8      value = PG_GETARG_FLOAT8(0);
-   text       *fmt = PG_GETARG_TEXT_P(1);
+   text       *fmt = PG_GETARG_TEXT_PP(1);
    NUMDesc     Num;
    FormatNode *format;
    text       *result;
index 1a127d9258ae0a3ed27cf52044bb1ef41c95081a..2147936dd8a91d026c567108a4bbb6bd89190151 100644 (file)
@@ -187,7 +187,7 @@ read_text_file(const char *filename, int64 seek_offset, int64 bytes_to_read,
 Datum
 pg_read_file(PG_FUNCTION_ARGS)
 {
-   text       *filename_t = PG_GETARG_TEXT_P(0);
+   text       *filename_t = PG_GETARG_TEXT_PP(0);
    int64       seek_offset = 0;
    int64       bytes_to_read = -1;
    bool        missing_ok = false;
@@ -228,7 +228,7 @@ pg_read_file(PG_FUNCTION_ARGS)
 Datum
 pg_read_binary_file(PG_FUNCTION_ARGS)
 {
-   text       *filename_t = PG_GETARG_TEXT_P(0);
+   text       *filename_t = PG_GETARG_TEXT_PP(0);
    int64       seek_offset = 0;
    int64       bytes_to_read = -1;
    bool        missing_ok = false;
@@ -303,7 +303,7 @@ pg_read_binary_file_all(PG_FUNCTION_ARGS)
 Datum
 pg_stat_file(PG_FUNCTION_ARGS)
 {
-   text       *filename_t = PG_GETARG_TEXT_P(0);
+   text       *filename_t = PG_GETARG_TEXT_PP(0);
    char       *filename;
    struct stat fst;
    Datum       values[6];
@@ -421,7 +421,7 @@ pg_ls_dir(PG_FUNCTION_ARGS)
        oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
 
        fctx = palloc(sizeof(directory_fctx));
-       fctx->location = convert_and_check_filename(PG_GETARG_TEXT_P(0));
+       fctx->location = convert_and_check_filename(PG_GETARG_TEXT_PP(0));
 
        fctx->include_dot_dirs = include_dot_dirs;
        fctx->dirdesc = AllocateDir(fctx->location);
index 0ed6a10a443b98707a16a3173c05c6cfdf19cc2a..9fb0e480bf025e2be6fdbe048d12d58a7d88b1e1 100644 (file)
@@ -299,8 +299,8 @@ json_recv(PG_FUNCTION_ARGS)
 JsonLexContext *
 makeJsonLexContext(text *json, bool need_escapes)
 {
-   return makeJsonLexContextCstringLen(VARDATA(json),
-                                       VARSIZE(json) - VARHDRSZ,
+   return makeJsonLexContextCstringLen(VARDATA_ANY(json),
+                                       VARSIZE_ANY_EXHDR(json),
                                        need_escapes);
 }
 
@@ -1570,7 +1570,7 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
            break;
        case JSONTYPE_CAST:
            /* outfuncoid refers to a cast function, not an output function */
-           jsontext = DatumGetTextP(OidFunctionCall1(outfuncoid, val));
+           jsontext = DatumGetTextPP(OidFunctionCall1(outfuncoid, val));
            outputstr = text_to_cstring(jsontext);
            appendStringInfoString(result, outputstr);
            pfree(outputstr);
@@ -2492,7 +2492,7 @@ json_typeof(PG_FUNCTION_ARGS)
    JsonTokenType tok;
    char       *type;
 
-   json = PG_GETARG_TEXT_P(0);
+   json = PG_GETARG_TEXT_PP(0);
    lex = makeJsonLexContext(json, false);
 
    /* Lex exactly one token from the input and check its type. */
index 5b6178badf9111e63be670f6450b853b984b1abd..164f57ef770e57cb084b232a146f1203b58fd752 100644 (file)
@@ -857,7 +857,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
                    /* parse the json right into the existing result object */
                    JsonLexContext *lex;
                    JsonSemAction sem;
-                   text       *json = DatumGetTextP(val);
+                   text       *json = DatumGetTextPP(val);
 
                    lex = makeJsonLexContext(json, true);
 
index 9b46f8e8359f2a8fc9b40e3392b993bdd0a324d0..bf2c91f02ea799b0380a18f8f0dccdcf7dc4e69b 100644 (file)
@@ -371,7 +371,7 @@ json_object_keys(PG_FUNCTION_ARGS)
 
    if (SRF_IS_FIRSTCALL())
    {
-       text       *json = PG_GETARG_TEXT_P(0);
+       text       *json = PG_GETARG_TEXT_PP(0);
        JsonLexContext *lex = makeJsonLexContext(json, true);
        JsonSemAction *sem;
        MemoryContext oldcontext;
@@ -482,7 +482,7 @@ okeys_scalar(void *state, char *token, JsonTokenType tokentype)
 Datum
 json_object_field(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    text       *fname = PG_GETARG_TEXT_PP(1);
    char       *fnamestr = text_to_cstring(fname);
    text       *result;
@@ -518,7 +518,7 @@ jsonb_object_field(PG_FUNCTION_ARGS)
 Datum
 json_object_field_text(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    text       *fname = PG_GETARG_TEXT_PP(1);
    char       *fnamestr = text_to_cstring(fname);
    text       *result;
@@ -585,7 +585,7 @@ jsonb_object_field_text(PG_FUNCTION_ARGS)
 Datum
 json_array_element(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    int         element = PG_GETARG_INT32(1);
    text       *result;
 
@@ -628,7 +628,7 @@ jsonb_array_element(PG_FUNCTION_ARGS)
 Datum
 json_array_element_text(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    int         element = PG_GETARG_INT32(1);
    text       *result;
 
@@ -717,7 +717,7 @@ json_extract_path_text(PG_FUNCTION_ARGS)
 static Datum
 get_path_all(FunctionCallInfo fcinfo, bool as_text)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    ArrayType  *path = PG_GETARG_ARRAYTYPE_P(1);
    text       *result;
    Datum      *pathtext;
@@ -1338,7 +1338,7 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
 Datum
 json_array_length(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    AlenState  *state;
    JsonLexContext *lex;
    JsonSemAction *sem;
@@ -1592,7 +1592,7 @@ each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
 static Datum
 each_worker(FunctionCallInfo fcinfo, bool as_text)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    JsonLexContext *lex;
    JsonSemAction *sem;
    ReturnSetInfo *rsi;
@@ -1906,7 +1906,7 @@ json_array_elements_text(PG_FUNCTION_ARGS)
 static Datum
 elements_worker(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
 
    /* elements only needs escaped strings when as_text */
    JsonLexContext *lex = makeJsonLexContext(json, as_text);
@@ -2177,7 +2177,7 @@ populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,
    if (jtype == JSONOID)
    {
        /* just get the text */
-       json = PG_GETARG_TEXT_P(json_arg_num);
+       json = PG_GETARG_TEXT_PP(json_arg_num);
 
        json_hash = get_json_object_as_hash(json, funcname);
 
@@ -2767,7 +2767,7 @@ populate_recordset_worker(FunctionCallInfo fcinfo, const char *funcname,
 
    if (jtype == JSONOID)
    {
-       text       *json = PG_GETARG_TEXT_P(json_arg_num);
+       text       *json = PG_GETARG_TEXT_PP(json_arg_num);
        JsonLexContext *lex;
        JsonSemAction *sem;
 
@@ -3193,7 +3193,7 @@ sn_scalar(void *state, char *token, JsonTokenType tokentype)
 Datum
 json_strip_nulls(PG_FUNCTION_ARGS)
 {
-   text       *json = PG_GETARG_TEXT_P(0);
+   text       *json = PG_GETARG_TEXT_PP(0);
    StripnullState *state;
    JsonLexContext *lex;
    JsonSemAction *sem;
index 91fe10986720702e2b58c27ba238fdbbb6d9b964..8d9d285fb55d51321d3ca86c603c39691042b2ce 100644 (file)
@@ -175,14 +175,14 @@ Generic_Text_IC_like(text *str, text *pat, Oid collation)
    if (pg_database_encoding_max_length() > 1)
    {
        /* lower's result is never packed, so OK to use old macros here */
-       pat = DatumGetTextP(DirectFunctionCall1Coll(lower, collation,
-                                                   PointerGetDatum(pat)));
-       p = VARDATA(pat);
-       plen = (VARSIZE(pat) - VARHDRSZ);
-       str = DatumGetTextP(DirectFunctionCall1Coll(lower, collation,
-                                                   PointerGetDatum(str)));
-       s = VARDATA(str);
-       slen = (VARSIZE(str) - VARHDRSZ);
+       pat = DatumGetTextPP(DirectFunctionCall1Coll(lower, collation,
+                                                    PointerGetDatum(pat)));
+       p = VARDATA_ANY(pat);
+       plen = VARSIZE_ANY_EXHDR(pat);
+       str = DatumGetTextPP(DirectFunctionCall1Coll(lower, collation,
+                                                    PointerGetDatum(str)));
+       s = VARDATA_ANY(str);
+       slen = VARSIZE_ANY_EXHDR(str);
        if (GetDatabaseEncoding() == PG_UTF8)
            return UTF8_MatchText(s, slen, p, plen, 0, true);
        else
@@ -365,8 +365,8 @@ nameiclike(PG_FUNCTION_ARGS)
    bool        result;
    text       *strtext;
 
-   strtext = DatumGetTextP(DirectFunctionCall1(name_text,
-                                               NameGetDatum(str)));
+   strtext = DatumGetTextPP(DirectFunctionCall1(name_text,
+                                                NameGetDatum(str)));
    result = (Generic_Text_IC_like(strtext, pat, PG_GET_COLLATION()) == LIKE_TRUE);
 
    PG_RETURN_BOOL(result);
@@ -380,8 +380,8 @@ nameicnlike(PG_FUNCTION_ARGS)
    bool        result;
    text       *strtext;
 
-   strtext = DatumGetTextP(DirectFunctionCall1(name_text,
-                                               NameGetDatum(str)));
+   strtext = DatumGetTextPP(DirectFunctionCall1(name_text,
+                                                NameGetDatum(str)));
    result = (Generic_Text_IC_like(strtext, pat, PG_GET_COLLATION()) != LIKE_TRUE);
 
    PG_RETURN_BOOL(result);
index 781c713f81ea4dda608859c91d0053270276d7e9..6cce0f292c389818624822d7e48bdeed8fd8fa93 100644 (file)
@@ -3601,7 +3601,7 @@ numeric_avg_serialize(PG_FUNCTION_ARGS)
 
    temp = DirectFunctionCall1(numeric_send,
                               NumericGetDatum(make_result(&tmp_var)));
-   sumX = DatumGetByteaP(temp);
+   sumX = DatumGetByteaPP(temp);
    free_var(&tmp_var);
 
    pq_begintypsend(&buf);
@@ -3610,7 +3610,7 @@ numeric_avg_serialize(PG_FUNCTION_ARGS)
    pq_sendint64(&buf, state->N);
 
    /* sumX */
-   pq_sendbytes(&buf, VARDATA(sumX), VARSIZE(sumX) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX), VARSIZE_ANY_EXHDR(sumX));
 
    /* maxScale */
    pq_sendint(&buf, state->maxScale, 4);
@@ -3643,14 +3643,15 @@ numeric_avg_deserialize(PG_FUNCTION_ARGS)
    if (!AggCheckCallContext(fcinfo, NULL))
        elog(ERROR, "aggregate function called in non-aggregate context");
 
-   sstate = PG_GETARG_BYTEA_P(0);
+   sstate = PG_GETARG_BYTEA_PP(0);
 
    /*
     * Copy the bytea into a StringInfo so that we can "receive" it using the
     * standard recv-function infrastructure.
     */
    initStringInfo(&buf);
-   appendBinaryStringInfo(&buf, VARDATA(sstate), VARSIZE(sstate) - VARHDRSZ);
+   appendBinaryStringInfo(&buf,
+                          VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
 
    result = makeNumericAggStateCurrentContext(false);
 
@@ -3713,12 +3714,12 @@ numeric_serialize(PG_FUNCTION_ARGS)
    accum_sum_final(&state->sumX, &tmp_var);
    temp = DirectFunctionCall1(numeric_send,
                               NumericGetDatum(make_result(&tmp_var)));
-   sumX = DatumGetByteaP(temp);
+   sumX = DatumGetByteaPP(temp);
 
    accum_sum_final(&state->sumX2, &tmp_var);
    temp = DirectFunctionCall1(numeric_send,
                               NumericGetDatum(make_result(&tmp_var)));
-   sumX2 = DatumGetByteaP(temp);
+   sumX2 = DatumGetByteaPP(temp);
 
    free_var(&tmp_var);
 
@@ -3728,10 +3729,10 @@ numeric_serialize(PG_FUNCTION_ARGS)
    pq_sendint64(&buf, state->N);
 
    /* sumX */
-   pq_sendbytes(&buf, VARDATA(sumX), VARSIZE(sumX) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX), VARSIZE_ANY_EXHDR(sumX));
 
    /* sumX2 */
-   pq_sendbytes(&buf, VARDATA(sumX2), VARSIZE(sumX2) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX2), VARSIZE_ANY_EXHDR(sumX2));
 
    /* maxScale */
    pq_sendint(&buf, state->maxScale, 4);
@@ -3765,14 +3766,15 @@ numeric_deserialize(PG_FUNCTION_ARGS)
    if (!AggCheckCallContext(fcinfo, NULL))
        elog(ERROR, "aggregate function called in non-aggregate context");
 
-   sstate = PG_GETARG_BYTEA_P(0);
+   sstate = PG_GETARG_BYTEA_PP(0);
 
    /*
     * Copy the bytea into a StringInfo so that we can "receive" it using the
     * standard recv-function infrastructure.
     */
    initStringInfo(&buf);
-   appendBinaryStringInfo(&buf, VARDATA(sstate), VARSIZE(sstate) - VARHDRSZ);
+   appendBinaryStringInfo(&buf,
+                          VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
 
    result = makeNumericAggStateCurrentContext(false);
 
@@ -4114,7 +4116,7 @@ numeric_poly_serialize(PG_FUNCTION_ARGS)
 #endif
        temp = DirectFunctionCall1(numeric_send,
                                   NumericGetDatum(make_result(&num)));
-       sumX = DatumGetByteaP(temp);
+       sumX = DatumGetByteaPP(temp);
 
 #ifdef HAVE_INT128
        int128_to_numericvar(state->sumX2, &num);
@@ -4123,7 +4125,7 @@ numeric_poly_serialize(PG_FUNCTION_ARGS)
 #endif
        temp = DirectFunctionCall1(numeric_send,
                                   NumericGetDatum(make_result(&num)));
-       sumX2 = DatumGetByteaP(temp);
+       sumX2 = DatumGetByteaPP(temp);
 
        free_var(&num);
    }
@@ -4134,10 +4136,10 @@ numeric_poly_serialize(PG_FUNCTION_ARGS)
    pq_sendint64(&buf, state->N);
 
    /* sumX */
-   pq_sendbytes(&buf, VARDATA(sumX), VARSIZE(sumX) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX), VARSIZE_ANY_EXHDR(sumX));
 
    /* sumX2 */
-   pq_sendbytes(&buf, VARDATA(sumX2), VARSIZE(sumX2) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX2), VARSIZE_ANY_EXHDR(sumX2));
 
    result = pq_endtypsend(&buf);
 
@@ -4163,14 +4165,15 @@ numeric_poly_deserialize(PG_FUNCTION_ARGS)
    if (!AggCheckCallContext(fcinfo, NULL))
        elog(ERROR, "aggregate function called in non-aggregate context");
 
-   sstate = PG_GETARG_BYTEA_P(0);
+   sstate = PG_GETARG_BYTEA_PP(0);
 
    /*
     * Copy the bytea into a StringInfo so that we can "receive" it using the
     * standard recv-function infrastructure.
     */
    initStringInfo(&buf);
-   appendBinaryStringInfo(&buf, VARDATA(sstate), VARSIZE(sstate) - VARHDRSZ);
+   appendBinaryStringInfo(&buf,
+                          VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
 
    result = makePolyNumAggStateCurrentContext(false);
 
@@ -4338,7 +4341,7 @@ int8_avg_serialize(PG_FUNCTION_ARGS)
 #endif
        temp = DirectFunctionCall1(numeric_send,
                                   NumericGetDatum(make_result(&num)));
-       sumX = DatumGetByteaP(temp);
+       sumX = DatumGetByteaPP(temp);
 
        free_var(&num);
    }
@@ -4349,7 +4352,7 @@ int8_avg_serialize(PG_FUNCTION_ARGS)
    pq_sendint64(&buf, state->N);
 
    /* sumX */
-   pq_sendbytes(&buf, VARDATA(sumX), VARSIZE(sumX) - VARHDRSZ);
+   pq_sendbytes(&buf, VARDATA_ANY(sumX), VARSIZE_ANY_EXHDR(sumX));
 
    result = pq_endtypsend(&buf);
 
@@ -4372,14 +4375,15 @@ int8_avg_deserialize(PG_FUNCTION_ARGS)
    if (!AggCheckCallContext(fcinfo, NULL))
        elog(ERROR, "aggregate function called in non-aggregate context");
 
-   sstate = PG_GETARG_BYTEA_P(0);
+   sstate = PG_GETARG_BYTEA_PP(0);
 
    /*
     * Copy the bytea into a StringInfo so that we can "receive" it using the
     * standard recv-function infrastructure.
     */
    initStringInfo(&buf);
-   appendBinaryStringInfo(&buf, VARDATA(sstate), VARSIZE(sstate) - VARHDRSZ);
+   appendBinaryStringInfo(&buf,
+                          VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate));
 
    result = makePolyNumAggStateCurrentContext(false);
 
index 549c5030312fa154fe97a0413927309ebfc19f7b..43e5bb79621e28c3c1829b79adf25dfb5be751af 100644 (file)
@@ -76,17 +76,17 @@ quote_literal_internal(char *dst, const char *src, size_t len)
 Datum
 quote_literal(PG_FUNCTION_ARGS)
 {
-   text       *t = PG_GETARG_TEXT_P(0);
+   text       *t = PG_GETARG_TEXT_PP(0);
    text       *result;
    char       *cp1;
    char       *cp2;
    int         len;
 
-   len = VARSIZE(t) - VARHDRSZ;
+   len = VARSIZE_ANY_EXHDR(t);
    /* We make a worst-case result area; wasting a little space is OK */
    result = (text *) palloc(len * 2 + 3 + VARHDRSZ);
 
-   cp1 = VARDATA(t);
+   cp1 = VARDATA_ANY(t);
    cp2 = VARDATA(result);
 
    SET_VARSIZE(result, VARHDRSZ + quote_literal_internal(cp2, cp1, len));
index e518523a70bebfc71007616f0f07e7aaf60a1e1b..304345b9044de6c7e262d300622df18dd29ea878 100644 (file)
@@ -404,7 +404,7 @@ range_constructor3(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_DATA_EXCEPTION),
               errmsg("range constructor flags argument must not be null")));
 
-   flags = range_parse_flags(text_to_cstring(PG_GETARG_TEXT_P(2)));
+   flags = range_parse_flags(text_to_cstring(PG_GETARG_TEXT_PP(2)));
 
    lower.val = PG_ARGISNULL(0) ? (Datum) 0 : arg1;
    lower.infinite = PG_ARGISNULL(0);
index fa920c0d8cdaad218333ef3e7db921071253f1fb..702924a9586dd911caefb9815c0cc3fd3ab7cd05 100644 (file)
@@ -1810,7 +1810,7 @@ regnamespacesend(PG_FUNCTION_ARGS)
 Datum
 text_regclass(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    Oid         result;
    RangeVar   *rv;
 
index 3c697f3c0dfa527cf22e828d5b14a4d447507a29..5c823250bc21d4b054c205b76c7cf265ae8240ad 100644 (file)
@@ -647,7 +647,7 @@ Datum
 pg_get_viewdef_name(PG_FUNCTION_ARGS)
 {
    /* By qualified name */
-   text       *viewname = PG_GETARG_TEXT_P(0);
+   text       *viewname = PG_GETARG_TEXT_PP(0);
    int         prettyFlags;
    RangeVar   *viewrel;
    Oid         viewoid;
@@ -672,7 +672,7 @@ Datum
 pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
 {
    /* By qualified name */
-   text       *viewname = PG_GETARG_TEXT_P(0);
+   text       *viewname = PG_GETARG_TEXT_PP(0);
    bool        pretty = PG_GETARG_BOOL(1);
    int         prettyFlags;
    RangeVar   *viewrel;
@@ -1034,7 +1034,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
                            tgrel->rd_att, &isnull);
        if (isnull)
            elog(ERROR, "tgargs is null for trigger %u", trigid);
-       p = (char *) VARDATA(DatumGetByteaP(value));
+       p = (char *) VARDATA_ANY(DatumGetByteaPP(value));
        for (i = 0; i < trigrec->tgnargs; i++)
        {
            if (i > 0)
@@ -2034,7 +2034,7 @@ decompile_column_index_array(Datum column_index_array, Oid relId,
 Datum
 pg_get_expr(PG_FUNCTION_ARGS)
 {
-   text       *expr = PG_GETARG_TEXT_P(0);
+   text       *expr = PG_GETARG_TEXT_PP(0);
    Oid         relid = PG_GETARG_OID(1);
    int         prettyFlags;
    char       *relname;
@@ -2064,7 +2064,7 @@ pg_get_expr(PG_FUNCTION_ARGS)
 Datum
 pg_get_expr_ext(PG_FUNCTION_ARGS)
 {
-   text       *expr = PG_GETARG_TEXT_P(0);
+   text       *expr = PG_GETARG_TEXT_PP(0);
    Oid         relid = PG_GETARG_OID(1);
    bool        pretty = PG_GETARG_BOOL(2);
    int         prettyFlags;
@@ -2162,7 +2162,7 @@ pg_get_userbyid(PG_FUNCTION_ARGS)
 Datum
 pg_get_serial_sequence(PG_FUNCTION_ARGS)
 {
-   text       *tablename = PG_GETARG_TEXT_P(0);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
    text       *columnname = PG_GETARG_TEXT_PP(1);
    RangeVar   *tablerv;
    Oid         tableOid;
index a04fd7bc905ce5191ae48a104371a4e92a59f07b..5f28a1a7c58083fca1c688e3d631c345904b260e 100644 (file)
@@ -5342,13 +5342,12 @@ like_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation,
    }
    else
    {
-       bytea      *bstr = DatumGetByteaP(patt_const->constvalue);
+       bytea      *bstr = DatumGetByteaPP(patt_const->constvalue);
 
-       pattlen = VARSIZE(bstr) - VARHDRSZ;
+       pattlen = VARSIZE_ANY_EXHDR(bstr);
        patt = (char *) palloc(pattlen);
-       memcpy(patt, VARDATA(bstr), pattlen);
-       if ((Pointer) bstr != DatumGetPointer(patt_const->constvalue))
-           pfree(bstr);
+       memcpy(patt, VARDATA_ANY(bstr), pattlen);
+       Assert((Pointer) bstr == DatumGetPointer(patt_const->constvalue));
    }
 
    match = palloc(pattlen + 1);
@@ -5858,13 +5857,12 @@ make_greater_string(const Const *str_const, FmgrInfo *ltproc, Oid collation)
    }
    else if (datatype == BYTEAOID)
    {
-       bytea      *bstr = DatumGetByteaP(str_const->constvalue);
+       bytea      *bstr = DatumGetByteaPP(str_const->constvalue);
 
-       len = VARSIZE(bstr) - VARHDRSZ;
+       len = VARSIZE_ANY_EXHDR(bstr);
        workstr = (char *) palloc(len);
-       memcpy(workstr, VARDATA(bstr), len);
-       if ((Pointer) bstr != DatumGetPointer(str_const->constvalue))
-           pfree(bstr);
+       memcpy(workstr, VARDATA_ANY(bstr), len);
+       Assert((Pointer) bstr == DatumGetPointer(str_const->constvalue));
        cmpstr = str_const->constvalue;
    }
    else
index a3b372f22a58ad28d357569f14eeca05cee9811b..49a5a157b94e24b5781c0f9bb6cb09c56c03891a 100644 (file)
@@ -368,7 +368,7 @@ currtid_byreloid(PG_FUNCTION_ARGS)
 Datum
 currtid_byrelname(PG_FUNCTION_ARGS)
 {
-   text       *relname = PG_GETARG_TEXT_P(0);
+   text       *relname = PG_GETARG_TEXT_PP(0);
    ItemPointer tid = PG_GETARG_ITEMPOINTER(1);
    ItemPointer result;
    RangeVar   *relrv;
index 266a82d634dd258c524b2e0c07a4eb65d2fc68c2..1bd3deabd5605837e083c451e8343ee51f523111 100644 (file)
@@ -280,7 +280,7 @@ Datum
 tsquery_rewrite_query(PG_FUNCTION_ARGS)
 {
    TSQuery     query = PG_GETARG_TSQUERY_COPY(0);
-   text       *in = PG_GETARG_TEXT_P(1);
+   text       *in = PG_GETARG_TEXT_PP(1);
    TSQuery     rewrited = query;
    MemoryContext outercontext = CurrentMemoryContext;
    MemoryContext oldcontext;
index 3dab84a887f5327f53fc851b4e7edf42e046f663..c694637c8fdad56a757927a8b2bf778391358c86 100644 (file)
@@ -557,8 +557,8 @@ tsvector_delete_str(PG_FUNCTION_ARGS)
 {
    TSVector    tsin = PG_GETARG_TSVECTOR(0),
                tsout;
-   text       *tlexeme = PG_GETARG_TEXT_P(1);
-   char       *lexeme = VARDATA(tlexeme);
+   text       *tlexeme = PG_GETARG_TEXT_PP(1);
+   char       *lexeme = VARDATA_ANY(tlexeme);
    int         lexeme_len = VARSIZE_ANY_EXHDR(tlexeme),
                skip_index;
 
@@ -2320,8 +2320,8 @@ ts_stat_sql(MemoryContext persistentContext, text *txt, text *ws)
    {
        char       *buf;
 
-       buf = VARDATA(ws);
-       while (buf - VARDATA(ws) < VARSIZE(ws) - VARHDRSZ)
+       buf = VARDATA_ANY(ws);
+       while (buf - VARDATA_ANY(ws) < VARSIZE_ANY_EXHDR(ws))
        {
            if (pg_mblen(buf) == 1)
            {
@@ -2384,7 +2384,7 @@ ts_stat1(PG_FUNCTION_ARGS)
    if (SRF_IS_FIRSTCALL())
    {
        TSVectorStat *stat;
-       text       *txt = PG_GETARG_TEXT_P(0);
+       text       *txt = PG_GETARG_TEXT_PP(0);
 
        funcctx = SRF_FIRSTCALL_INIT();
        SPI_connect();
@@ -2409,8 +2409,8 @@ ts_stat2(PG_FUNCTION_ARGS)
    if (SRF_IS_FIRSTCALL())
    {
        TSVectorStat *stat;
-       text       *txt = PG_GETARG_TEXT_P(0);
-       text       *ws = PG_GETARG_TEXT_P(1);
+       text       *txt = PG_GETARG_TEXT_PP(0);
+       text       *ws = PG_GETARG_TEXT_PP(1);
 
        funcctx = SRF_FIRSTCALL_INIT();
        SPI_connect();
@@ -2570,9 +2570,9 @@ tsvector_update_trigger(PG_FUNCTION_ARGS, bool config_column)
        if (isnull)
            continue;
 
-       txt = DatumGetTextP(datum);
+       txt = DatumGetTextPP(datum);
 
-       parsetext(cfgId, &prs, VARDATA(txt), VARSIZE(txt) - VARHDRSZ);
+       parsetext(cfgId, &prs, VARDATA_ANY(txt), VARSIZE_ANY_EXHDR(txt));
 
        if (txt != (text *) DatumGetPointer(datum))
            pfree(txt);
index 28b5745ba83633a35f1ac2f9852b14ec3d3ccd78..cd036afc004d569d7f8c00a9605b0e70b3bca812 100644 (file)
@@ -2662,7 +2662,7 @@ bytea_catenate(bytea *t1, bytea *t2)
 }
 
 #define PG_STR_GET_BYTEA(str_) \
-   DatumGetByteaP(DirectFunctionCall1(byteain, CStringGetDatum(str_)))
+   DatumGetByteaPP(DirectFunctionCall1(byteain, CStringGetDatum(str_)))
 
 /*
  * bytea_substr()
@@ -2934,13 +2934,12 @@ byteaGetBit(PG_FUNCTION_ARGS)
 Datum
 byteaSetByte(PG_FUNCTION_ARGS)
 {
-   bytea      *v = PG_GETARG_BYTEA_P(0);
+   bytea      *res = PG_GETARG_BYTEA_P_COPY(0);
    int32       n = PG_GETARG_INT32(1);
    int32       newByte = PG_GETARG_INT32(2);
    int         len;
-   bytea      *res;
 
-   len = VARSIZE(v) - VARHDRSZ;
+   len = VARSIZE(res) - VARHDRSZ;
 
    if (n < 0 || n >= len)
        ereport(ERROR,
@@ -2948,12 +2947,6 @@ byteaSetByte(PG_FUNCTION_ARGS)
                 errmsg("index %d out of valid range, 0..%d",
                        n, len - 1)));
 
-   /*
-    * Make a copy of the original varlena.
-    */
-   res = (bytea *) palloc(VARSIZE(v));
-   memcpy((char *) res, (char *) v, VARSIZE(v));
-
    /*
     * Now set the byte.
     */
@@ -2973,17 +2966,16 @@ byteaSetByte(PG_FUNCTION_ARGS)
 Datum
 byteaSetBit(PG_FUNCTION_ARGS)
 {
-   bytea      *v = PG_GETARG_BYTEA_P(0);
+   bytea      *res = PG_GETARG_BYTEA_P_COPY(0);
    int32       n = PG_GETARG_INT32(1);
    int32       newBit = PG_GETARG_INT32(2);
-   bytea      *res;
    int         len;
    int         oldByte,
                newByte;
    int         byteNo,
                bitNo;
 
-   len = VARSIZE(v) - VARHDRSZ;
+   len = VARSIZE(res) - VARHDRSZ;
 
    if (n < 0 || n >= len * 8)
        ereport(ERROR,
@@ -3002,12 +2994,6 @@ byteaSetBit(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("new bit must be 0 or 1")));
 
-   /*
-    * Make a copy of the original varlena.
-    */
-   res = (bytea *) palloc(VARSIZE(v));
-   memcpy((char *) res, (char *) v, VARSIZE(v));
-
    /*
     * Update the byte.
     */
index f81cf489d265a9e0387c85d14c59390d7801d203..1908b13db5c7f4328c25316decf6d28b34137db6 100644 (file)
@@ -433,7 +433,7 @@ xml_send(PG_FUNCTION_ARGS)
 static void
 appendStringInfoText(StringInfo str, const text *t)
 {
-   appendBinaryStringInfo(str, VARDATA(t), VARSIZE(t) - VARHDRSZ);
+   appendBinaryStringInfo(str, VARDATA_ANY(t), VARSIZE_ANY_EXHDR(t));
 }
 #endif
 
@@ -466,9 +466,9 @@ Datum
 xmlcomment(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *arg = PG_GETARG_TEXT_P(0);
-   char       *argdata = VARDATA(arg);
-   int         len = VARSIZE(arg) - VARHDRSZ;
+   text       *arg = PG_GETARG_TEXT_PP(0);
+   char       *argdata = VARDATA_ANY(arg);
+   int         len = VARSIZE_ANY_EXHDR(arg);
    StringInfoData buf;
    int         i;
 
@@ -590,7 +590,7 @@ xmlconcat2(PG_FUNCTION_ARGS)
 Datum
 texttoxml(PG_FUNCTION_ARGS)
 {
-   text       *data = PG_GETARG_TEXT_P(0);
+   text       *data = PG_GETARG_TEXT_PP(0);
 
    PG_RETURN_XML_P(xmlparse(data, xmloption, true));
 }
@@ -1402,7 +1402,7 @@ xml_parse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace,
    volatile xmlParserCtxtPtr ctxt = NULL;
    volatile xmlDocPtr doc = NULL;
 
-   len = VARSIZE(data) - VARHDRSZ;     /* will be useful later */
+   len = VARSIZE_ANY_EXHDR(data);      /* will be useful later */
    string = xml_text2xmlChar(data);
 
    utf8string = pg_do_encoding_conversion(string,
@@ -3876,14 +3876,14 @@ xpath_internal(text *xpath_expr_text, xmltype *data, ArrayType *namespaces,
 
    datastr = VARDATA(data);
    len = VARSIZE(data) - VARHDRSZ;
-   xpath_len = VARSIZE(xpath_expr_text) - VARHDRSZ;
+   xpath_len = VARSIZE_ANY_EXHDR(xpath_expr_text);
    if (xpath_len == 0)
        ereport(ERROR,
                (errcode(ERRCODE_DATA_EXCEPTION),
                 errmsg("empty XPath expression")));
 
    string = pg_xmlCharStrndup(datastr, len);
-   xpath_expr = pg_xmlCharStrndup(VARDATA(xpath_expr_text), xpath_len);
+   xpath_expr = pg_xmlCharStrndup(VARDATA_ANY(xpath_expr_text), xpath_len);
 
    xmlerrcxt = pg_xml_init(PG_XML_STRICTNESS_ALL);
 
@@ -4001,7 +4001,7 @@ Datum
 xpath(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *xpath_expr_text = PG_GETARG_TEXT_P(0);
+   text       *xpath_expr_text = PG_GETARG_TEXT_PP(0);
    xmltype    *data = PG_GETARG_XML_P(1);
    ArrayType  *namespaces = PG_GETARG_ARRAYTYPE_P(2);
    ArrayBuildState *astate;
@@ -4024,7 +4024,7 @@ Datum
 xmlexists(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *xpath_expr_text = PG_GETARG_TEXT_P(0);
+   text       *xpath_expr_text = PG_GETARG_TEXT_PP(0);
    xmltype    *data = PG_GETARG_XML_P(1);
    int         res_nitems;
 
@@ -4047,7 +4047,7 @@ Datum
 xpath_exists(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *xpath_expr_text = PG_GETARG_TEXT_P(0);
+   text       *xpath_expr_text = PG_GETARG_TEXT_PP(0);
    xmltype    *data = PG_GETARG_XML_P(1);
    ArrayType  *namespaces = PG_GETARG_ARRAYTYPE_P(2);
    int         res_nitems;
@@ -4097,7 +4097,7 @@ Datum
 xml_is_well_formed(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *data = PG_GETARG_TEXT_P(0);
+   text       *data = PG_GETARG_TEXT_PP(0);
 
    PG_RETURN_BOOL(wellformed_xml(data, xmloption));
 #else
@@ -4110,7 +4110,7 @@ Datum
 xml_is_well_formed_document(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *data = PG_GETARG_TEXT_P(0);
+   text       *data = PG_GETARG_TEXT_PP(0);
 
    PG_RETURN_BOOL(wellformed_xml(data, XMLOPTION_DOCUMENT));
 #else
@@ -4123,7 +4123,7 @@ Datum
 xml_is_well_formed_content(PG_FUNCTION_ARGS)
 {
 #ifdef USE_LIBXML
-   text       *data = PG_GETARG_TEXT_P(0);
+   text       *data = PG_GETARG_TEXT_PP(0);
 
    PG_RETURN_BOOL(wellformed_xml(data, XMLOPTION_CONTENT));
 #else
index faf1599404d240d11e3af0e67a20aa3637a6806d..49c03d3f8815c381218a2db03aef0b28e8abe4f2 100644 (file)
@@ -154,7 +154,7 @@ Datum
 row_security_active_name(PG_FUNCTION_ARGS)
 {
    /* By qualified name */
-   text       *tablename = PG_GETARG_TEXT_P(0);
+   text       *tablename = PG_GETARG_TEXT_PP(0);
    RangeVar   *tablerel;
    Oid         tableoid;
    int         rls_status;
index 8c3c47fec9f66e84e51d3b9f608db6818bb0ddf1..dbba0d7b8707695204025ff80ca2b479a8dfa3b6 100644 (file)
@@ -116,7 +116,7 @@ util_quote_literal(sv)
     }
     else {
         text *arg = sv2text(sv);
-       text *quoted = DatumGetTextP(DirectFunctionCall1(quote_literal, PointerGetDatum(arg)));
+       text *quoted = DatumGetTextPP(DirectFunctionCall1(quote_literal, PointerGetDatum(arg)));
        char *str;
 
        pfree(arg);
@@ -138,7 +138,7 @@ util_quote_nullable(sv)
     else
    {
         text *arg = sv2text(sv);
-       text *quoted = DatumGetTextP(DirectFunctionCall1(quote_nullable, PointerGetDatum(arg)));
+       text *quoted = DatumGetTextPP(DirectFunctionCall1(quote_nullable, PointerGetDatum(arg)));
        char *str;
 
        pfree(arg);
@@ -158,7 +158,7 @@ util_quote_ident(sv)
        char *str;
     CODE:
         arg = sv2text(sv);
-       quoted = DatumGetTextP(DirectFunctionCall1(quote_ident, PointerGetDatum(arg)));
+       quoted = DatumGetTextPP(DirectFunctionCall1(quote_ident, PointerGetDatum(arg)));
 
        pfree(arg);
        str = text_to_cstring(quoted);
@@ -175,9 +175,9 @@ util_decode_bytea(sv)
         text *ret;
     CODE:
         arg = SvPVbyte_nolen(sv);
-        ret = DatumGetTextP(DirectFunctionCall1(byteain, PointerGetDatum(arg)));
+        ret = DatumGetTextPP(DirectFunctionCall1(byteain, PointerGetDatum(arg)));
         /* not cstr2sv because this is raw bytes not utf8'able */
-        RETVAL = newSVpvn(VARDATA(ret), (VARSIZE(ret) - VARHDRSZ));
+        RETVAL = newSVpvn(VARDATA_ANY(ret), VARSIZE_ANY_EXHDR(ret));
     OUTPUT:
     RETVAL
 
index 06743e46ed5a5ffdb4ca5103b490152f457dd3ba..2962d5a6266f74b81893a9891c697f98b8043ea7 100644 (file)
@@ -603,9 +603,9 @@ PLyLong_FromOid(PLyDatumToOb *arg, Datum d)
 static PyObject *
 PLyBytes_FromBytea(PLyDatumToOb *arg, Datum d)
 {
-   text       *txt = DatumGetByteaP(d);
-   char       *str = VARDATA(txt);
-   size_t      size = VARSIZE(txt) - VARHDRSZ;
+   text       *txt = DatumGetByteaPP(d);
+   char       *str = VARDATA_ANY(txt);
+   size_t      size = VARSIZE_ANY_EXHDR(txt);
 
    return PyBytes_FromStringAndSize(str, size);
 }