Обсуждение: BUG #2779: Making an inherited table to a view causes could not open relation error in base table
The following bug has been logged online: Bug reference: 2779 Logged by: Sven Klemm Email address: sven@c3d2.de PostgreSQL version: 8.1 Operating system: Linux (Debian) Description: Making an inherited table to a view causes could not open relation error in base table Details: Steps to reproduce: CREATE TABLE base( name TEXT ); CREATE TABLE child() INHERITS( base ); CREATE RULE "_RETURN" AS ON SELECT TO child DO INSTEAD SELECT 'Chunky Bacon'::text AS name; SELECT * FROM child; SELECT * FROM ONLY base; -- the next query causes the error SELECT * FROM base; After dropping child queries to base work again.
"Sven Klemm" <sven@c3d2.de> writes: > CREATE TABLE base( name TEXT ); > CREATE TABLE child() INHERITS( base ); > CREATE RULE "_RETURN" AS ON SELECT TO child DO INSTEAD SELECT 'Chunky > Bacon'::text AS name; This is definitely in the category of "don't do that". It's an oversight that DefineQueryRewrite() doesn't check for the case. Actually, I wonder whether we still need to support conversion of tables to views at all. That was never meant as anything but a temporary hack to allow loading pre-7.1 pg_dump scripts. regards, tom lane
Tom Lane wrote: > "Sven Klemm" <sven@c3d2.de> writes: > > CREATE TABLE base( name TEXT ); > > CREATE TABLE child() INHERITS( base ); > > > CREATE RULE "_RETURN" AS ON SELECT TO child DO INSTEAD SELECT 'Chunky > > Bacon'::text AS name; > > This is definitely in the category of "don't do that". It's an > oversight that DefineQueryRewrite() doesn't check for the case. > > Actually, I wonder whether we still need to support conversion of > tables to views at all. That was never meant as anything but a > temporary hack to allow loading pre-7.1 pg_dump scripts. IIRC I tried it when I was reviewing the updatable views patch, and it worked. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Alvaro Herrera <alvherre@commandprompt.com> writes: > Tom Lane wrote: >> Actually, I wonder whether we still need to support conversion of >> tables to views at all. That was never meant as anything but a >> temporary hack to allow loading pre-7.1 pg_dump scripts. > IIRC I tried it when I was reviewing the updatable views patch, and it > worked. Well, yeah, it still works for the cases it was intended to work for. What I'm wondering is what other weird corner cases might need to be forbidden to keep it secure against people who are looking for ways to break it. regards, tom lane