Reject non-ON-SELECT rules that are named "_RETURN".

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 797e313dc9aed83e28e9f1d08a281ea48c560cd2
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2022-10-17T16:14:39Z
Releases: 16.0
Reject non-ON-SELECT rules that are named "_RETURN".

DefineQueryRewrite() has long required that ON SELECT rules be named
"_RETURN".  But we overlooked the converse case: we should forbid
non-ON-SELECT rules that are named "_RETURN".  In particular this
prevents using CREATE OR REPLACE RULE to overwrite a view's _RETURN
rule with some other kind of rule, thereby breaking the view.

Per bug #17646 from Kui Liu.  Back-patch to all supported branches.

Discussion: https://postgr.es/m/17646-70c93cfa40365776@postgresql.org

Files

PathChange+/−
src/backend/rewrite/rewriteDefine.c modified +12 −0

Discussion