Re: Regression in Postgres 17?
Adrian Klaver <adrian.klaver@aklaver.com>
From: Adrian Klaver <adrian.klaver@aklaver.com>
To: Colin 't Hart <colinthart@gmail.com>, pgsql-general@lists.postgresql.org
Date: 2024-10-22T16:03:05Z
Lists: pgsql-general
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@aklaver.com