@@ -21,8 +21,6 @@ static void transfer_relfile(pageCnvCtx *pageConverter,
2121const char * fromfile ,const char * tofile ,
2222const char * nspname ,const char * relname );
2323
24- /* used by scandir(), must be global */
25- char scandir_file_pattern [MAXPGPATH ];
2624
2725/*
2826 * transfer_all_new_dbs()
@@ -134,6 +132,7 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
134132FileNameMap * maps ,int size )
135133{
136134char old_dir [MAXPGPATH ];
135+ char file_pattern [MAXPGPATH ];
137136struct dirent * * namelist = NULL ;
138137int numFiles = 0 ;
139138int mapnum ;
@@ -175,7 +174,8 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
175174pg_log (PG_REPORT ,OVERWRITE_MESSAGE ,old_file );
176175
177176/*
178- * Copy/link the relation file to the new cluster
177+ * Copy/link the relation's primary file (segment 0 of main fork)
178+ * to the new cluster
179179 */
180180unlink (new_file );
181181transfer_relfile (pageConverter ,old_file ,new_file ,
@@ -187,7 +187,7 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
187187/*
188188 * Copy/link any fsm and vm files, if they exist
189189 */
190- snprintf (scandir_file_pattern ,sizeof (scandir_file_pattern ),"%u_" ,
190+ snprintf (file_pattern ,sizeof (file_pattern ),"%u_" ,
191191maps [mapnum ].old_relfilenode );
192192
193193for (fileno = 0 ;fileno < numFiles ;fileno ++ )
@@ -199,8 +199,8 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
199199if (vm_offset && strlen (vm_offset )== strlen ("_vm" ))
200200is_vm_file = true;
201201
202- if (strncmp (namelist [fileno ]-> d_name ,scandir_file_pattern ,
203- strlen (scandir_file_pattern ))== 0 &&
202+ if (strncmp (namelist [fileno ]-> d_name ,file_pattern ,
203+ strlen (file_pattern ))== 0 &&
204204(!is_vm_file || !vm_crashsafe_change ))
205205{
206206snprintf (old_file ,sizeof (old_file ),"%s/%s" ,maps [mapnum ].old_dir ,
@@ -222,13 +222,13 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
222222 * relfilenode.3, ... 'fsm' and 'vm' files use underscores so are not
223223 * copied.
224224 */
225- snprintf (scandir_file_pattern ,sizeof (scandir_file_pattern ),"%u." ,
225+ snprintf (file_pattern ,sizeof (file_pattern ),"%u." ,
226226maps [mapnum ].old_relfilenode );
227227
228228for (fileno = 0 ;fileno < numFiles ;fileno ++ )
229229{
230- if (strncmp (namelist [fileno ]-> d_name ,scandir_file_pattern ,
231- strlen (scandir_file_pattern ))== 0 )
230+ if (strncmp (namelist [fileno ]-> d_name ,file_pattern ,
231+ strlen (file_pattern ))== 0 )
232232{
233233snprintf (old_file ,sizeof (old_file ),"%s/%s" ,maps [mapnum ].old_dir ,
234234namelist [fileno ]-> d_name );
@@ -242,7 +242,6 @@ transfer_single_new_db(pageCnvCtx *pageConverter,
242242}
243243}
244244
245-
246245if (numFiles > 0 )
247246{
248247for (fileno = 0 ;fileno < numFiles ;fileno ++ )