Re: [WIP]Vertical Clustered Index (columnar store extension) - take2 - Mailing list pgsql-hackers

From Japin Li
Subject Re: [WIP]Vertical Clustered Index (columnar store extension) - take2
Date
Msg-id ME0P300MB04457E24CA8965F008FB2CDBB648A@ME0P300MB0445.AUSP300.PROD.OUTLOOK.COM
Whole thread Raw
Responses Re: [WIP]Vertical Clustered Index (columnar store extension) - take2
List pgsql-hackers
On Tue, 08 Jul 2025 at 10:11, Peter Smith <smithpb2250@gmail.com> wrote:
> Hi. Here is the latest patch set.
>
> Main differences are:
>
> Patch 0001 (core)
> - removed embedded vci code from autovacuum.c / postinit.c (now these
> are same as master)
>
> Patch 0002 (vci module)
> - a few changes to facilitate the fix to patch 0001
> - removed file vci.lib
>

Hi, Peter

Thanks for updating the patch!

I find another bug when using VCI index as following:

2025-07-10 12:17:15.087 CST [2027312] PANIC:  unexpected index access method call : "vci_beginscan"
2025-07-10 12:17:15.087 CST [2027312] STATEMENT:  SELECT * FROM t WHERE id = 100;
2025-07-10 12:17:15.228 CST [2027143] LOG:  client backend (PID 2027312) was terminated by signal 6: Aborted
2025-07-10 12:17:15.228 CST [2027143] DETAIL:  Failed process was running: SELECT * FROM t WHERE id = 100;
2025-07-10 12:17:15.228 CST [2027143] LOG:  terminating any other active server processes
2025-07-10 12:17:15.231 CST [2027143] LOG:  all server processes terminated; reinitializing
2025-07-10 12:17:15.257 CST [2027317] LOG:  database system was interrupted; last known up at 2025-07-10 12:17:07 CST
2025-07-10 12:17:15.333 CST [2027317] LOG:  database system was not properly shut down; automatic recovery in progress
2025-07-10 12:17:15.337 CST [2027317] LOG:  redo starts at 0/01761A18
2025-07-10 12:17:15.491 CST [2027143] LOG:  startup process (PID 2027317) was terminated by signal 11: Segmentation
fault
2025-07-10 12:17:15.491 CST [2027143] LOG:  terminating any other active server processes
2025-07-10 12:17:15.493 CST [2027143] LOG:  shutting down due to startup process failure
2025-07-10 12:17:15.496 CST [2027143] LOG:  database system is shut down

Here are the steps:

rm -rf demo/ 
initdb -D demo
cat <<EOF >demo/postgresql.auto.conf
shared_preload_libraries = 'vci'
max_worker_processes = '20'
EOF

pg_ctl -D demo -l demo.log start

cat <<EOF | psql postgres
CREATE EXTENSION vci;
CREATE TABLE t (id int, info text);
CREATE INDEX t_id_idx ON t USING vci (id);
INSERT INTO t SELECT id, md5(random()::text) FROM generate_series(1, 1000) id;
SET enable_seqscan TO off;
SELECT * FROM t WHERE id = 100;
EOF

I'm still trying to understand the patches.

diff --git a/src/include/storage/itemptr.h b/src/include/storage/itemptr.h
index 74b87a9..d97d1c5 100644
--- a/src/include/storage/itemptr.h
+++ b/src/include/storage/itemptr.h
@@ -46,6 +46,9 @@ typedef struct ItemPointerData
 #endif
 ItemPointerData;

+#define SizeOfIptrData \
+               (offsetof(ItemPointerData, ip_posid) + sizeof(OffsetNumber))
+

I've noticed this macro is currently defined within core; however, I found it only
used in the VCI extension. 

Could you clarify the rationale for its inclusion in the core, and whether it's
genuinely required there, or if it would be better suited within the extension
itself?


-- 
Regards,
Japin Li



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Replace remaining getpwuid() calls with getpwuid_r()?
Next
From: Dilip Kumar
Date:
Subject: Re: A recent message added to pg_upgade