From 6d694f29837c306102d69f71611d918d1dc0940b Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Thu, 6 Jun 2024 09:56:28 +0300 Subject: [PATCH] Fix unlogged_extend --- pgxn/neon/pagestore_smgr.c | 7 +++++-- test_runner/fixtures/neon_fixtures.py | 12 +++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pgxn/neon/pagestore_smgr.c b/pgxn/neon/pagestore_smgr.c index 9914e13b5d..8df544c581 100644 --- a/pgxn/neon/pagestore_smgr.c +++ b/pgxn/neon/pagestore_smgr.c @@ -1396,11 +1396,14 @@ PageIsEmptyHeapPage(char *buffer) static void unlogged_extend(SMgrRelation reln, ForkNumber forknum, BlockNumber old_relsize, BlockNumber new_relsize) { + if (new_relsize > old_relsize) + { #if PG_MAJORVERSION_NUM < 16 - mdextend(reln, forknum, new_relsize, (char *) zero_buffer.data, true); + mdextend(reln, forknum, new_relsize, (char *) zero_buffer.data, true); #else - mdzeroextend(reln, forknum, old_relsize, new_relsize - old_relsize, true); + mdzeroextend(reln, forknum, old_relsize, new_relsize - old_relsize, true); #endif + } } diff --git a/test_runner/fixtures/neon_fixtures.py b/test_runner/fixtures/neon_fixtures.py index 6696197e45..33a26b4984 100644 --- a/test_runner/fixtures/neon_fixtures.py +++ b/test_runner/fixtures/neon_fixtures.py @@ -4305,10 +4305,20 @@ def check_restored_datadir_content( if pgdata_files != restored_files: # filter pg_xact and multixact files which are downloaded on demand + # also filter files with zero size which can remain after aborted unlogged build pgdata_files = [ f for f in pgdata_files - if not f.startswith("pg_xact") and not f.startswith("pg_multixact") + if f in restored_files + or ( + not f.startswith("pg_xact") + and not f.startswith("pg_multixact") + and f != "./pg_dynshmem" + and ( + not Path(os.path.join(endpoint.pgdata_dir, f)).exists() + or os.path.getsize(os.path.join(endpoint.pgdata_dir, f)) != 0 + ) + ) ] if ignored_files: