15 #include "catalog/pg_class_d.h"
30 char *old_pgdata,
char *new_pgdata)
61 new_pgdata, old_pgdata);
87 char *old_pgdata,
char *new_pgdata,
char *old_tablespace)
93 for (old_dbnum = new_dbnum = 0;
94 old_dbnum < old_db_arr->
ndbs;
95 old_dbnum++, new_dbnum++)
97 DbInfo *old_db = &old_db_arr->
dbs[old_dbnum],
107 for (; new_dbnum < new_db_arr->
ndbs; new_dbnum++)
109 new_db = &new_db_arr->
dbs[new_dbnum];
110 if (strcmp(old_db->
db_name, new_db->db_name) == 0)
114 if (new_dbnum >= new_db_arr->
ndbs)
115 pg_fatal(
"old database \"%s\" not found in the new cluster",
138 bool vm_must_add_frozenbit =
false;
145 vm_must_add_frozenbit =
true;
147 for (mapnum = 0; mapnum < size; mapnum++)
149 if (old_tablespace == NULL ||
150 strcmp(
maps[mapnum].old_tablespace, old_tablespace) == 0)
178 char extent_suffix[65];
186 for (segno = 0;; segno++)
189 extent_suffix[0] =
'\0';
191 snprintf(extent_suffix,
sizeof(extent_suffix),
".%d", segno);
193 snprintf(old_file,
sizeof(old_file),
"%s%s/%u/%u%s%s",
200 snprintf(new_file,
sizeof(new_file),
"%s%s/%u/%u%s%s",
209 if (type_suffix[0] !=
'\0' || segno != 0)
212 if (
stat(old_file, &statbuf) != 0)
218 pg_fatal(
"error while checking for file existence \"%s.%s\" (\"%s\" to \"%s\"): %s",
233 if (vm_must_add_frozenbit && strcmp(type_suffix,
"_vm") == 0)
void parallel_transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr, char *old_pgdata, char *new_pgdata, char *old_tablespace)
bool reap_child(bool wait_for_child)
void linkFile(const char *src, const char *dst, const char *schemaName, const char *relName)
void rewriteVisibilityMap(const char *fromfile, const char *tofile, const char *schemaName, const char *relName)
void cloneFile(const char *src, const char *dst, const char *schemaName, const char *relName)
void copyFile(const char *src, const char *dst, const char *schemaName, const char *relName)
FileNameMap * gen_db_file_maps(DbInfo *old_db, DbInfo *new_db, int *nmaps, const char *old_pgdata, const char *new_pgdata)
static void check_ok(void)
#define VISIBILITY_MAP_FROZEN_BIT_CAT_VER
void void pg_log(eLogType type, const char *fmt,...) pg_attribute_printf(2
void void prep_status_progress(const char *fmt,...) pg_attribute_printf(1
void end_progress_output(void)
void transfer_all_new_tablespaces(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr, char *old_pgdata, char *new_pgdata)
void transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr, char *old_pgdata, char *new_pgdata, char *old_tablespace)
static void transfer_relfile(FileNameMap *map, const char *type_suffix, bool vm_must_add_frozenbit)
static void transfer_single_new_db(FileNameMap *maps, int size, char *old_tablespace)
const char * new_tablespace
const char * old_tablespace_suffix
const char * old_tablespace
RelFileNumber relfilenumber
const char * new_tablespace_suffix
transferMode transfer_mode
static const pg_conv_map maps[]