Skip to content

[Bug] GIN index creation fails on AO (Append-Optimized) and PAX tables with internal error (assert.c:48) #1493

@deniskendk146

Description

@deniskendk146

Apache Cloudberry version

PostgreSQL 14.4 (Apache Cloudberry 2.0.0-incubating build dev) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14.astra4+deb12u1) 12.2.0, 64-bit compiled on Dec 9 2025 14:23:53 (with assert checking)

What happened

Hello!
GIN indexes cannot be created on AO (Append-Optimized) and PAX tables. The operation fails with the following error:
2025-12-13 12:17:35.354429 MSK,"gpadmin","cbdev",p6569,th180242880,"10.0.0.84","52684",2025-12-13 12:16:40 MSK,154664,con320,cmd1,seg1,,dx335992,x154664,sx1,"FATAL","XX000","Unexpected internal error (assert.c:48)","FailedAssertion(""OffsetNumberIsValid(ItemPointerGetOffsetNumber(&segment->first))"", File: ""ginpostinglist.c"", Line: 338)",,,,,"create INDEX ix_test_gin_table ON public.test_gin_table USING gin(text_field gin_trgm_ops)",0,,"assert.c",48,"Stack trace:
1 0x73a60d2546c3 libpostgres.so errstart + 0x226
2 0x73a60d254910 libpostgres.so errstart_cold + 0x9
3 0x73a60d24dedc libpostgres.so ExceptionalCondition + 0x87
4 0x73a60cc34ea8 libpostgres.so ginPostingListDecodeAllSegments + 0xc2
5 0x73a60cc351b8 libpostgres.so ginPostingListDecode + 0x1b
6 0x73a60cc353e8 libpostgres.so ginCompressPostingList + 0x22b
7 0x73a60cc33f2a libpostgres.so ginEntryInsert + 0x403
8 0x73a60cc345ba libpostgres.so ginbuild + 0x317
9 0x73a60cd52e46 libpostgres.so index_build + 0x461
10 0x73a60cd5553a libpostgres.so index_create_internal + 0x1800
11 0x73a60cd55628 libpostgres.so index_create + 0xe9
12 0x73a60ce34e32 libpostgres.so DefineIndex + 0x1a95
13 0x73a60d105aae libpostgres.so + 0xd105aae
14 0x73a60d1047a0 libpostgres.so standard_ProcessUtility + 0xf92
15 0x73a6082026a2 pax.so + 0x82026a2
16 0x73a60d104aed libpostgres.so ProcessUtility + 0xfc
17 0x73a60d101749 libpostgres.so + 0xd101749
18 0x73a60d1018ea libpostgres.so + 0xd1018ea
19 0x73a60d101f5b libpostgres.so PortalRun + 0x1b8
20 0x73a60d0fb36d libpostgres.so + 0xd0fb36d
21 0x73a60d0fdb54 libpostgres.so PostgresMain + 0x1362
22 0x73a60d04d6af libpostgres.so + 0xd04d6af
23 0x73a60d04f259 libpostgres.so PostmasterMain + 0x16f5
24 0x56595ca989bc postgres main + 0x619
25 0x73a60c44624a libc.so.6 + 0xc44624a
26 0x73a60c446305 libc.so.6 __libc_start_main + 0x85
27 0x56595ca98261 postgres _start + 0x21

The same operation works correctly on HEAP tables.

What you think should happen instead

GIN index should be created successfully on AO/PAX tables.

How to reproduce

create extension pg_trgm;

create table public.test_gin_table(id bigint, text_field text)
USING ao_column
WITH (
compresstype=zstd,
compresslevel=1,
blocksize=32768,
checksum=true
)
distributed by (id)
;

insert into public.test_gin_table
(id,text_field)
select
row_number() over(),
attname
from pg_attribute

create INDEX ix_test_gin_table ON public.test_gin_table USING gin(text_field gin_trgm_ops);

Operating System

Debian 12.2.0

Anything else

Every time

Are you willing to submit PR?

  • Yes, I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions