> The "database location" stuff that Peter and Thomas have been arguing
> about is intended to allow a single postmaster to control databases that
> are in multiple physical locations --- but there seems to be some debate
> as to whether it works ;-). (I never tried it.) In any case, we don't
> currently have any official provision for controlling location at finer
> than database level. It'd be nice to be able to push individual tables
> around, I suppose.
>
> This wouldn't require a new storage manager, since presumably you'd
> still be using the Unix-filesystem storage manager. The trick would be
> to allow a path rather than just a base file name to be specified
> per-relation. I'm not sure if it'd be hard or not. Probably, all the
> system tables would have to stay in the database's default directory,
> but maybe user tables could be given path names without too much
> trouble...
This is possible since PostgreSQL was born unless I misunderstand what
you are saying...
test=> create table "/tmp/t1" (i int);
CREATE
bash$ ls -l /tmp/t1
-rw------- 1 postgres postgres 0 Jan 14 11:19 /tmp/t1
Even,
test=> create table "../test2/pg_proc" (i int);
ERROR: cannot create ../test2/pg_proc
This is not good. Maybe we should prevent to make this kind of table
names.
BTW, it would be nice to add a "table space" concept to the create
table statement.
-- reserve a table space named 'foo' which is physically located under
-- /pg/myspace. Only PostgreSQL super user can execute this command
-- to avoid security risks.
create table space foo as '/pg/myspace';
-- create table t1 under /pg/myspace
create table t1 (i int) with table space 'foo';
--
Tatsuo Ishii