summaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2017-03-12 19:35:34 -0400
committerNoah Misch <noah@leadboat.com>2017-03-12 19:35:34 -0400
commit3a0d473192b2045cbaf997df8437e7762d34f3ba (patch)
tree8bdf7e5e8f6a69041ff3fd4b2114cb9e8cbd69d4 /src/backend/utils
parent9d7726c2ba06b932f791f2d0cc5acf73cc0b4dca (diff)
downloadpostgresql-3a0d473192b2045cbaf997df8437e7762d34f3ba.tar.gz
Use wrappers of PG_DETOAST_DATUM_PACKED() more.
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.
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/adt/acl.c260
-rw-r--r--src/backend/utils/adt/char.c6
-rw-r--r--src/backend/utils/adt/dbsize.c2
-rw-r--r--src/backend/utils/adt/encode.c16
-rw-r--r--src/backend/utils/adt/formatting.c40
-rw-r--r--src/backend/utils/adt/genfile.c8
-rw-r--r--src/backend/utils/adt/json.c8
-rw-r--r--src/backend/utils/adt/jsonb.c2
-rw-r--r--src/backend/utils/adt/jsonfuncs.c24
-rw-r--r--src/backend/utils/adt/like.c24
-rw-r--r--src/backend/utils/adt/numeric.c44
-rw-r--r--src/backend/utils/adt/quote.c6
-rw-r--r--src/backend/utils/adt/rangetypes.c2
-rw-r--r--src/backend/utils/adt/regproc.c2
-rw-r--r--src/backend/utils/adt/ruleutils.c12
-rw-r--r--src/backend/utils/adt/selfuncs.c18
-rw-r--r--src/backend/utils/adt/tid.c2
-rw-r--r--src/backend/utils/adt/tsquery_rewrite.c2
-rw-r--r--src/backend/utils/adt/tsvector_op.c18
-rw-r--r--src/backend/utils/adt/varlena.c24
-rw-r--r--src/backend/utils/adt/xml.c28
-rw-r--r--src/backend/utils/misc/rls.c2
22 files changed, 269 insertions, 281 deletions
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index fca8420b01..35bdfc9a46 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -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;
diff --git a/src/backend/utils/adt/char.c b/src/backend/utils/adt/char.c
index f0c4d25396..1b849e8703 100644
--- a/src/backend/utils/adt/char.c
+++ b/src/backend/utils/adt/char.c
@@ -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';
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 8cdd1dc4f7..58923912eb 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -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;
diff --git a/src/backend/utils/adt/encode.c b/src/backend/utils/adt/encode.c
index 027f28eb62..8fd8ede39e 100644
--- a/src/backend/utils/adt/encode.c
+++ b/src/backend/utils/adt/encode.c
@@ -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)
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index e552c8d20b..c16bfbca93 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -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;
diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
index 1a127d9258..2147936dd8 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -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);
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index 0ed6a10a44..9fb0e480bf 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -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. */
diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c
index 5b6178badf..164f57ef77 100644
--- a/src/backend/utils/adt/jsonb.c
+++ b/src/backend/utils/adt/jsonb.c
@@ -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);
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index 9b46f8e835..bf2c91f02e 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -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;
diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c
index 91fe109867..8d9d285fb5 100644
--- a/src/backend/utils/adt/like.c
+++ b/src/backend/utils/adt/like.c
@@ -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);
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 781c713f81..6cce0f292c 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -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);
diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c
index 549c503031..43e5bb7962 100644
--- a/src/backend/utils/adt/quote.c
+++ b/src/backend/utils/adt/quote.c
@@ -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));
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index e518523a70..304345b904 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -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);
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index fa920c0d8c..702924a958 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -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;
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 3c697f3c0d..5c823250bc 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -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;
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index a04fd7bc90..5f28a1a7c5 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -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
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c
index a3b372f22a..49a5a157b9 100644
--- a/src/backend/utils/adt/tid.c
+++ b/src/backend/utils/adt/tid.c
@@ -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;
diff --git a/src/backend/utils/adt/tsquery_rewrite.c b/src/backend/utils/adt/tsquery_rewrite.c
index 266a82d634..1bd3deabd5 100644
--- a/src/backend/utils/adt/tsquery_rewrite.c
+++ b/src/backend/utils/adt/tsquery_rewrite.c
@@ -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;
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index 3dab84a887..c694637c8f 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -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);
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 28b5745ba8..cd036afc00 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -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,
@@ -2949,12 +2948,6 @@ byteaSetByte(PG_FUNCTION_ARGS)
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.
*/
((unsigned char *) VARDATA(res))[n] = newByte;
@@ -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,
@@ -3003,12 +2995,6 @@ byteaSetBit(PG_FUNCTION_ARGS)
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.
*/
oldByte = ((unsigned char *) VARDATA(res))[byteNo];
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index f81cf489d2..1908b13db5 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -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
diff --git a/src/backend/utils/misc/rls.c b/src/backend/utils/misc/rls.c
index faf1599404..49c03d3f88 100644
--- a/src/backend/utils/misc/rls.c
+++ b/src/backend/utils/misc/rls.c
@@ -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;