]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Reject cases where a query in WITH rewrites to just NOTIFY.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Jul 2021 15:02:26 +0000 (11:02 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Jul 2021 15:02:26 +0000 (11:02 -0400)
commitf0271cb15465e7992b48a7d59583b11f61b64e88
tree449be97156a680388e323e03e153d691d54ee994
parent996e69c1addcb96ca3cc9278142f418c3bd06c00
Reject cases where a query in WITH rewrites to just NOTIFY.

Since the executor can't cope with a utility statement appearing
as a node of a plan tree, we can't support cases where a rewrite
rule inserts a NOTIFY into an INSERT/UPDATE/DELETE command appearing
in a WITH clause of a larger query.  (One can imagine ways around
that, but it'd be a new feature not a bug fix, and so far there's
been no demand for it.)  RewriteQuery checked for this, but it
missed the case where the DML command rewrites to *only* a NOTIFY.
That'd lead to crashes later on in planning.  Add the missed check,
and improve the level of testing of this area.

Per bug #17094 from Yaoguang Chen.  It's been busted since WITH
was introduced, so back-patch to all supported branches.

Discussion: https://postgr.es/m/17094-bf15dff55eaf2e28@postgresql.org
src/backend/rewrite/rewriteHandler.c
src/test/regress/expected/with.out
src/test/regress/sql/with.sql