Thread: pg_rules view

pg_rules view

From
Christopher Kings-Lynne
Date:
I tried creating a rule like:

create rule "_RETURN" as on select to asfd do instead select * from blah;

And it worked.

But it doesn't appear in pg_rules.

I created this one:

create rule myrule as on insert to asfd do instead nothing;

And it does appear:

test=# select * from pg_rules ;schemaname |  tablename  |   rulename    |
definition

------------+-------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------pg_catalog
|pg_settings | pg_settings_n | CREATE RULE pg_settings_n AS
 
ON UPDATE TO pg_settings DO INSTEAD NOTHING;pg_catalog | pg_settings | pg_settings_u | CREATE RULE pg_settings_u AS
ON UPDATE TO pg_settings WHERE (new.name = old.name) DO SELECT
set_config(old.name, new.setting, false) AS set_config;chriskl    | asfd        | myrule        | CREATE RULE myrule AS
ON
INSERT TO asfd DO INSTEAD NOTHING;
(3 rows)

What gives?

Chris




Re: pg_rules view

From
Tom Lane
Date:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> I tried creating a rule like:
> create rule "_RETURN" as on select to asfd do instead select * from blah;
> And it worked.
> But it doesn't appear in pg_rules.

That's by design.  pg_rules suppresses view rules.  You'll find asfd in
pg_views, instead.
        regards, tom lane