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

From Peter Smith
Subject Re: [WIP]Vertical Clustered Index (columnar store extension) - take2
Date
Msg-id CAHut+PsKM=29-KYS4fdQCZB7S9sHi0AYHCB4S8a_C827kJwcgw@mail.gmail.com
Whole thread Raw
In response to Re: [WIP]Vertical Clustered Index (columnar store extension) - take2  (Japin Li <japinli@hotmail.com>)
List pgsql-hackers
On Thu, Jul 10, 2025 at 4:07 PM Japin Li <japinli@hotmail.com> wrote:
...
> 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
>

Thanks for reporting this. We will look into it as soon as we can.

> 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?

Right, this had previously also been reported by Tomas [1].

Upon investigation, I found that this was master code from 10 years
ago (back when this VCI patch was implemented). The master code has
moved on since then and removed this macro [2], but this VCI patch did
not...

I'll try to address this for the next patchset.

======
[1] https://www.postgresql.org/message-id/a748aa6b-c7e6-4d02-a590-ab404d590448%40vondra.me
[2] https://github.com/postgres/postgres/commit/8023b5827fbada6815ce269db4f3373ac77ec7c3

Kind Regards,
Peter Smith.
Fujitsu Australia



pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: Adding support for SSLKEYLOGFILE in the frontend
Next
From: Frédéric Yhuel
Date:
Subject: Re: [doc] minor fix for CREATE INDEX CONCURRENTLY