> -----Original Message-----
> From: Andreas Pflug [mailto:[EMAIL PROTECTED] 
> Sent: 26 July 2004 17:28
> To: Dave Page
> Cc: Vitaly Belman; [EMAIL PROTECTED]
> Subject: Re: [pgadmin-support] Schemas causing problems :(
> 
> This is really hackers stuff.
> 
> 
> Dave Page wrote:
> > 
> > 
> > I don't recall that discussion, but in general I think we should 
> > completely ignore the search path. Consider a function: 
> foo.dostuff().
> > The current code will return an empty schema prefix for a 
> search_path 
> > of public,bar,foo. What if there is also public.dostuff() 
> or bar.dostuff()?
> > CREATE OR REPLACE could really screw up in that case...
> 
> Some logic black holes... preliminarily public only.

Public only would work fine unless the user had an object in pg_catalog
(not advisable, but when did that stop some ppl)...
 
> > 
> > I also don't like the notion of treating public as some kind of 
> > special schema. From PostgreSQL's pov, its only special in 
> that it's 
> > there by default in template1 and the search_path. Other than that 
> > it's just another schema and should be treated as such.
> 
> A grep showed that only FK has handles public special, all 
> other places go through pgDatabase::GetSchemaPrefix.

Yeah - I thought you were implying treating public/pg_catalog
differently when you said "It's obviously a mistake to suppress the
schema when creating/modifying objects (unless public or pg_catalog)"

> The correct overall behaviour seems
> 
> - find the first schema in search_path that exists.
> - If this is the schema in question, suppress it.

OK. Still might result in broken reverse engineered SQL when used in a
different session with a different search path of course.

> - (ignore all following schema names, this was the main problem)

Yup.

> - If schema = pg_catalog, suppress it.

Why? Any reverse engineered SQL will then incorrectly force objects into
the first existing schema in the search_path, not pg_catalog.

> Unfortunately, this search_path[i] = session_user is not 
> absolutely stable (schema or user name may change), but it 
> should be stable enough.
> 
> Thoughts?

Fully qualify everything. I think it's the only truly infallible way.

Regards, Dave

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to