Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite16c62e

Browse files
committed
[PBCKP-146] prettify forkname handling.
1 parent4730857 commite16c62e

File tree

3 files changed

+48
-46
lines changed

3 files changed

+48
-46
lines changed

‎src/catalog.c‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,9 @@ get_backup_filelist(pgBackup *backup, bool strict)
11321132
if (get_control_value_int64(buf,"hdr_size",&hdr_size, false))
11331133
file->hdr_size= (int)hdr_size;
11341134

1135+
if (file->external_dir_num==0)
1136+
set_forkname(file);
1137+
11351138
parray_append(files,file);
11361139
}
11371140

@@ -2488,7 +2491,7 @@ write_backup_filelist(pgBackup *backup, parray *files, const char *root,
24882491
charcontrol_path[MAXPGPATH];
24892492
charcontrol_path_temp[MAXPGPATH];
24902493
size_ti=0;
2491-
#defineBUFFERSZ 1024*1024
2494+
#defineBUFFERSZ(1024*1024)
24922495
char*buf;
24932496
int64backup_size_on_disk=0;
24942497
int64uncompressed_size_on_disk=0;

‎src/dir.c‎

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -758,57 +758,22 @@ dir_check_file(pgFile *file, bool backup_logs)
758758
returnCHECK_FALSE;
759759
elseif (isdigit(file->name[0]))
760760
{
761-
char*fork_name;
762-
intlen;
763-
charsuffix[MAXPGPATH];
761+
set_forkname(file);
764762

765-
fork_name=strstr(file->name,"_");
766-
if (fork_name)
767-
{
768-
/* Auxiliary fork of the relfile */
769-
if (strcmp(fork_name,"_vm")==0)
770-
file->forkName=vm;
771-
772-
elseif (strcmp(fork_name,"_fsm")==0)
773-
file->forkName=fsm;
774-
775-
elseif (strcmp(fork_name,"_cfm")==0)
776-
file->forkName=cfm;
777-
778-
elseif (strcmp(fork_name,"_ptrack")==0)
779-
file->forkName=ptrack;
780-
781-
elseif (strcmp(fork_name,"_init")==0)
782-
file->forkName=init;
783-
784-
// extract relOid for certain forks
785-
if (file->forkName==vm||
786-
file->forkName==fsm||
787-
file->forkName==init||
788-
file->forkName==cfm)
789-
{
790-
// sanity
791-
if (sscanf(file->name,"%u_*",&(file->relOid))!=1)
792-
file->relOid=0;
793-
}
763+
if (file->forkName==ptrack)/* Compatibility with left-overs from ptrack1 */
764+
returnCHECK_FALSE;
765+
elseif (file->forkName!=none)
766+
returnCHECK_TRUE;
794767

795-
/* Do not backup ptrack files */
796-
if (file->forkName==ptrack)
797-
returnCHECK_FALSE;
798-
}
799-
else
768+
/* Set is_datafile flag */
800769
{
770+
charsuffix[MAXFNAMELEN];
801771

802-
len=strlen(file->name);
803-
/* reloid.cfm */
804-
if (len>3&&strcmp(file->name+len-3,"cfm")==0)
805-
returnCHECK_TRUE;
806-
772+
/* check if file is datafile */
807773
sscanf_res=sscanf(file->name,"%u.%d.%s",&(file->relOid),
808774
&(file->segno),suffix);
809-
if (sscanf_res==0)
810-
elog(ERROR,"Cannot parse file name \"%s\"",file->name);
811-
elseif (sscanf_res==1||sscanf_res==2)
775+
Assert(sscanf_res>0);/* since first char is digit */
776+
if (sscanf_res==1||sscanf_res==2)
812777
file->is_datafile= true;
813778
}
814779
}
@@ -1954,3 +1919,35 @@ pfilearray_clear_locks(parray *file_list)
19541919
pg_atomic_clear_flag(&file->lock);
19551920
}
19561921
}
1922+
1923+
/* Set forkName if possible */
1924+
void
1925+
set_forkname(pgFile*file)
1926+
{
1927+
intname_len=strlen(file->name);
1928+
1929+
/* Auxiliary fork of the relfile */
1930+
if (name_len>3&&strcmp(file->name+name_len-3,"_vm")==0)
1931+
file->forkName=vm;
1932+
1933+
elseif (name_len>4&&strcmp(file->name+name_len-4,"_fsm")==0)
1934+
file->forkName=fsm;
1935+
1936+
elseif (name_len>4&&strcmp(file->name+name_len-4,".cfm")==0)
1937+
file->forkName=cfm;
1938+
1939+
elseif (name_len>5&&strcmp(file->name+name_len-5,"_init")==0)
1940+
file->forkName=init;
1941+
1942+
elseif (name_len>7&&strcmp(file->name+name_len-7,"_ptrack")==0)
1943+
file->forkName=ptrack;
1944+
1945+
// extract relOid for certain forks
1946+
1947+
if ((file->forkName==vm||
1948+
file->forkName==fsm||
1949+
file->forkName==init||
1950+
file->forkName==cfm)&&
1951+
(sscanf(file->name,"%u*",&(file->relOid))!=1))
1952+
file->relOid=0;
1953+
}

‎src/pg_probackup.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ typedef enum CompressAlg
215215

216216
typedefenumForkName
217217
{
218+
none,
218219
vm,
219220
fsm,
220221
cfm,
@@ -1091,6 +1092,7 @@ extern int pgCompareString(const void *str1, const void *str2);
10911092
externintpgPrefixCompareString(constvoid*str1,constvoid*str2);
10921093
externintpgCompareOid(constvoid*f1,constvoid*f2);
10931094
externvoidpfilearray_clear_locks(parray*file_list);
1095+
externvoidset_forkname(pgFile*file);
10941096

10951097
/* in data.c */
10961098
externboolcheck_data_file(ConnectionArgs*arguments,pgFile*file,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp