Re: BUG #18244: Corruption in indexes involving whole-row expressions

Поиск
Список
Период
Сортировка
От Laurenz Albe
Тема Re: BUG #18244: Corruption in indexes involving whole-row expressions
Дата
Msg-id c37d4184c476a15ad4c488d272bdc95ea7b0ff49.camel@cybertec.at
обсуждение исходный текст
Ответ на Re: BUG #18244: Corruption in indexes involving whole-row expressions  (Thomas Munro <thomas.munro@gmail.com>)
Ответы Re: BUG #18244: Corruption in indexes involving whole-row expressions  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Wed, 2023-12-13 at 14:38 +1300, Thomas Munro wrote:
> On Wed, Dec 13, 2023 at 11:53 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> > On Tue, 2023-12-12 at 19:28 +0000, PG Bug reporting form wrote:
> > > nik=# create index on t1 (hash_record(t1));
> > >
> > > Such an index can easily be corrupted, e.g.:
> > >
> > > nik=#  alter table t1 add column yo int default -1;
> > >
> > > Proposal: prohibit the use of whole-row expression – as it is already done
> > > for generated columns and produce a similar error ("cannot use whole-row
> > > variable in column generation expression")
> >
> > I reported that bug before:
> > https://www.postgresql.org/message-id/flat/e48a5d9a2d3d72985d61ee254314f5f5f5444a55.camel%40cybertec.at
>
> FTR I also posted a repro for another variation of that problem.  I
> think it's slightly more general that, it not just whole-row
> expressions (eg index on <table_name>), it's row types generally:
>
> https://www.postgresql.org/message-id/CA%2BhUKGKb4SB%2BqQ-vAVomxAvJY6um%2B5URyq2D0vv10g7mbYZ1Ww%40mail.gmail.com

Yes, and that makes it difficult to decide on the correct path.

Should we check all places where the type is used before allowing
ALTER TYPE?  Sounds complicated and error-prone.

Should we forbid composite types in index declarations?  Sounds posssible,
but very restrictive.  We might as well forbid composite types in table
definitions.  That would be a good thing in my opinion, but it would cause
a compatibility headache.

Perhaps the best thing would be to add a warning to chapter 8.16.4 that
it is "best practice" (and conforming to the first normal form) not to
use composite types in column definitions, and that altering a composite
type used in a table definition can lead to consistency problems.

Yours,
Laurenz Albe



В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #18245: pg_restore accepts same output file name as input file name
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #18244: Corruption in indexes involving whole-row expressions