Q: pg_catalog views, OIDs and search_path

From: Ian Barwick <barwick(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Q: pg_catalog views, OIDs and search_path
Date: 2003-02-17 22:44:45
Message-ID: 200302172344.45315.barwick@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


I'm preparing a patch to make more psql slash commands
tab-completable (\di, \dv etc-) and have come across the following dilemma:

- only relations visible in the current search path should be returned [*]
- to determine visibilty via pg_catalog.pg_table_is_visible(), the
relation's OID is necessary;
- using (say) pg_catalog.pg_views to obtain view names seems to be the
"cleaner" approach (making psql independent from the backend etc.)
- views don't come with OIDs

As is psql currently uses pg_catalog.pg_views to complete view names,
meaning it will happily tab-complete (say) DROP VIEW with a view _not_
in the current search path. If executed the statement naturally
produces the error 'ERROR: view "..." does not exist'.

Q: is there any likelihood of the pg_catalog views (pg_views, pg_tables,
pg_indexes, pg_rules, possibly others I have missed) returning the
relevant OID or (probably cleaner) the result of pg_table_is_visible()
as a boolean?

Otherwise the only workaround will be to ignore the catalog views and
work with pg_class directly, which I will probably do, but it
feels like a step backwards.

[*] at least, this is how \d currently behaves and IMHO is intuitive.
\d should of course operate on schema names too, to enable
completion of relation names not in the search path; tentative
patch will follow.

Ian Barwick
barwick(at)gmx(dot)net

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2003-02-17 22:52:40 Re: COUNT and Performance ...
Previous Message Tom Lane 2003-02-17 22:42:21 Re: Version 7.2.3 Vacuum abnormality