Re: [BUG] false positive in bt_index_check in case of short 4B varlena datum
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: "Andrey M. Borodin" <x4mmm@yandex-team.ru>,
Michael Zhilin <m.zhilin@postgrespro.ru>, pgsql-bugs@postgresql.org, Yura Sokolov <y.sokolov@postgrespro.ru>
Date: 2024-03-20T10:24:55Z
Lists: pgsql-bugs
Hi!
On Fri, Jan 26, 2024 at 9:00 AM Alexander Lakhin <exclusion@gmail.com> wrote:
>
> 23.01.2024 21:09, Andrey M. Borodin wrote:
> > PFA draft fixes for both this errors. Alexander, Michael, Jian, what do you think?
> >
> > I did not touch anything in first step - fix for original bug in this thread. However, I think that comments from Jian He worth incorporating into the fix.
> >
>
> I''m confused by a NOTICE added, as it printed now even for cases, which
> worked before, for example:
> CREATE TABLE t(f1 text);
> CREATE INDEX idx ON t(f1);
> INSERT INTO t VALUES(repeat('1234567890', 1000));
> SELECT bt_index_check('idx', true);
> NOTICE: Index contain tuples that cannot fit into index page, if toasted with current toast policy
> bt_index_check
> ----------------
>
> (1 row)
Right, the patch number 0003 looks wrong to me. It uses
heap_compute_data_size() to compute the size of the future index
tuple. But heap_compute_data_size() doesn't apply any compression on
the attributes. I suggest instead we just need to have a version of
index_form_tuple() that reports an oversized tuple in a return value
rather than throwing the error.
BTW, 0001 and 0002 look good to me. I'm going to push them if no objections.
------
Regards,
Alexander Korotkov
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
amcheck: Use correct varlena size accessor in bt_normalize_tuple()
- 4284476c0f67 15 (unreleased) landed
- c89a1ca01344 16 (unreleased) landed
- 8abb8a1555f4 17 (unreleased) landed
- af09b18cbadb 14 (unreleased) landed
- 897e79486296 18 (unreleased) landed
- da1eff08a5be 19 (unreleased) landed