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
This commit is contained in:
parent
37e1cce4dd
commit
bfeede9fa4
@ -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 ';'
|
||||||
{
|
{
|
||||||
|
/* As in stmtmulti, discard empty statements */
|
||||||
|
if ($2 != NULL)
|
||||||
$$ = lappend($1, $2);
|
$$ = lappend($1, $2);
|
||||||
|
else
|
||||||
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| /*EMPTY*/
|
| /*EMPTY*/
|
||||||
{
|
{
|
||||||
|
@ -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
|
|||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user