28 char *old_pgdata,
char *new_pgdata)
62 new_pgdata, old_pgdata);
88 char *old_pgdata,
char *new_pgdata,
char *old_tablespace)
94 for (old_dbnum = new_dbnum = 0;
95 old_dbnum < old_db_arr->
ndbs;
96 old_dbnum++, new_dbnum++)
98 DbInfo *old_db = &old_db_arr->
dbs[old_dbnum],
108 for (; new_dbnum < new_db_arr->
ndbs; new_dbnum++)
110 new_db = &new_db_arr->
dbs[new_dbnum];
111 if (strcmp(old_db->
db_name, new_db->db_name) == 0)
115 if (new_dbnum >= new_db_arr->
ndbs)
116 pg_fatal(
"old database \"%s\" not found in the new cluster",
139 bool vm_must_add_frozenbit =
false;
146 vm_must_add_frozenbit =
true;
148 for (mapnum = 0; mapnum <
size; mapnum++)
150 if (old_tablespace == NULL ||
151 strcmp(
maps[mapnum].old_tablespace, old_tablespace) == 0)
179 char extent_suffix[65];
187 for (segno = 0;; segno++)
190 extent_suffix[0] =
'\0';
192 snprintf(extent_suffix,
sizeof(extent_suffix),
".%d", segno);
194 snprintf(old_file,
sizeof(old_file),
"%s%s/%u/%u%s%s",
201 snprintf(new_file,
sizeof(new_file),
"%s%s/%u/%u%s%s",
210 if (type_suffix[0] !=
'\0' || segno != 0)
213 if (
stat(old_file, &statbuf) != 0)
219 pg_fatal(
"error while checking for file existence \"%s.%s\" (\"%s\" to \"%s\"): %m",
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 copyFileByRange(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
@ TRANSFER_MODE_COPY_FILE_RANGE
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)
static pg_noinline void Size size
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[]