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))
{
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)));
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)
{
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)
{
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);
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);
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);
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);
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);
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);
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);
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);
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++)
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);
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;
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];
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;
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;
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;
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,
page = palloc(raw_page_size);
- memcpy(page, VARDATA(raw_page), raw_page_size);
+ memcpy(page, VARDATA_ANY(raw_page), raw_page_size);
return page;
}
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;
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);
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;
*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)
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);
{
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
* 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
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);
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;
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,
GISTENTRY *retval;
text *key;
- key = DatumGetTextP(entry->key);
+ key = DatumGetTextPP(entry->key);
if (key != (text *) DatumGetPointer(entry->key))
{
* 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 ||
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++)
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
static void
clear_and_pfree(text *p)
{
- px_memset(p, 0, VARSIZE(p));
+ px_memset(p, 0, VARSIZE_ANY(p));
pfree(p);
}
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
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);
}
src = create_mbuf_from_vardata(data);
- dst = mbuf_create(VARSIZE(data) + 128);
+ dst = mbuf_create(VARSIZE_ANY(data) + 128);
/*
* reserve room for header
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
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
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)
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);
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);
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);
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);
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);
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);
*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);
*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);
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),
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);
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);
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);
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);
Datum
pgstatindex(PG_FUNCTION_ARGS)
{
- text *relname = PG_GETARG_TEXT_P(0);
+ text *relname = PG_GETARG_TEXT_PP(0);
Relation rel;
RangeVar *relrv;
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;
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;
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;
Datum
pgstattuple(PG_FUNCTION_ARGS)
{
- text *relname = PG_GETARG_TEXT_P(0);
+ text *relname = PG_GETARG_TEXT_PP(0);
RangeVar *relrv;
Relation rel;
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;
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;
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;
newvals[chnattrs] = Int32GetDatum((int32) DatumGetInt64(newvals[chnattrs]));
}
newnulls[chnattrs] = false;
- pfree(DatumGetTextP(seqname));
+ pfree(DatumGetTextPP(seqname));
chnattrs++;
i++;
}
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))
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))
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);
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
}
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
}
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;
PG_TRY();
{
- doctree = xmlParseMemory((char *) VARDATA(t), docsize);
+ doctree = xmlParseMemory((char *) VARDATA_ANY(t), docsize);
result = (doctree != NULL);
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;
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;
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;
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
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';
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;
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;
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;
PG_TRY();
{
- workspace->doctree = xmlParseMemory((char *) VARDATA(document),
+ workspace->doctree = xmlParseMemory((char *) VARDATA_ANY(document),
docsize);
if (workspace->doctree != NULL)
{
{
#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;
if (fcinfo->nargs == 3)
{
- paramstr = PG_GETARG_TEXT_P(2);
+ paramstr = PG_GETARG_TEXT_PP(2);
params = parse_params(paramstr);
}
else
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,
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);
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;
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;
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];
Datum
nextval(PG_FUNCTION_ARGS)
{
- text *seqin = PG_GETARG_TEXT_P(0);
+ text *seqin = PG_GETARG_TEXT_PP(0);
RangeVar *sequence;
Oid relid;
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++)
{
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,
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++)
{
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);
if (isnull)
arg = NULL;
else
- arg = DatumGetTextP(value);
+ arg = DatumGetTextPP(value);
}
else
{
if (isnull)
version = NULL;
else
- version = DatumGetTextP(value);
+ version = DatumGetTextPP(value);
e = (ExprState *) lthird(xmlExpr->args);
value = ExecEvalExpr(e, econtext, &isnull);
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);
}
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;
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,
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)
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;
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)
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);
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;
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);
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;
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);
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;
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);
if (SRF_IS_FIRSTCALL())
{
- text *prsname = PG_GETARG_TEXT_P(0);
+ text *prsname = PG_GETARG_TEXT_PP(0);
Oid prsId;
funcctx = SRF_FIRSTCALL_INIT();
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),
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);
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();
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;
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));
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
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;
{
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;
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;
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
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;
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;
{
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;
{
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;
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;
{
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;
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;
{
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;
{
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;
Datum
text_char(PG_FUNCTION_ARGS)
{
- text *arg1 = PG_GETARG_TEXT_P(0);
+ text *arg1 = PG_GETARG_TEXT_PP(0);
char result;
/*
* 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';
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;
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;
res;
const struct pg_encoding *enc;
- datalen = VARSIZE(data) - VARHDRSZ;
+ datalen = VARSIZE_ANY_EXHDR(data);
namebuf = TextDatumGetCString(name);
(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)
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;
res;
const struct pg_encoding *enc;
- datalen = VARSIZE(data) - VARHDRSZ;
+ datalen = VARSIZE_ANY_EXHDR(data);
namebuf = TextDatumGetCString(name);
(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)
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);
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);
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);
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;
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;
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;
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();
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;
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;
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;
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;
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;
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;
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;
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;
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];
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);
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);
}
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);
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. */
/* 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);
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;
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;
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;
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;
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;
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;
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;
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;
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);
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);
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;
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;
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
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);
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);
temp = DirectFunctionCall1(numeric_send,
NumericGetDatum(make_result(&tmp_var)));
- sumX = DatumGetByteaP(temp);
+ sumX = DatumGetByteaPP(temp);
free_var(&tmp_var);
pq_begintypsend(&buf);
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);
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);
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);
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);
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);
#endif
temp = DirectFunctionCall1(numeric_send,
NumericGetDatum(make_result(&num)));
- sumX = DatumGetByteaP(temp);
+ sumX = DatumGetByteaPP(temp);
#ifdef HAVE_INT128
int128_to_numericvar(state->sumX2, &num);
#endif
temp = DirectFunctionCall1(numeric_send,
NumericGetDatum(make_result(&num)));
- sumX2 = DatumGetByteaP(temp);
+ sumX2 = DatumGetByteaPP(temp);
free_var(&num);
}
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);
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);
#endif
temp = DirectFunctionCall1(numeric_send,
NumericGetDatum(make_result(&num)));
- sumX = DatumGetByteaP(temp);
+ sumX = DatumGetByteaPP(temp);
free_var(&num);
}
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);
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);
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));
(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);
Datum
text_regclass(PG_FUNCTION_ARGS)
{
- text *relname = PG_GETARG_TEXT_P(0);
+ text *relname = PG_GETARG_TEXT_PP(0);
Oid result;
RangeVar *rv;
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;
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;
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)
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;
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;
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;
}
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);
}
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
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;
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;
{
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;
{
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)
{
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();
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();
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);
}
#define PG_STR_GET_BYTEA(str_) \
- DatumGetByteaP(DirectFunctionCall1(byteain, CStringGetDatum(str_)))
+ DatumGetByteaPP(DirectFunctionCall1(byteain, CStringGetDatum(str_)))
/*
* bytea_substr()
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,
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.
*/
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,
(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.
*/
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
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;
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));
}
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,
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);
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;
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;
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;
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
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
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
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;
}
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);
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);
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);
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
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);
}