postgresql/src/backend/utils/adt
Andrew Dunstan 606948b058 SQL JSON functions
This Patch introduces three SQL standard JSON functions:

JSON() (incorrectly mentioned in my commit message for f4fb45d15c)
JSON_SCALAR()
JSON_SERIALIZE()

JSON() produces json values from text, bytea, json or jsonb values, and
has facilitites for handling duplicate keys.
JSON_SCALAR() produces a json value from any scalar sql value, including
json and jsonb.
JSON_SERIALIZE() produces text or bytea from input which containis or
represents json or jsonb;

For the most part these functions don't add any significant new
capabilities, but they will be of use to users wanting standard
compliant JSON handling.

Nikita Glukhov

Reviewers have included (in no particular order) Andres Freund, Alexander
Korotkov, Pavel Stehule, Andrew Alsup, Erik Rijkers, Zihong Yu,
Himanshu Upadhyaya, Daniel Gustafsson, Justin Pryzby.

Discussion: https://postgr.es/m/cd0bb935-0158-78a7-08b5-904886deac4b@postgrespro.ru
2022-03-30 16:30:37 -04:00
..
.gitignore Revert "Add gitignore entries for jsonpath_gram.h" 2019-03-23 00:19:34 +01:00
acl.c Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
amutils.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
array_expanded.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
array_selfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
array_typanalyze.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
array_userfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
arrayfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
arraysubs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
arrayutils.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
ascii.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
bool.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
cash.c Remove unused includes 2021-12-01 16:10:56 +01:00
char.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
cryptohashfuncs.c Improve error handling of cryptohash computations 2022-01-11 09:55:16 +09:00
date.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
datetime.c Create routine able to set single-call SRFs for Materialize mode 2022-03-07 10:26:29 +09:00
datum.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
dbsize.c Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
domains.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
encode.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
enum.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
expandeddatum.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
expandedrecord.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
float.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
format_type.c SQL JSON functions 2022-03-30 16:30:37 -04:00
formatting.c SQL/JSON query functions 2022-03-29 16:57:13 -04:00
genfile.c Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
geo_ops.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
geo_selfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
geo_spgist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
hbafuncs.c Add system view pg_ident_file_mappings 2022-03-29 10:15:48 +09:00
inet_cidr_ntop.c Avoid conflicts with library versions of inet_net_ntop() and friends. 2019-08-18 19:27:23 -04:00
inet_net_pton.c Avoid conflicts with library versions of inet_net_ntop() and friends. 2019-08-18 19:27:23 -04:00
int8.c Move scanint8() to numutils.c 2022-02-14 21:57:26 +01:00
int.c Remove pg_atoi() 2022-02-15 07:44:26 +01:00
json.c SQL JSON functions 2022-03-30 16:30:37 -04:00
jsonb_gin.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
jsonb_op.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
jsonb_util.c SQL/JSON constructors 2022-03-27 17:03:34 -04:00
jsonb.c SQL JSON functions 2022-03-30 16:30:37 -04:00
jsonbsubs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
jsonfuncs.c SQL/JSON query functions 2022-03-29 16:57:13 -04:00
jsonpath_exec.c SQL/JSON query functions 2022-03-29 16:57:13 -04:00
jsonpath_gram.y Remove one use of pg_atoi() 2022-02-14 23:07:35 +01:00
jsonpath_scan.l Make JSON path numeric literals more correct 2022-03-28 11:11:39 +02:00
jsonpath.c SQL/JSON query functions 2022-03-29 16:57:13 -04:00
levenshtein.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
like_match.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
like_support.c Call pg_newlocale_from_collation() also with default collation 2022-01-20 09:50:18 +01:00
like.c Call pg_newlocale_from_collation() also with default collation 2022-01-20 09:50:18 +01:00
lockfuncs.c Reduce more the number of calls to GetMaxBackends() 2022-02-10 10:27:29 +09:00
mac8.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
mac.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
Makefile Refactor code related to pg_hba_file_rules() into new file 2022-03-24 12:42:30 +09:00
mcxtfuncs.c Create routine able to set single-call SRFs for Materialize mode 2022-03-07 10:26:29 +09:00
misc.c Fix pg_tablespace_location() with in-place tablespaces 2022-03-17 11:25:02 +09:00
multirangetypes_selfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
multirangetypes.c Add range_agg with multirange inputs 2022-03-30 20:16:23 +02:00
name.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
network_gist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
network_selfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
network_spgist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
network.c Move src/backend/utils/hash/hashfn.c to src/common 2020-02-27 09:25:41 +05:30
numeric.c Clean up assorted failures under clang's -fsanitize=undefined checks. 2022-03-03 18:13:24 -05:00
numutils.c Remove pg_atoi() 2022-02-15 07:44:26 +01:00
oid.c Rename value node fields 2022-01-14 11:26:08 +01:00
oracle_compat.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
orderedsetaggs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
partitionfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
pg_locale.c Fix global ICU collations for ICU < 54 2022-03-20 10:21:45 +01:00
pg_lsn.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
pg_upgrade_support.c pg_upgrade: Preserve relfilenodes and tablespace OIDs. 2022-01-17 13:40:27 -05:00
pgstatfuncs.c Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pseudotypes.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
quote.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
rangetypes_gist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
rangetypes_selfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
rangetypes_spgist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
rangetypes_typanalyze.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
rangetypes.c Change some internal error messages to elogs 2022-03-30 17:53:54 +02:00
regexp.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
regproc.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
ri_triggers.c Enforce foreign key correctly during cross-partition updates 2022-03-20 18:43:40 +01:00
rowtypes.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
ruleutils.c SQL JSON functions 2022-03-30 16:30:37 -04:00
selfuncs.c Add stxdinherit flag to pg_statistic_ext_data 2022-01-16 13:38:01 +01:00
tid.c Tighten overflow checks in tidin(). 2022-03-03 20:04:35 -05:00
timestamp.c Handle integer overflow in interval justification functions. 2022-02-28 15:36:54 -05:00
trigfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsginidx.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsgistidx.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery_cleanup.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery_gist.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery_op.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery_rewrite.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery_util.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsquery.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsrank.c Fix collection of typos in the code and the documentation 2022-03-15 11:29:35 +09:00
tsvector_op.c Ensure that length argument of memcmp() isn't seen as negative. 2022-02-15 17:28:17 -05:00
tsvector_parser.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
tsvector.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
uuid.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
varbit.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
varchar.c Call pg_newlocale_from_collation() also with default collation 2022-01-20 09:50:18 +01:00
varlena.c Create routine able to set single-call SRFs for Materialize mode 2022-03-07 10:26:29 +09:00
version.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
windowfuncs.c Update copyright for 2022 2022-01-07 19:04:57 -05:00
xid8funcs.c Remove workarounds for avoiding [U]INT64_FORMAT in translatable strings. 2022-03-21 11:11:55 -04:00
xid.c Add min() and max() aggregates for xid8. 2022-02-10 12:33:41 +09:00
xml.c Fix incorrect xmlschema output for types timetz and timestamptz. 2022-03-18 16:01:42 -04:00