default_tablespace

Started by carl clemensalmost 15 years ago5 messages
#1carl clemens
carlclemens1@yahoo.com

Hi Hackers,

After reviewing docs and searching web
cannot find out how to determine the default tablespace
of a user?

Like:

select spcname from blab where roloid = 1111;

Is this possible?

Thank you for your time.

#2David Kerr
dmk@mr-paradox.net
In reply to: carl clemens (#1)
Re: default_tablespace

On Wed, Feb 16, 2011 at 03:59:13PM -0800, carl clemens wrote:
- Hi Hackers,
-
- After reviewing docs and searching web
- cannot find out how to determine the default tablespace
- of a user?
-
- Like:
-
- select spcname from blab where roloid = 1111;
-
- Is this possible?
-
- Thank you for your time.
-

It doesn't appear to me that default tablespaces are assigned to a user, they're
assigned to a database.

A user can set the variable default_tablespace in their session to over-ride the
database default, but that wouldn't be stored anywhere in the database (it's a client
variable).

you can find the OID for the default tablespace for a specific database in pg_database.

more info:
http://www.postgresql.org/docs/9.0/static/runtime-config-client.html#GUC-DEFAULT-TABLESPACE

Dave

#3Florian Pflug
fgp@phlo.org
In reply to: David Kerr (#2)
Re: default_tablespace

On Feb17, 2011, at 18:32 , David Kerr wrote:

On Wed, Feb 16, 2011 at 03:59:13PM -0800, carl clemens wrote:
- After reviewing docs and searching web
- cannot find out how to determine the default tablespace
- of a user?

It doesn't appear to me that default tablespaces are assigned to a user, they're
assigned to a database.

A user can set the variable default_tablespace in their session to over-ride the
database default, but that wouldn't be stored anywhere in the database (it's a client
variable).

You can, however, do ALTER USER <user> SET default_tablespace=<whatever>, which will
cause default_tablespace to be set automatically upon login for that user.

I don't know of the top of my head how we store that in the system catalogs, though.
You'll have to check the documentation to find that out...

best regards,
Florian Pflug

#4David Kerr
dmk@mr-paradox.net
In reply to: Florian Pflug (#3)
Re: default_tablespace

On Thu, Feb 17, 2011 at 08:55:55PM +0100, Florian Pflug wrote:
- On Feb17, 2011, at 18:32 , David Kerr wrote:
- > On Wed, Feb 16, 2011 at 03:59:13PM -0800, carl clemens wrote:
- > - After reviewing docs and searching web
- > - cannot find out how to determine the default tablespace
- > - of a user?
- >
- > It doesn't appear to me that default tablespaces are assigned to a user, they're
- > assigned to a database.
- >
- > A user can set the variable default_tablespace in their session to over-ride the
- > database default, but that wouldn't be stored anywhere in the database (it's a client
- > variable).
-
-
- You can, however, do ALTER USER <user> SET default_tablespace=<whatever>, which will
- cause default_tablespace to be set automatically upon login for that user.
-
- I don't know of the top of my head how we store that in the system catalogs, though.
- You'll have to check the documentation to find that out...
-
- best regards,
- Florian Pflug

oh, you're right. my mistake.

and it looks like it's stored in useconfig in pg_user.

select * from pg_user where usename = 'david.kerr';
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
------------+----------+-------------+----------+-----------+----------+----------+---------------------------
david.kerr | 16482 | f | t | t | ******** | | {default_tablespace=test}

Dave

#5Alvaro Herrera
alvherre@commandprompt.com
In reply to: Florian Pflug (#3)
Re: default_tablespace

Excerpts from Florian Pflug's message of jue feb 17 16:55:55 -0300 2011:

You can, however, do ALTER USER <user> SET default_tablespace=<whatever>, which will
cause default_tablespace to be set automatically upon login for that user.

I don't know of the top of my head how we store that in the system catalogs, though.
You'll have to check the documentation to find that out...

It's in pg_db_role_settings.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support