diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/catalog/system_views.sql | 16 | ||||
-rw-r--r-- | src/backend/utils/adt/jsonfuncs.c | 36 |
2 files changed, 40 insertions, 12 deletions
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 662040261e9..42a4c00a1ed 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -833,6 +833,22 @@ CREATE OR REPLACE FUNCTION jsonb_populate_recordset(base anyelement, from_json jsonb, use_json_as_text boolean DEFAULT false) RETURNS SETOF anyelement LANGUAGE internal STABLE ROWS 100 AS 'jsonb_populate_recordset'; +CREATE OR REPLACE FUNCTION + json_to_record(from_json json, nested_as_text boolean DEFAULT false) + RETURNS record LANGUAGE internal STABLE AS 'json_to_record'; + +CREATE OR REPLACE FUNCTION + json_to_recordset(from_json json, nested_as_text boolean DEFAULT false) + RETURNS SETOF record LANGUAGE internal STABLE ROWS 100 AS 'json_to_recordset'; + +CREATE OR REPLACE FUNCTION + jsonb_to_record(from_json jsonb, nested_as_text boolean DEFAULT false) + RETURNS record LANGUAGE internal STABLE AS 'jsonb_to_record'; + +CREATE OR REPLACE FUNCTION + jsonb_to_recordset(from_json jsonb, nested_as_text boolean DEFAULT false) + RETURNS SETOF record LANGUAGE internal STABLE ROWS 100 AS 'jsonb_to_recordset'; + CREATE OR REPLACE FUNCTION pg_logical_slot_get_changes( IN slotname name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}', OUT location pg_lsn, OUT xid xid, OUT data text) diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index 94595998029..bf164677142 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -2015,6 +2015,12 @@ jsonb_populate_record(PG_FUNCTION_ARGS) } Datum +jsonb_to_record(PG_FUNCTION_ARGS) +{ + return populate_record_worker(fcinfo, false); +} + +Datum json_populate_record(PG_FUNCTION_ARGS) { return populate_record_worker(fcinfo, true); @@ -2449,6 +2455,24 @@ jsonb_populate_recordset(PG_FUNCTION_ARGS) return populate_recordset_worker(fcinfo, true); } +Datum +jsonb_to_recordset(PG_FUNCTION_ARGS) +{ + return populate_recordset_worker(fcinfo, false); +} + +Datum +json_populate_recordset(PG_FUNCTION_ARGS) +{ + return populate_recordset_worker(fcinfo, true); +} + +Datum +json_to_recordset(PG_FUNCTION_ARGS) +{ + return populate_recordset_worker(fcinfo, false); +} + static void make_row_from_rec_and_jsonb(Jsonb * element, PopulateRecordsetState *state) { @@ -2571,18 +2595,6 @@ make_row_from_rec_and_jsonb(Jsonb * element, PopulateRecordsetState *state) tuplestore_puttuple(state->tuple_store, rettuple); } -Datum -json_populate_recordset(PG_FUNCTION_ARGS) -{ - return populate_recordset_worker(fcinfo, true); -} - -Datum -json_to_recordset(PG_FUNCTION_ARGS) -{ - return populate_recordset_worker(fcinfo, false); -} - /* * common worker for json_populate_recordset() and json_to_recordset() */ |