#include "postgres_fe.h"
#include "pg_upgrade.h"
Go to the source code of this file.
Functions | |
static void | get_tablespace_paths (void) |
static void | set_tablespace_directory_suffix (ClusterInfo *cluster) |
void | init_tablespaces (void) |
static void get_tablespace_paths | ( | void | ) | [static] |
Definition at line 41 of file tablespace.c.
References conn, connectToServer(), executeQueryOrDie(), GET_MAJOR_VERSION, ClusterInfo::major_version, OSInfo::num_old_tablespaces, old_cluster, OSInfo::old_tablespaces, os_info, pg_malloc(), pg_strdup(), PQclear(), PQfinish(), PQfnumber(), PQgetvalue(), PQntuples(), and snprintf().
Referenced by init_tablespaces().
{ PGconn *conn = connectToServer(&old_cluster, "template1"); PGresult *res; int tblnum; int i_spclocation; char query[QUERY_ALLOC]; snprintf(query, sizeof(query), "SELECT %s " "FROM pg_catalog.pg_tablespace " "WHERE spcname != 'pg_default' AND " " spcname != 'pg_global'", /* 9.2 removed the spclocation column */ (GET_MAJOR_VERSION(old_cluster.major_version) <= 901) ? "spclocation" : "pg_catalog.pg_tablespace_location(oid) AS spclocation"); res = executeQueryOrDie(conn, "%s", query); if ((os_info.num_old_tablespaces = PQntuples(res)) != 0) os_info.old_tablespaces = (char **) pg_malloc( os_info.num_old_tablespaces * sizeof(char *)); else os_info.old_tablespaces = NULL; i_spclocation = PQfnumber(res, "spclocation"); for (tblnum = 0; tblnum < os_info.num_old_tablespaces; tblnum++) os_info.old_tablespaces[tblnum] = pg_strdup( PQgetvalue(res, tblnum, i_spclocation)); PQclear(res); PQfinish(conn); return; }
void init_tablespaces | ( | void | ) |
Definition at line 19 of file tablespace.c.
References get_tablespace_paths(), new_cluster, OSInfo::num_old_tablespaces, old_cluster, os_info, PG_FATAL, pg_log(), set_tablespace_directory_suffix(), and ClusterInfo::tablespace_suffix.
Referenced by check_and_dump_old_cluster().
{ get_tablespace_paths(); set_tablespace_directory_suffix(&old_cluster); set_tablespace_directory_suffix(&new_cluster); if (os_info.num_old_tablespaces > 0 && strcmp(old_cluster.tablespace_suffix, new_cluster.tablespace_suffix) == 0) pg_log(PG_FATAL, "Cannot upgrade to/from the same system catalog version when\n" "using tablespaces.\n"); }
static void set_tablespace_directory_suffix | ( | ClusterInfo * | cluster | ) | [static] |
Definition at line 81 of file tablespace.c.
References ControlData::cat_ver, ClusterInfo::controldata, GET_MAJOR_VERSION, ClusterInfo::major_version, ClusterInfo::major_version_str, pg_malloc(), pg_strdup(), and ClusterInfo::tablespace_suffix.
Referenced by init_tablespaces().
{ if (GET_MAJOR_VERSION(cluster->major_version) <= 804) cluster->tablespace_suffix = pg_strdup(""); else { /* This cluster has a version-specific subdirectory */ cluster->tablespace_suffix = pg_malloc(4 + strlen(cluster->major_version_str) + 10 /* OIDCHARS */ + 1); /* The leading slash is needed to start a new directory. */ sprintf(cluster->tablespace_suffix, "/PG_%s_%d", cluster->major_version_str, cluster->controldata.cat_ver); } }