From: | "Mathias Seiler" <mathias(dot)seiler(at)gmail(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #4141: Aliases in rules vanished, but they work |
Date: | 2008-05-03 21:27:16 |
Message-ID: | 200805032127.m43LRGbr012009@wwwmaster.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged online:
Bug reference: 4141
Logged by: Mathias Seiler
Email address: mathias(dot)seiler(at)gmail(dot)com
PostgreSQL version: 8.3.1
Operating system: Ubuntu: 2.6.20-16-server #2 SMP Tue Feb 12 05:48:21 UTC
2008 i686 GNU/Linux
Description: Aliases in rules vanished, but they work
Details:
Please consider the following:
postgres=# CREATE table foo (
postgres(# id serial,
postgres(# bar text
postgres(# );
NOTICE: CREATE TABLE will create implicit sequence "foo_id_seq" for serial
column "foo.id"
CREATE TABLE
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+------------+----------+-------
public | foo | table | root
public | foo_id_seq | sequence | root
(2 rows)
postgres=# CREATE VIEW foo_view AS
postgres-# SELECT * from foo limit 10;
CREATE VIEW
postgres=# \d foo_view
View "public.foo_view"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
bar | text |
View definition:
SELECT foo.id, foo.bar
FROM foo
LIMIT 10;
postgres=# CREATE RULE foo_delete AS ON DELETE TO foo_view do instead
postgres-# DELETE FROM foo f where f.id = old.id;
CREATE RULE
postgres=# \d foo_view
View "public.foo_view"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
bar | text |
View definition:
SELECT foo.id, foo.bar
FROM foo
LIMIT 10;
Rules:
foo_delete AS
ON DELETE TO foo_view DO INSTEAD DELETE FROM foo
WHERE f.id = old.id
postgres=# SELECT version();
version
----------------------------------------------------------------------------
-------------------
PostgreSQL 8.3.1 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2
(Ubuntu 4.1.2-0ubuntu4)
(1 row)
postgres=#
I used an alias to reference "foo" in the rule definition. Here's the
problem: If you dump this view (with rules) you get the same as above, a
"DELETE FROM foo WHERE ...": the alias is missing. As a result, the dump is
corrupted and produces errors while importing it, saying: "missing
FROM-clause entry for table "f" ...".
The view rule works btw. It deletes all rows in "foo_view" from the table
foo as expected and without any warnings or error messages.
If I should provide more details about my environment (which is pretty
default), let me know.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2008-05-03 21:52:13 | Re: BUG #4141: Aliases in rules vanished, but they work |
Previous Message | Simon Riggs | 2008-05-03 11:29:16 | Re: BUG #4137: Postgres drives pg_standby %r param to delete WAL file before processing |