aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/system_views.sql16
-rw-r--r--src/backend/utils/adt/jsonfuncs.c36
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()
*/