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

Commit25b7a70

Browse files
committed
small fixes
1 parent31b7230 commit25b7a70

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

‎src/backup.c

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -783,13 +783,16 @@ do_backup(void)
783783

784784
is_ptrack_support=pg_ptrack_support();
785785

786-
if (!is_ptrack_support)
787-
elog(ERROR,"This PostgreSQL instance does not support ptrack");
788-
else
786+
if (current.backup_mode==BACKUP_MODE_DIFF_PTRACK)
789787
{
790-
is_ptrack_enable=pg_ptrack_enable();
791-
if(!is_ptrack_enable)
792-
elog(ERROR,"Ptrack is disabled");
788+
if (!is_ptrack_support)
789+
elog(ERROR,"This PostgreSQL instance does not support ptrack");
790+
else
791+
{
792+
is_ptrack_enable=pg_ptrack_enable();
793+
if(!is_ptrack_enable)
794+
elog(ERROR,"Ptrack is disabled");
795+
}
793796
}
794797

795798
/* archiving check */
@@ -1180,12 +1183,34 @@ static bool
11801183
pg_ptrack_get_and_clear_db(OiddbOid,OidtblspcOid)
11811184
{
11821185
char*params[2];
1186+
PGresult*res_db;
11831187
PGresult*res;
11841188
char*result;
11851189

11861190
params[0]=palloc(64);
11871191
params[1]=palloc(64);
11881192

1193+
sprintf(params[0],"%i",dbOid);
1194+
res_db=pgut_execute(backup_conn,
1195+
"SELECT datname FROM pg_database WHERE oid=$1",
1196+
1, (constchar**)params);
1197+
/*
1198+
* If database is not found, it's not an error.
1199+
* It could have been deleted since previous backup.
1200+
*/
1201+
if (PQntuples(res_db)!=1||PQnfields(res_db)!=1)
1202+
return false;
1203+
1204+
dbname=pstrdup(PQgetvalue(res_db,0,0));
1205+
PQclear(res_db);
1206+
1207+
/* Always backup all files from template0 database */
1208+
if (strcmp(dbname,"template0")==0)
1209+
{
1210+
pfree(dbname);
1211+
return true;
1212+
}
1213+
11891214
sprintf(params[0],"%i",dbOid);
11901215
sprintf(params[1],"%i",tblspcOid);
11911216
res=pgut_execute(backup_conn,"SELECT pg_ptrack_get_and_clear_db($1, $2)",
@@ -2178,7 +2203,6 @@ make_pagemap_from_ptrack(parray *files)
21782203
OiddbOid_with_ptrack_init=0;
21792204
OidtblspcOid_with_ptrack_init=0;
21802205
boolignore_ptrack_for_db= false;
2181-
boolis_template= false;
21822206

21832207
for (i=0;i<parray_num(files);i++)
21842208
{
@@ -2195,24 +2219,17 @@ make_pagemap_from_ptrack(parray *files)
21952219
{
21962220
char*filename=strrchr(file->path,'/');
21972221
ignore_ptrack_for_db= false;
2198-
is_template= false;
21992222

22002223
Assert(filename!=NULL);
22012224
filename++;
22022225

2203-
/* Always backup all files from template0, template1 databases */
2204-
if((file->dbOid==1)||//dbOid of template1 daatbase
2205-
(file->dbOid==12442))//dbOid of template0 daatbase
2206-
{
2207-
is_template= true;
2208-
}
22092226
/*
22102227
* The function pg_ptrack_get_and_clear_db returns true
22112228
* if there was a ptrack_init file.
22122229
* Also ignore ptrack files for global tablespace,
22132230
* to avoid any possible specific errors.
22142231
*/
2215-
elseif ((file->tblspcOid==GLOBALTABLESPACE_OID)||
2232+
if ((file->tblspcOid==GLOBALTABLESPACE_OID)||
22162233
pg_ptrack_get_and_clear_db(file->dbOid,file->tblspcOid))
22172234
{
22182235
ignore_ptrack_for_db= true;
@@ -2221,7 +2238,7 @@ make_pagemap_from_ptrack(parray *files)
22212238
}
22222239
}
22232240

2224-
if (file->is_datafile&& !is_template)
2241+
if (file->is_datafile)
22252242
{
22262243
/* get ptrack bitmap once for all segments of the file */
22272244
if (file->segno==0)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp