Disallow renaming a rule to "_RETURN".
Tom Lane <tgl@sss.pgh.pa.us>
Disallow renaming a rule to "_RETURN". ON SELECT rules must be named "_RETURN", while other kinds of rules must not be; this ancient restriction is depended on by various client code. We successfully enforced this convention in most places, but ALTER RULE allowed renaming a non-SELECT rule to "_RETURN". Notably, that would break dump/restore, since the eventual CREATE RULE command would reject the name. While at it, remove DefineQueryRewrite's hack to substitute "_RETURN" for the convention that was used before 7.3. We dropped other server-side code that supported restoring pre-7.3 dumps some time ago (notably in e58a59975 and nearby commits), but this bit was missed. Bug: #19543 Reported-by: Adam Pickering <adamkpickering@gmail.com> Author: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/19543-461228e77f3b32fc@postgresql.org Backpatch-through: 14
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/rewrite/rewriteDefine.c | modified | +16 −20 |
| src/test/regress/expected/rules.out | modified | +2 −0 |
| src/test/regress/sql/rules.sql | modified | +1 −0 |
Discussion
Cited messages not in the archive:
19543-461228e77f3b32fc@postgresql.org