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

Commit457e062

Browse files
committed
Merge branch 'REL_2_5'
2 parents7b62d11 +4505def commit457e062

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

‎src/dir.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1786,13 +1786,16 @@ is_forkname(char *name, size_t *pos, const char *forkname)
17861786
}
17871787

17881788
#defineOIDCHARS 10
1789+
#defineMAXSEGNO (((uint64_t)1<<32)/RELSEG_SIZE-1)
1790+
#defineSEGNOCHARS 5/* when BLCKSZ == (1<<15) */
17891791

17901792
/* Set forkName if possible */
17911793
bool
17921794
set_forkname(pgFile*file)
17931795
{
17941796
size_ti=0;
17951797
uint64_toid=0;/* use 64bit to not check for overflow in a loop */
1798+
uint64_tsegno=0;
17961799

17971800
/* pretend it is not relation file */
17981801
file->relOid=0;
@@ -1823,8 +1826,15 @@ set_forkname(pgFile *file)
18231826
/* /^\d+(_(vm|fsm|init|ptrack))?\.\d+$/ */
18241827
if (file->name[i]=='.'&&isdigit(file->name[i+1]))
18251828
{
1829+
size_tstart=i+1;
18261830
for (i++;isdigit(file->name[i]);i++)
1827-
;
1831+
{
1832+
if (i==start&&file->name[i]=='0')
1833+
return false;
1834+
segno=segno*10+file->name[i]-'0';
1835+
}
1836+
if (i-start>SEGNOCHARS||segno>MAXSEGNO)
1837+
return false;
18281838
}
18291839

18301840
/* CFS "fork name" */
@@ -1843,6 +1853,7 @@ set_forkname(pgFile *file)
18431853
}
18441854

18451855
file->relOid=oid;
1856+
file->segno=segno;
18461857
file->is_datafile=file->forkName==none;
18471858
return true;
18481859
}

‎tests/backup.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,38 @@
1313

1414
classBackupTest(ProbackupTest,unittest.TestCase):
1515

16+
deftest_basic_full_backup(self):
17+
"""
18+
Just test full backup with at least two segments
19+
"""
20+
fname=self.id().split('.')[3]
21+
node=self.make_simple_node(
22+
base_dir=os.path.join(module_name,fname,'node'),
23+
initdb_params=['--data-checksums'],
24+
# we need to write a lot. Lets speedup a bit.
25+
pg_options={"fsync":"off","synchronous_commit":"off"})
26+
27+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
28+
self.init_pb(backup_dir)
29+
self.add_instance(backup_dir,'node',node)
30+
self.set_archiving(backup_dir,'node',node)
31+
node.slow_start()
32+
33+
# Fill with data
34+
# Have to use scale=100 to create second segment.
35+
node.pgbench_init(scale=100,no_vacuum=True)
36+
37+
# FULL
38+
backup_id=self.backup_node(backup_dir,'node',node)
39+
40+
out=self.validate_pb(backup_dir,'node',backup_id)
41+
self.assertIn(
42+
"INFO: Backup {0} is valid".format(backup_id),
43+
out)
44+
45+
# Clean after yourself
46+
self.del_test_dir(module_name,fname)
47+
1648
# @unittest.skip("skip")
1749
# @unittest.expectedFailure
1850
# PGPRO-707

‎tests/ptrack.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
classPtrackTest(ProbackupTest,unittest.TestCase):
1717
defsetUp(self):
1818
ifself.pg_config_version<self.version_to_num('11.0'):
19-
returnunittest.skip('You need PostgreSQL >= 11 for this test')
19+
self.skipTest('You need PostgreSQL >= 11 for this test')
2020
self.fname=self.id().split('.')[3]
2121

2222
# @unittest.skip("skip")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp