parse
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (7))
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(IN a INT=7) RETURNS INT CALLED ON NULL INPUT IMMUTABLE LEAKPROOF LANGUAGE SQL AS 'SELECT 1'
----
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT 7)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT (7))
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT _)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(IN _ INT8 DEFAULT 7)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(IN a INT=7) RETURNS INT AS 'SELECT 1' CALLED ON NULL INPUT IMMUTABLE LEAKPROOF LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT 7)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT (7))
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(IN a INT8 DEFAULT _)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(IN _ INT8 DEFAULT 7)
	RETURNS INT8
	CALLED ON NULL INPUT
	IMMUTABLE
	LEAKPROOF
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a INT DEFAULT 10) RETURNS INT RETURNS NULL ON NULL INPUT LANGUAGE SQL AS 'SELECT 1'
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 10)
	RETURNS INT8
	RETURNS NULL ON NULL INPUT
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (10))
	RETURNS INT8
	RETURNS NULL ON NULL INPUT
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	RETURNS NULL ON NULL INPUT
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 10)
	RETURNS INT8
	RETURNS NULL ON NULL INPUT
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1; SELECT a; END
----
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; SELECT a; END -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT (1); SELECT (a); END -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT _; SELECT a; END -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; SELECT _; END -- identifiers removed


parse
CREATE OR REPLACE FUNCTION f(a "cool Type") RETURNS "Hot Type 🔥" LANGUAGE SQL BEGIN ATOMIC SELECT NULL:::"Hot Type 🔥"; END
----
CREATE OR REPLACE FUNCTION f(a "cool Type")
	RETURNS "Hot Type 🔥"
	LANGUAGE SQL
	BEGIN ATOMIC SELECT NULL:::"Hot Type 🔥"; END -- normalized!
CREATE OR REPLACE FUNCTION f(a "cool Type")
	RETURNS "Hot Type 🔥"
	LANGUAGE SQL
	BEGIN ATOMIC SELECT ((NULL):::"Hot Type 🔥"); END -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a "cool Type")
	RETURNS "Hot Type 🔥"
	LANGUAGE SQL
	BEGIN ATOMIC SELECT _:::"Hot Type 🔥"; END -- literals removed
CREATE OR REPLACE FUNCTION _(_ _)
	RETURNS _
	LANGUAGE SQL
	BEGIN ATOMIC SELECT NULL:::_; END -- identifiers removed


parse
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1; SELECT $1; END
----
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; SELECT $1; END -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT (1); SELECT ($1); END -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT _; SELECT $1; END -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; SELECT $1; END -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1; CREATE OR REPLACE FUNCTION g() RETURNS INT BEGIN ATOMIC SELECT 2; END; END
----
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; CREATE OR REPLACE FUNCTION g()
	RETURNS INT8
	BEGIN ATOMIC SELECT 2; END; END -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT (1); CREATE OR REPLACE FUNCTION g()
	RETURNS INT8
	BEGIN ATOMIC SELECT (2); END; END -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT _; CREATE OR REPLACE FUNCTION g()
	RETURNS INT8
	BEGIN ATOMIC SELECT _; END; END -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8)
	RETURNS INT8
	LANGUAGE SQL
	BEGIN ATOMIC SELECT 1; CREATE OR REPLACE FUNCTION _()
	RETURNS INT8
	BEGIN ATOMIC SELECT 2; END; END -- identifiers removed

error
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1 END
----
at or near "EOF": syntax error
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1 END
                                                                                      ^
HINT: try \h CREATE FUNCTION

error
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1; CREATE OR REPLACE FUNCTION g() RETURNS INT BEGIN ATOMIC SELECT 2; END;
----
at or near "EOF": syntax error
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a INT) RETURNS INT LANGUAGE SQL BEGIN ATOMIC SELECT 1; CREATE OR REPLACE FUNCTION g() RETURNS INT BEGIN ATOMIC SELECT 2; END;
                                                                                                                                                          ^
HINT: try \h CREATE FUNCTION

parse
CREATE OR REPLACE FUNCTION f(OUT a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(OUT a INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(OUT a INT8 DEFAULT (7))
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(OUT a INT8 DEFAULT _)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(OUT _ INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(INOUT a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT (7))
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT _)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(INOUT _ INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(IN OUT a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT (7))
	RETURNS INT8
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(INOUT a INT8 DEFAULT _)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(INOUT _ INT8 DEFAULT 7)
	RETURNS INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

error
CREATE OR REPLACE FUNCTION f(VARIADIC a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
----
at or near "variadic": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(VARIADIC a int = 7) RETURNS INT AS 'SELECT 1' LANGUAGE SQL
                             ^
HINT: You have attempted to use a feature that is not yet implemented.
See: https://go.crdb.dev/issue-v/88947/

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT TRANSFORM AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "transform": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT TRANSFORM AS 'SELECT 1' LANGUAGE SQL
                                                    ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT WINDOW AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "window": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT WINDOW AS 'SELECT 1' LANGUAGE SQL
                                                    ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT ROWS 123 AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "123": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT ROWS 123 AS 'SELECT 1' LANGUAGE SQL
                                                         ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SUPPORT abc AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "abc": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SUPPORT abc AS 'SELECT 1' LANGUAGE SQL
                                                            ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SET a = 123 AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "set": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SET a = 123 AS 'SELECT 1' LANGUAGE SQL
                                                    ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT PARALLEL RESTRICTED AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "parallel": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT PARALLEL RESTRICTED AS 'SELECT 1' LANGUAGE SQL
                                                    ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

error
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT COST 123 AS 'SELECT 1' LANGUAGE SQL
----
----
at or near "123": syntax error: unimplemented: this syntax
DETAIL: source SQL:
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT COST 123 AS 'SELECT 1' LANGUAGE SQL
                                                         ^
HINT: You have attempted to use a feature that is not yet implemented.

Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.

If you would rather not post publicly, please contact us directly
using the support form.

We appreciate your feedback.
----
----

parse
CREATE FUNCTION populate() RETURNS integer AS $$
DECLARE
    -- declarations
BEGIN
    PERFORM my_function();
END;
$$ LANGUAGE plpgsql
----
CREATE FUNCTION populate()
	RETURNS INT8
	LANGUAGE plpgsql
	AS $$
DECLARE
    -- declarations
BEGIN
    PERFORM my_function();
END;
$$ -- normalized!
CREATE FUNCTION populate()
	RETURNS INT8
	LANGUAGE plpgsql
	AS $$
DECLARE
    -- declarations
BEGIN
    PERFORM my_function();
END;
$$ -- fully parenthesized
CREATE FUNCTION populate()
	RETURNS INT8
	LANGUAGE plpgsql
	AS $$_$$ -- literals removed
CREATE FUNCTION _()
	RETURNS INT8
	LANGUAGE plpgsql
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT EXTERNAL SECURITY DEFINER AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (7))
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT EXTERNAL SECURITY INVOKER AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (7))
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SECURITY DEFINER AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (7))
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY DEFINER
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE OR REPLACE FUNCTION f(a int = 7) RETURNS INT SECURITY INVOKER AS 'SELECT 1' LANGUAGE SQL
----
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- normalized!
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT (7))
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$SELECT 1$$ -- fully parenthesized
CREATE OR REPLACE FUNCTION f(a INT8 DEFAULT _)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE OR REPLACE FUNCTION _(_ INT8 DEFAULT 7)
	RETURNS INT8
	SECURITY INVOKER
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE FUNCTION f(OUT x INT) RETURNS SETOF INT LANGUAGE SQL AS $$ SELECT 1 $$;
----
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$ SELECT 1 $$ -- normalized!
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$ SELECT 1 $$ -- fully parenthesized
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE FUNCTION _(OUT _ INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE FUNCTION f(OUT x INT, OUT y INT) RETURNS SETOF RECORD LANGUAGE SQL AS $$ SELECT 1, 2 $$;
----
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$ SELECT 1, 2 $$ -- normalized!
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$ SELECT 1, 2 $$ -- fully parenthesized
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE FUNCTION _(OUT _ INT8, OUT _ INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE FUNCTION f() RETURNS TABLE(x INT) LANGUAGE SQL AS $$ SELECT 1 $$;
----
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$ SELECT 1 $$ -- normalized!
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$ SELECT 1 $$ -- fully parenthesized
CREATE FUNCTION f(OUT x INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE FUNCTION _(OUT _ INT8)
	RETURNS SETOF INT8
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed

parse
CREATE FUNCTION f() RETURNS TABLE(x INT, y INT) LANGUAGE SQL AS $$ SELECT 1, 2 $$;
----
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$ SELECT 1, 2 $$ -- normalized!
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$ SELECT 1, 2 $$ -- fully parenthesized
CREATE FUNCTION f(OUT x INT8, OUT y INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$_$$ -- literals removed
CREATE FUNCTION _(OUT _ INT8, OUT _ INT8)
	RETURNS SETOF RECORD
	LANGUAGE SQL
	AS $$_$$ -- identifiers removed
