json_populate_recordset

Started by Adrian Klaveralmost 8 years ago3 messagesgeneral
Jump to latest
#1Adrian Klaver
adrian.klaver@aklaver.com

From here:

https://www.postgresql.org/docs/10/static/functions-json.html

select * from json_populate_record(null::myrowtype, '{"a": 1, "b": ["2",
"a b"], "c": {"d": 4, "e": "a b c"}}')

What is the null::myrowtype doing?

Thanks,
--
Adrian Klaver
adrian.klaver@aklaver.com

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Adrian Klaver (#1)
Re: json_populate_recordset

2018-06-07 18:51 GMT+02:00 Adrian Klaver <adrian.klaver@aklaver.com>:

From here:

https://www.postgresql.org/docs/10/static/functions-json.html

select * from json_populate_record(null::myrowtype, '{"a": 1, "b": ["2",
"a b"], "c": {"d": 4, "e": "a b c"}}')

What is the null::myrowtype doing?

this function uses polymorphic parameters - its some like

create or replace function fx(in anyelement, json) returns anyelement ..

output polymorphic value requires minimally one input polymorphic value for
type specification. Postgres has not possibility to pass only datatype - so
pattern null:type is used instead.

Regards

Pavel

Show quoted text

Thanks,
--
Adrian Klaver
adrian.klaver@aklaver.com

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Pavel Stehule (#2)
Re: json_populate_recordset

On 06/07/2018 09:56 AM, Pavel Stehule wrote:

2018-06-07 18:51 GMT+02:00 Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>>:

From here:

https://www.postgresql.org/docs/10/static/functions-json.html
<https://www.postgresql.org/docs/10/static/functions-json.html&gt;

select * from json_populate_record(null::myrowtype, '{"a": 1, "b":
["2", "a b"], "c": {"d": 4, "e": "a b c"}}')

What is the null::myrowtype doing?

this function uses polymorphic parameters - its some like

create or replace function fx(in anyelement, json) returns anyelement ..

output polymorphic value requires minimally one input polymorphic value
for type specification. Postgres has not possibility to pass only
datatype - so pattern null:type is used instead.

Alright, so it is bootstrapping a polymorphic type off null. Thanks.

Regards

Pavel

Thanks,
--
Adrian Klaver
adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>

--
Adrian Klaver
adrian.klaver@aklaver.com