Commit bfeede9f authored by Tom Lane's avatar Tom Lane

Don't crash on empty statements in SQL-standard function bodies.

gram.y should discard NULL pointers (empty statements) when
assembling a routine_body_stmt_list, as it does for other
sorts of statement lists.

Julien Rouhaud and Tom Lane, per report from Noah Misch.

Discussion: https://postgr.es/m/20210606044418.GA297923@rfd.leadboat.com
parent 37e1cce4
...@@ -7990,7 +7990,11 @@ opt_routine_body: ...@@ -7990,7 +7990,11 @@ opt_routine_body:
routine_body_stmt_list: routine_body_stmt_list:
routine_body_stmt_list routine_body_stmt ';' routine_body_stmt_list routine_body_stmt ';'
{ {
$$ = lappend($1, $2); /* As in stmtmulti, discard empty statements */
if ($2 != NULL)
$$ = lappend($1, $2);
else
$$ = $1;
} }
| /*EMPTY*/ | /*EMPTY*/
{ {
......
...@@ -267,7 +267,7 @@ CREATE FUNCTION functest_S_3() RETURNS boolean ...@@ -267,7 +267,7 @@ CREATE FUNCTION functest_S_3() RETURNS boolean
RETURN false; RETURN false;
CREATE FUNCTION functest_S_3a() RETURNS boolean CREATE FUNCTION functest_S_3a() RETURNS boolean
BEGIN ATOMIC BEGIN ATOMIC
RETURN false; ;;RETURN false;;
END; END;
CREATE FUNCTION functest_S_10(a text, b date) RETURNS boolean CREATE FUNCTION functest_S_10(a text, b date) RETURNS boolean
LANGUAGE SQL LANGUAGE SQL
......
...@@ -165,7 +165,7 @@ CREATE FUNCTION functest_S_3() RETURNS boolean ...@@ -165,7 +165,7 @@ CREATE FUNCTION functest_S_3() RETURNS boolean
RETURN false; RETURN false;
CREATE FUNCTION functest_S_3a() RETURNS boolean CREATE FUNCTION functest_S_3a() RETURNS boolean
BEGIN ATOMIC BEGIN ATOMIC
RETURN false; ;;RETURN false;;
END; END;
CREATE FUNCTION functest_S_10(a text, b date) RETURNS boolean CREATE FUNCTION functest_S_10(a text, b date) RETURNS boolean
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment