From 35250800312310052353ed138ac388c36d417970 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 1 Feb 2024 22:48:31 +0200 Subject: [PATCH] Fix pgvector 0.6.0 with Neon. (#6571) The previous patch was broken. rd_smgr as not open yet, need to use RelationGetSmgr() to access it. --- patches/pgvector.patch | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/patches/pgvector.patch b/patches/pgvector.patch index c429f272fc..cc1ca2e3a6 100644 --- a/patches/pgvector.patch +++ b/patches/pgvector.patch @@ -1,7 +1,7 @@ -From 5518a806a70e7f40d5054a762ccda7d5e6b0d31c Mon Sep 17 00:00:00 2001 +From de3dd0cd034d2bcc12b456171ce163bdc1f4cb65 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas -Date: Tue, 30 Jan 2024 14:33:00 +0200 -Subject: [PATCH] Make v0.6.0 work with Neon +Date: Thu, 1 Feb 2024 17:42:31 +0200 +Subject: [PATCH 1/1] Make v0.6.0 work with Neon Now that the WAL-logging happens as a separate step at the end of the build, we need a few neon-specific hints to make it work. @@ -10,35 +10,35 @@ build, we need a few neon-specific hints to make it work. 1 file changed, 28 insertions(+) diff --git a/src/hnswbuild.c b/src/hnswbuild.c -index 680789ba9044900eac9321844ee2a808a4a2ed12..41c5b709bcb2367ac8b8c498788ecac4c1148b74 100644 +index 680789b..bfa657a 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -1089,13 +1089,41 @@ BuildIndex(Relation heap, Relation index, IndexInfo *indexInfo, SeedRandom(42); #endif - + +#ifdef NEON_SMGR -+ smgr_start_unlogged_build(index->rd_smgr); ++ smgr_start_unlogged_build(RelationGetSmgr(index)); +#endif + InitBuildState(buildstate, heap, index, indexInfo, forkNum); - + BuildGraph(buildstate, forkNum); - + +#ifdef NEON_SMGR -+ smgr_finish_unlogged_build_phase_1(index->rd_smgr); ++ smgr_finish_unlogged_build_phase_1(RelationGetSmgr(index)); +#endif + if (RelationNeedsWAL(index)) + { log_newpage_range(index, forkNum, 0, RelationGetNumberOfBlocks(index), true); - + +#ifdef NEON_SMGR + { +#if PG_VERSION_NUM >= 160000 -+ RelFileLocator rlocator = index->rd_smgr->smgr_rlocator.locator; ++ RelFileLocator rlocator = RelationGetSmgr(index)->smgr_rlocator.locator; +#else -+ RelFileNode rlocator = index->rd_smgr->smgr_rnode.node; ++ RelFileNode rlocator = RelationGetSmgr(index)->smgr_rnode.node; +#endif + + SetLastWrittenLSNForBlockRange(XactLastRecEnd, rlocator, @@ -49,8 +49,12 @@ index 680789ba9044900eac9321844ee2a808a4a2ed12..41c5b709bcb2367ac8b8c498788ecac4 + } + +#ifdef NEON_SMGR -+ smgr_end_unlogged_build(index->rd_smgr); ++ smgr_end_unlogged_build(RelationGetSmgr(index)); +#endif + FreeBuildState(buildstate); } + +-- +2.39.2 +