@@ -928,10 +928,13 @@ check_system_identifiers(void)
928
928
"SELECT system_identifier FROM pg_control_system()" ,
929
929
0 , NULL );
930
930
val = PQgetvalue (res , 0 , 0 );
931
- PQclear (res );
932
931
933
932
if (!parse_uint64 (val , & system_id_conn ))
933
+ {
934
+ PQclear (res );
934
935
elog (ERROR , "%s is not system_identifier" , val );
936
+ }
937
+ PQclear (res );
935
938
936
939
if (system_id_conn != system_identifier )
937
940
elog (ERROR , "Backup data directory was initialized for system id %ld, but connected instance system id is %ld" ,
@@ -1204,10 +1207,11 @@ pg_ptrack_clear(void)
1204
1207
static bool
1205
1208
pg_ptrack_get_and_clear_db (Oid dbOid , Oid tblspcOid )
1206
1209
{
1207
- char * params [2 ];
1208
- PGresult * res_db ;
1209
- PGresult * res ;
1210
- char * result ;
1210
+ char * params [2 ];
1211
+ char * dbname ;
1212
+ PGresult * res_db ;
1213
+ PGresult * res ;
1214
+ char * result ;
1211
1215
1212
1216
params [0 ] = palloc (64 );
1213
1217
params [1 ] = palloc (64 );
@@ -1223,15 +1227,15 @@ pg_ptrack_get_and_clear_db(Oid dbOid, Oid tblspcOid)
1223
1227
if (PQntuples (res_db ) != 1 || PQnfields (res_db ) != 1 )
1224
1228
return false;
1225
1229
1226
- dbname = pstrdup (PQgetvalue (res_db , 0 , 0 ));
1227
- PQclear (res_db );
1230
+ dbname = PQgetvalue (res_db , 0 , 0 );
1228
1231
1229
1232
/* Always backup all files from template0 database */
1230
1233
if (strcmp (dbname , "template0" ) == 0 )
1231
1234
{
1232
- pfree ( dbname );
1235
+ PQclear ( res_db );
1233
1236
return true;
1234
1237
}
1238
+ PQclear (res_db );
1235
1239
1236
1240
sprintf (params [0 ], "%i" , dbOid );
1237
1241
sprintf (params [1 ], "%i" , tblspcOid );
@@ -1262,16 +1266,17 @@ pg_ptrack_get_and_clear(Oid tablespace_oid, Oid db_oid, Oid rel_filenode,
1262
1266
PGconn * tmp_conn ;
1263
1267
PGresult * res_db ,
1264
1268
* res ;
1265
- char * dbname ;
1266
1269
char * params [2 ];
1267
1270
char * result ;
1268
1271
1269
1272
params [0 ] = palloc (64 );
1270
1273
params [1 ] = palloc (64 );
1271
1274
1272
- /* regular file (not in directory 'global') */
1275
+ /* regular file (not in directory 'global') */
1273
1276
if (db_oid != 0 )
1274
1277
{
1278
+ char * dbname ;
1279
+
1275
1280
sprintf (params [0 ], "%i" , db_oid );
1276
1281
res_db = pgut_execute (backup_conn ,
1277
1282
"SELECT datname FROM pg_database WHERE oid=$1" ,
@@ -1283,12 +1288,11 @@ pg_ptrack_get_and_clear(Oid tablespace_oid, Oid db_oid, Oid rel_filenode,
1283
1288
if (PQntuples (res_db ) != 1 || PQnfields (res_db ) != 1 )
1284
1289
return NULL ;
1285
1290
1286
- dbname = pstrdup (PQgetvalue (res_db , 0 , 0 ));
1287
- PQclear (res_db );
1291
+ dbname = PQgetvalue (res_db , 0 , 0 );
1288
1292
1289
1293
if (strcmp (dbname , "template0" ) == 0 )
1290
1294
{
1291
- pfree ( dbname );
1295
+ PQclear ( res_db );
1292
1296
return NULL ;
1293
1297
}
1294
1298
@@ -1300,10 +1304,9 @@ pg_ptrack_get_and_clear(Oid tablespace_oid, Oid db_oid, Oid rel_filenode,
1300
1304
1301
1305
if (PQnfields (res ) != 1 )
1302
1306
elog (ERROR , "cannot get ptrack file from database \"%s\" by tablespace oid %u and relation oid %u" ,
1303
- dbname , tablespace_oid , rel_filenode );
1304
- pfree ( dbname );
1307
+ dbname , tablespace_oid , rel_filenode );
1308
+ PQclear ( res_db );
1305
1309
pgut_disconnect (tmp_conn );
1306
-
1307
1310
}
1308
1311
/* file in directory 'global' */
1309
1312
else
@@ -1795,17 +1798,19 @@ checkpoint_timeout(void)
1795
1798
1796
1799
res = pgut_execute (backup_conn , "show checkpoint_timeout" , 0 , NULL );
1797
1800
val = PQgetvalue (res , 0 , 0 );
1798
- PQclear (res );
1799
1801
1800
1802
if (!parse_int (val , & val_int , OPTION_UNIT_S , & hintmsg ))
1801
1803
{
1804
+ PQclear (res );
1802
1805
if (hintmsg )
1803
1806
elog (ERROR , "Invalid value of checkout_timeout %s: %s" , val ,
1804
1807
hintmsg );
1805
1808
else
1806
1809
elog (ERROR , "Invalid value of checkout_timeout %s" , val );
1807
1810
}
1808
1811
1812
+ PQclear (res );
1813
+
1809
1814
return val_int ;
1810
1815
}
1811
1816
0 commit comments