BUG #1858: setting search path in select doesn't (always) work

Started by Dick Kniepover 20 years ago4 messagesbugs
Jump to latest
#1Dick Kniep
dick.kniep@lindix.nl

The following bug has been logged online:

Bug reference: 1858
Logged by: D.J. Kniep
Email address: dick.kniep@lindix.nl
PostgreSQL version: 7.4.8
Operating system: Linux (SuSE 9.3) /RedHat ES 4
Description: setting search path in select doesn't (always) work
Details:

we have been running a Zope site with Postgresql 7.4.8 for a while. In this
installation almost the first statement is:

cvix=# SELECT set_config('search_path', '"' || t2.schema || '"', true)
cvix-# FROM "Lindix"."Gebruikers" as t1, "Lindix"."Administratie" as t2
cvix-# WHERE uid = 'zon0023'
cvix-# AND t1.administratie_id = t2.administratie_id;
set_config
------------------
"adeuxproductie"
(1 row)

As you can see, I have a fixed schema called "Lindix" where the actual
destination schema is in a table. Depending on the user, the search_path is
set and it will be able to find the table.

Now we have installed a new server, with the same db version, the same
content (a restore from the original db) and the same coding.

After setting the search path the query

Select * from vwexternetoegang

produces the required results in the first installation, but in the new
installation, it cannot find the view. However, if I do an explicit

Set search_path to "testschema";

it works as expected.

The only real difference between the 2 installations I see is that the
working installation has a RedHat Enterprise Linux ES Release 4 (Nahant
update1) version versus the new (not working) a SuSE 9.3 installation

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dick Kniep (#1)
Re: BUG #1858: setting search path in select doesn't (always) work

"D.J. Kniep" <dick.kniep@lindix.nl> writes:

After setting the search path the query
Select * from vwexternetoegang
produces the required results in the first installation, but in the new
installation, it cannot find the view. However, if I do an explicit
Set search_path to "testschema";
it works as expected.

What does "show search_path" report in the failing and non-failing states?
Also try "select current_schemas(true)".

regards, tom lane

#3Michael Fuhr
mike@fuhr.org
In reply to: Tom Lane (#2)
Re: BUG #1858: setting search path in select doesn't (always) work

On Fri, Sep 02, 2005 at 10:58:12AM -0400, Tom Lane wrote:

"D.J. Kniep" <dick.kniep@lindix.nl> writes:

After setting the search path the query
Select * from vwexternetoegang
produces the required results in the first installation, but in the new
installation, it cannot find the view. However, if I do an explicit
Set search_path to "testschema";
it works as expected.

What does "show search_path" report in the failing and non-failing states?
Also try "select current_schemas(true)".

This thread came up in pgsql-general yesterday; Dick says the real
problem was something else.

http://archives.postgresql.org/pgsql-general/2005-09/msg00074.php

--
Michael Fuhr

#4Dick Kniep
dick.kniep@lindix.nl
In reply to: Michael Fuhr (#3)
Re: BUG #1858: setting search path in select doesn't (always) work

Hi list,

I reported the bug because I was convinced it was something fishy, however,
the bug I reported proved to be something completely else. I don't even know
if it is a bug at all. If you do a set search_path; the path is set
correctly according to the rules of autocommit and everything else.

If however you are not authorized to use the schema, the next query on a table
within the requested schema results in a table not found condition, which
makes sense, because it actually cannot find the table, because it cannot
enter the schema.

I have checked the way psycopg handles this, and if a select is done on the
table this is working correctly,

File "/home/dick/CVix/CVix/src/ObjectBuilder.py", line 516, in __BldTabDef
cur.execute(Sqlstmt)
psycopg.ProgrammingError: ERROR: permission denied for schema adeuxproductie

Select * from "adeuxproductie"."parameters" WHERE 1=0

so the problem must be within Zope and I will report this problem to the Zope
community.

Thanks for all your help.

Op vrijdag 2 september 2005 17:12, schreef Michael Fuhr:

On Fri, Sep 02, 2005 at 10:58:12AM -0400, Tom Lane wrote:

"D.J. Kniep" <dick.kniep@lindix.nl> writes:

After setting the search path the query
Select * from vwexternetoegang
produces the required results in the first installation, but in the new
installation, it cannot find the view. However, if I do an explicit
Set search_path to "testschema";
it works as expected.

What does "show search_path" report in the failing and non-failing
states? Also try "select current_schemas(true)".

This thread came up in pgsql-general yesterday; Dick says the real
problem was something else.

http://archives.postgresql.org/pgsql-general/2005-09/msg00074.php

Cheers,
Dick Kniep