diff options
author | Noah Misch <noah@leadboat.com> | 2017-03-12 19:35:34 -0400 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2017-03-12 19:35:34 -0400 |
commit | 3a0d473192b2045cbaf997df8437e7762d34f3ba (patch) | |
tree | 8bdf7e5e8f6a69041ff3fd4b2114cb9e8cbd69d4 /src/backend/utils | |
parent | 9d7726c2ba06b932f791f2d0cc5acf73cc0b4dca (diff) | |
download | postgresql-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.c | 260 | ||||
-rw-r--r-- | src/backend/utils/adt/char.c | 6 | ||||
-rw-r--r-- | src/backend/utils/adt/dbsize.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/encode.c | 16 | ||||
-rw-r--r-- | src/backend/utils/adt/formatting.c | 40 | ||||
-rw-r--r-- | src/backend/utils/adt/genfile.c | 8 | ||||
-rw-r--r-- | src/backend/utils/adt/json.c | 8 | ||||
-rw-r--r-- | src/backend/utils/adt/jsonb.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/jsonfuncs.c | 24 | ||||
-rw-r--r-- | src/backend/utils/adt/like.c | 24 | ||||
-rw-r--r-- | src/backend/utils/adt/numeric.c | 44 | ||||
-rw-r--r-- | src/backend/utils/adt/quote.c | 6 | ||||
-rw-r--r-- | src/backend/utils/adt/rangetypes.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/regproc.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 12 | ||||
-rw-r--r-- | src/backend/utils/adt/selfuncs.c | 18 | ||||
-rw-r--r-- | src/backend/utils/adt/tid.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/tsquery_rewrite.c | 2 | ||||
-rw-r--r-- | src/backend/utils/adt/tsvector_op.c | 18 | ||||
-rw-r--r-- | src/backend/utils/adt/varlena.c | 24 | ||||
-rw-r--r-- | src/backend/utils/adt/xml.c | 28 | ||||
-rw-r--r-- | src/backend/utils/misc/rls.c | 2 |
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; |