Re: creating gist index on ltree column failed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Tom for your reply. my pg version is 11.8. 

I used "select into" to export some long rows to a new table, then tried to create gist index on it. I got same error as yours.
===
CREATE INDEX order_tree_path_idx_mytbl
    ON mytbl USING gist
    (path);
ERROR:  index row size 7496 exceeds maximum 8152 for index "order_tree_path_idx_mytbl"
===

so it looks like the errors I got might be related with other data in the same table, but I am not sure which rows, there are 12k rows in the table.

regarding as the gist index size limitation 8152 , do you know how to workaround it? if we set the block size from 8k to a large value(32k), will it help?

thank you

James



From: Tom Lane <tgl@xxxxxxxxxxxxx>
Sent: Wednesday, September 23, 2020 10:37
To: jian xu <jamesxu@xxxxxxxxxxx>
Cc: pgsql-admin@xxxxxxxxxxxxxxxxxxxx <pgsql-admin@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: creating gist index on ltree column failed
 
jian xu <jamesxu@xxxxxxxxxxx> writes:
>            I tried to create gist index on a ltree column, first I got error
> ERROR:  stack depth limit exceeded

Hm.  What PG version is this?  If it's up-to-date, can you provide some
sample data that causes such problems?

> one thing I notice is, there are some rows with many levels(more than 1k levels) in the ltree, if I delete those rows, creating gist index works

I tried to reproduce this using just that information, but all I got was

regression=# create table t (f1 ltree);
CREATE TABLE
regression=# create index on t using gist(f1);
CREATE INDEX
regression=# insert into t select ('0.' || (select string_agg(g::text,'.') from generate_series(1,100) g))::ltree;
INSERT 0 1
regression=# insert into t select ('0.' || (select string_agg(g::text,'.') from generate_series(1,1000) g))::ltree;
ERROR:  index row requires 16048 bytes, maximum size is 8191

which is perhaps an annoying limitation, but it's not a bug.

(I'm kind of wondering about the use-case for such long ltrees, anyway.)

                        regards, tom lane

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux