pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Alexander Lakhin <exclusion@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jonathan S. Katz <jkatz@postgresql.org>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Cc: Michael Paquier <michael@paquier.xyz>
Subject: Re: Large expressions in indexes can't be stored (non-TOASTable)
Date: Fri, 20 Sep 2024 07:00:00 +0300
Message-ID: <adb7421f-eaf4-878a-6742-576fc6bf0d8f@gmail.com> (raw)
In-Reply-To: <ZuxvNDVfqpahqZNb@nathan>
References: <b611015f-b423-458c-aa2d-be0e655cc1b4@postgresql.org>
	<ZtipsVMZAGjrO1p_@nathan>
	<1679756.1725476893@sss.pgh.pa.us>
	<c500a379-7a20-4ab4-bcc9-5ea9aabe017a@postgresql.org>
	<ZuroEfWjxd4Zj6Yq@nathan>
	<1812111.1726671296@sss.pgh.pa.us>
	<ZusvlZBrPKm913LA@nathan>
	<a97d7401-e7c9-f771-6a00-037379f0a8bb@gmail.com>
	<ZuxvNDVfqpahqZNb@nathan>

Hello Nathan,

19.09.2024 21:36, Nathan Bossart wrote:
> On Thu, Sep 19, 2024 at 12:00:00PM +0300, Alexander Lakhin wrote:
>> completed with:
>> DROP INDEX CONCURRENTLY def_vec_quantizer_idx;
>>
>> triggers an assertion failure:
>> TRAP: failed Assert("HaveRegisteredOrActiveSnapshot()"), File: "toast_internals.c", Line: 668, PID: 3723372
> Ha, that was fast.  The attached patch seems to fix the assertion failures.
> It's probably worth checking if any of the adjacent code paths are
> affected, too.
>

Thank you for your attention to that issue!

I've found another two paths to reach that condition:
CREATE INDEX CONCURRENTLY ON def (vec_quantizer(id, :'b'));
ERROR:  cannot fetch toast data without an active snapshot

REINDEX INDEX CONCURRENTLY def_vec_quantizer_idx;
(or REINDEX TABLE CONCURRENTLY def;)
TRAP: failed Assert("HaveRegisteredOrActiveSnapshot()"), File: "toast_internals.c", Line: 668, PID: 2934502
ExceptionalCondition at assert.c:52:13
init_toast_snapshot at toast_internals.c:670:2
toast_delete_datum at toast_internals.c:429:60
toast_tuple_cleanup at toast_helper.c:303:30
heap_toast_insert_or_update at heaptoast.c:335:9
heap_update at heapam.c:3752:14
simple_heap_update at heapam.c:4210:11
CatalogTupleUpdate at indexing.c:324:2
index_concurrently_swap at index.c:1649:2
ReindexRelationConcurrently at indexcmds.c:4270:3
ReindexIndex at indexcmds.c:2962:1
ExecReindex at indexcmds.c:2884:4
ProcessUtilitySlow at utility.c:1570:22
...

Perhaps it would make sense to check all CatalogTupleUpdate(pg_index, ...)
calls (I've found 10 such instances, but haven't checked them yet).

Best regards,
Alexander





view thread (62+ messages)  latest in thread

Message-ID: <adb7421f-eaf4-878a-6742-576fc6bf0d8f@gmail.com>
Permalink:  ../adb7421f-eaf4-878a-6742-576fc6bf0d8f@gmail.com/
Also on:    postgresql.org/message-id/adb7421f-eaf4-878a-6742-576fc6bf0d8f@gmail.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: exclusion@gmail.com, nathandbossart@gmail.com, tgl@sss.pgh.pa.us, jkatz@postgresql.org, pgsql-hackers@lists.postgresql.org, michael@paquier.xyz
  Subject: Re: Large expressions in indexes can't be stored (non-TOASTable)
  In-Reply-To: <adb7421f-eaf4-878a-6742-576fc6bf0d8f@gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox