On 10/22/24 08:54, Colin 't Hart wrote:
Hi, This works in Postgres 15: pg15> create function json_test(out value text, out json jsonb) returns record language sql as $$ select null::text, null::jsonb; $$ ; CREATE FUNCTION pg15> select * from json_test(); ┌───────┬──────┐ │ value │ json │ ├───────┼──────┤ │ │ │ └───────┴──────┘ (1 row) In Postgres 17 trying to create the function yields an error: pg17> create function json_test(out value text, out json jsonb) returns record language sql as $$ select null::text, null::jsonb; $$ ; ERROR: syntax error at or near "jsonb" LINE 1: create function json_test(out value text, out json jsonb) Am I doing something wrong? Or is this a regression?
Yes you are doing something wrong, naming an argument with a type name(json) is not a good idea. Guessing you got caught by this:
https://www.postgresql.org/docs/16/sql-keywords-appendix.html JSON non-reserved reserved https://www.postgresql.org/docs/17/sql-keywords-appendix.html JSON non-reserved (cannot be function or type) reserved
Thanks, Colin
-- Adrian Klaver adrian.klaver@xxxxxxxxxxx