On 11/5/19 6:43 AM, Michael Shapiro wrote:
Can I set search_path='' (ie to a string that does not match any
existing schema)? Would that be the proper way to guarantee that the
definition for any view will always be fully-qualified?
test=# show search_path;
search_path
------------------------------------------------------------------
public,accounting,history,main,utility,timeclock,table_templates
test=# select * from pg_views where viewname = 'up_view';;
schemaname | viewname | viewowner | definition
------------+----------+-----------+-------------------------------
public | up_view | aklaver | SELECT up_test.id AS up_id, +
| | | up_test.col1 AS bool_col,+
| | | up_test.col_2 AS col2 +
| | | FROM up_test;
(1 row)
test=# set search_path = '';
SET
test=# show search_path;
search_path
-------------
""
(1 row)
test=# select * from pg_views where viewname = 'up_view';;
schemaname | viewname | viewowner | definition
------------+----------+-----------+-------------------------------
public | up_view | aklaver | SELECT up_test.id AS up_id, +
| | | up_test.col1 AS bool_col,+
| | | up_test.col_2 AS col2 +
| | | FROM public.up_test;
(1 row)
On Sun, Nov 3, 2019 at 3:15 PM Tom Lane <tgl@xxxxxxxxxxxxx
<mailto:tgl@xxxxxxxxxxxxx>> wrote:
Michael Shapiro <mshapiro51@xxxxxxxxx <mailto:mshapiro51@xxxxxxxxx>>
writes:
> It seems that the definition of a view from pg_catalog.pg_views
does not
> qualify the tables used in the view if the tables are in the
current search
> path.
> Is it possible to either have the definition always qualify all
tables
> independent of the search_path (or else provide a new column that
does
> that)?
Why don't you just change the search path to empty before selecting?
regards, tom lane
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx