Обсуждение: pg_get_indexdef excludes tablespace info
Postgres 8.2.4. Would this be considered a bug or is the tablespace info excluded for a particular reason? # CREATE TABLESPACE foo_space LOCATION '/some/dir'; # CREATE TABLE foo (a int); # CREATE INDEX foo_idx ON foo(a) TABLESPACE foo_space; # SELECT pg_get_indexdef(oid) FROM pg_class WHERE relname = 'foo_idx'; pg_get_indexdef --------------------------------------------- CREATE INDEX foo_idx ON foo USING btree (a) (1 row) I would expect a "TABLESPACE foo_space" to be added on to the end of that. Haven't checked if other pg_get_* functions are affected, or if it even applies to them. Steve
"Steven Flatt" <steven.flatt@gmail.com> writes: > Would this be considered a bug or is the tablespace info excluded for > a particular reason? It's intentional: pg_dump doesn't want it there. In a pg_dump script we want to do set default_tablespace = foo_space; create index foo_idx on foo using btree (a); because that way the creation command doesn't fail completely if there's no such tablespace in the target installation. We could maybe teach pg_dump to strip the clause out of pg_get_indexdef's output, but that seemed complicated and fragile. regards, tom lane