mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Create 'default_tablespace' GUC variable that supplies a TABLESPACE
clause implicitly whenever one is not given explicitly. Remove concept of a schema having an associated tablespace, and simplify the rules for selecting a default tablespace for a table or index. It's now just (a) explicit TABLESPACE clause; (b) default_tablespace if that's not an empty string; (c) database's default. This will allow pg_dump to use SET commands instead of tablespace clauses to determine object locations (but I didn't actually make it do so). All per recent discussions.
This commit is contained in:
@ -367,7 +367,8 @@ sql_exec_dumpalldbs(PGconn *conn, struct options *opts)
|
||||
char todo[1024];
|
||||
|
||||
/* get the oid and database name from the system pg_database table */
|
||||
snprintf(todo, 1024, "SELECT d.oid AS \"Oid\", datname AS \"Database Name\", "
|
||||
snprintf(todo, sizeof(todo),
|
||||
"SELECT d.oid AS \"Oid\", datname AS \"Database Name\", "
|
||||
"spcname AS \"Tablespace\" FROM pg_database d JOIN pg_tablespace t ON "
|
||||
"(dattablespace = t.oid) ORDER BY 2");
|
||||
|
||||
@ -383,7 +384,7 @@ sql_exec_dumpalltables(PGconn *conn, struct options *opts)
|
||||
char todo[1024];
|
||||
char *addfields = ",c.oid AS \"Oid\", nspname AS \"Schema\", spcname as \"Tablespace\" ";
|
||||
|
||||
snprintf(todo, 1024,
|
||||
snprintf(todo, sizeof(todo),
|
||||
"SELECT relfilenode as \"Filenode\", relname as \"Table Name\" %s "
|
||||
"FROM pg_class c "
|
||||
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace "
|
||||
@ -393,8 +394,7 @@ sql_exec_dumpalltables(PGconn *conn, struct options *opts)
|
||||
" %s"
|
||||
" t.oid = CASE"
|
||||
" WHEN reltablespace <> 0 THEN reltablespace"
|
||||
" WHEN n.nsptablespace <> 0 THEN nsptablespace"
|
||||
" WHEN d.dattablespace <> 0 THEN dattablespace"
|
||||
" ELSE dattablespace"
|
||||
" END "
|
||||
"ORDER BY relname",
|
||||
opts->extended ? addfields : "",
|
||||
@ -451,7 +451,7 @@ sql_exec_searchtables(PGconn *conn, struct options *opts)
|
||||
|
||||
/* now build the query */
|
||||
todo = (char *) myalloc(650 + strlen(qualifiers));
|
||||
snprintf(todo, 1024,
|
||||
snprintf(todo, 650 + strlen(qualifiers),
|
||||
"SELECT relfilenode as \"Filenode\", relname as \"Table Name\" %s\n"
|
||||
"FROM pg_class c \n"
|
||||
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace \n"
|
||||
@ -460,8 +460,7 @@ sql_exec_searchtables(PGconn *conn, struct options *opts)
|
||||
"WHERE relkind IN ('r', 'i', 'S', 't') AND \n"
|
||||
" t.oid = CASE\n"
|
||||
" WHEN reltablespace <> 0 THEN reltablespace\n"
|
||||
" WHEN n.nsptablespace <> 0 THEN nsptablespace\n"
|
||||
" WHEN d.dattablespace <> 0 THEN dattablespace\n"
|
||||
" ELSE dattablespace\n"
|
||||
" END AND \n"
|
||||
" (%s) \n"
|
||||
"ORDER BY relname\n",
|
||||
@ -478,7 +477,8 @@ sql_exec_dumpalltbspc(PGconn *conn, struct options *opts)
|
||||
{
|
||||
char todo[1024];
|
||||
|
||||
snprintf(todo, 1024, "SELECT oid AS \"Oid\", spcname as \"Tablespace Name\"\n"
|
||||
snprintf(todo, sizeof(todo),
|
||||
"SELECT oid AS \"Oid\", spcname as \"Tablespace Name\"\n"
|
||||
"FROM pg_tablespace");
|
||||
|
||||
sql_exec(conn, todo, opts->quiet);
|
||||
|
Reference in New Issue
Block a user