On Wed, 12 May 2004, William Anthony Lim wrote:

> Christoph,
> 
> First, is it safe for multi user? I mean maybe first user need working with D200402, 
> second one need with D200403, if I do this in first user connection:
> 
> SET search_path to D200402 ; 
> 
> does it affect to the second user search path?

No, search paths are session vars.

> Second, I want it dinamic. So, if I want to using D200402, I just need to pass 
> 'D200402' string in the argument of the function. Got my point?

You should be able to do it with dot notation:

postgres=# create schema a;
CREATE SCHEMA
postgres=# create schema b;
CREATE SCHEMA
postgres=# create table a.test (info text);
CREATE TABLE
postgres=# create table b.test (info text);
CREATE TABLE
postgres=# insert into a.test values ('abc');
INSERT 1400496 1
postgres=# insert into b.test values ('123');
INSERT 1400497 1

-- Now we try to look up the table without setting a search path and no 
-- dot notation:

postgres=# select * from test;
ERROR:  relation "test" does not exist
ERROR:  relation "test" does not exist

-- Now we set the search path, notice the order:

postgres=# set search_path=public,a,b;
SET
postgres=# select * from test;
 info
------
 abc
(1 row)

-- Reverse the order of a and b

postgres=# set search_path=public,b,a;
SET
postgres=# select * from test;
 info
------
 123
(1 row)

-- now without a

postgres=# set search_path=public,b;
SET
postgres=# select * from test;
 info
------
 123
(1 row)

postgres=# set search_path=public,a;
SET
postgres=# select * from test;
 info
------
 abc
(1 row)

-- Now we use dot notation.  first a, then b.  Notice that
-- b, which isn't in our search path, works fine.

postgres=# select * from a.test;
 info
------
 abc
(1 row)

postgres=# select * from b.test;
 info
------
 123
(1 row)


> 
> Thanks anyway,
> 
> William
> 
> >> 
> >> Hi all,
> >> 
> >> I'm just experimenting with schema usage. I'm going to use it as a fake 
> >> 'multi-database' system. Is Postgresql support coding schema name using string 
> >> variable so I can pass it with parameter? I'm give u an example:
> >> 
> >> I have schema: D200401,D200402.D200403,D200404, etc.
> >> 
> >> I've set my user just like the schema name, so who login with D200401 will be 
> >> using D200401 schema. When someone using D200401 schema, they sometime want to 
> >> access another schema, so in my thought I can use variable like this:
> >> 
> >> sPointer='D200403'
> >> 
> >> select * from sPointer.myTable -- Question: How to write it to work properly?
> >> 
> >> Thanks
> >> 
> >> 
> >> William
> >> 
> >> 
> >SET search_path to D200401 ;
> >SET search_path to D200402 ; 
> >... 
> >should do the job. 
> >
> >Regards, Christoph 
> >
> >
> >---------------------------(end of broadcast)---------------------------
> >TIP 4: Don't 'kill -9' the postmaster
> >
> 
> 
> 
> Need a new email address that people can remember
> Check out the new EudoraMail at
> http://www.eudoramail.com
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
>                http://archives.postgresql.org
> 


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to