Fix EXIT out of outermost block in plpgsql.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 13 Sep 2021 16:42:03 +0000 (12:42 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 13 Sep 2021 16:42:03 +0000 (12:42 -0400)
commit1bf2518dd67be58b207979a66db7bb7c94b93a62
treea614f12145a5ac9f26ea6ad23e4f037813ec4c8a
parentdf3640e5293dccbf964508babfc067282ea7a2fc
Fix EXIT out of outermost block in plpgsql.

Ordinarily, using EXIT this way would draw "control reached end of
function without RETURN".  However, if the function is one where we
don't require an explicit RETURN (such as a DO block), that should
not happen.  It did anyway, because add_dummy_return() neglected to
account for the case.

Per report from Herwig Goemans.  Back-patch to all supported branches.

Discussion: https://postgr.es/m/868ae948-e3ca-c7ec-95a6-83cfc08ef750@gmail.com
src/pl/plpgsql/src/expected/plpgsql_control.out
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/sql/plpgsql_control.sql