diff --git a/pgxn/neon/pagestore_smgr.c b/pgxn/neon/pagestore_smgr.c index cc1bf384cb..f17bc2aad2 100644 --- a/pgxn/neon/pagestore_smgr.c +++ b/pgxn/neon/pagestore_smgr.c @@ -748,11 +748,6 @@ neon_exists(SMgrRelation reln, ForkNumber forkNum) neon_log(ERROR, "unknown relpersistence '%c'", reln->smgr_relpersistence); } - if (get_cached_relsize(InfoFromSMgrRel(reln), forkNum, &n_blocks)) - { - return true; - } - /* * \d+ on a view calls smgrexists with 0/0/0 relfilenode. The page server * will error out if you check that, because the whole dbdir for @@ -780,6 +775,11 @@ neon_exists(SMgrRelation reln, ForkNumber forkNum) return communicator_new_rel_exists(InfoFromSMgrRel(reln), forkNum); else { + if (get_cached_relsize(InfoFromSMgrRel(reln), forkNum, &n_blocks)) + { + return true; + } + neon_get_request_lsns(InfoFromSMgrRel(reln), forkNum, REL_METADATA_PSEUDO_BLOCKNO, &request_lsns, 1); @@ -2216,8 +2216,12 @@ neon_end_unlogged_build(SMgrRelation reln) RelFileInfoFmt(InfoFromNInfoB(rinfob)), forknum); - forget_cached_relsize(InfoFromNInfoB(rinfob), forknum); - lfc_invalidate(InfoFromNInfoB(rinfob), forknum, nblocks); + // FIXME: also do this with the new communicator + if (!neon_enable_new_communicator) + { + forget_cached_relsize(InfoFromNInfoB(rinfob), forknum); + lfc_invalidate(InfoFromNInfoB(rinfob), forknum, nblocks); + } mdclose(reln, forknum); #ifndef DEBUG_COMPARE_LOCAL diff --git a/pgxn/neon/relsize_cache.c b/pgxn/neon/relsize_cache.c index 60ca1675d9..4ea303f996 100644 --- a/pgxn/neon/relsize_cache.c +++ b/pgxn/neon/relsize_cache.c @@ -10,6 +10,7 @@ */ #include "postgres.h" +#include "neon.h" #include "neon_pgversioncompat.h" #include "pagestore_client.h" @@ -99,6 +100,8 @@ get_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber *size) { bool found = false; + Assert(!neon_enable_new_communicator); + if (relsize_hash_size > 0) { RelTag tag; @@ -130,6 +133,8 @@ get_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber *size) void set_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber size) { + Assert(!neon_enable_new_communicator); + if (relsize_hash_size > 0) { RelTag tag; @@ -178,6 +183,8 @@ set_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber size) void update_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber size) { + Assert(!neon_enable_new_communicator); + if (relsize_hash_size > 0) { RelTag tag; @@ -212,6 +219,8 @@ update_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum, BlockNumber size) void forget_cached_relsize(NRelFileInfo rinfo, ForkNumber forknum) { + Assert(!neon_enable_new_communicator); + if (relsize_hash_size > 0) { RelTag tag;