Re: BUG #18297: Error when adding a column to a parent table with complex inheritance

Поиск
Список
Период
Сортировка
От Tender Wang
Тема Re: BUG #18297: Error when adding a column to a parent table with complex inheritance
Дата
Msg-id CAHewXNkf7Th5-5F_fgWcAb88jOJx=K03J=P17cLjfEMM2BQahA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #18297: Error when adding a column to a parent table with complex inheritance  (Alexander Lakhin <exclusion@gmail.com>)
Ответы Re: BUG #18297: Error when adding a column to a parent table with complex inheritance  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-bugs


Alexander Lakhin <exclusion@gmail.com> 于2024年1月23日周二 01:00写道:
Hi,

22.01.2024 13:36, Tender Wang wrote:

Yes, I've encountered a similar issue, this time with ALTER (TEXT SEARCH
CONFIGURATION):
CREATE TEXT SEARCH CONFIGURATION ispell_tst (COPY=english);
CREATE TEXT SEARCH DICTIONARY ispell (Template=ispell, DictFile=ispell_sample, AffFile=ispell_sample);
ALTER TEXT SEARCH CONFIGURATION ispell_tst ALTER MAPPING FOR word, word WITH ispell;
ERROR:  tuple already updated by self

Yes, this is another issue that DDL operation on an same object twice. Maybe we can report error on Parse phase.
But as you say, all the other DDL commands run OK, so maybe it's better to process this case in execution phase.
I will send a patch later.

Thank you for working on this!

As these two cases look like exceptions to the common behavior, I wonder
whether we need some extra functions to deal with duplicates.
(I haven't look yet how such duplicates processed for other object types.)

For example,  drop extension pageinspect ,pageinspect;
The duplicates will be done in object_address_present_add_flags(), some codes as below:
....
  if (object->classId == thisobj->classId &&
object->objectId == thisobj->objectId)
{
if (object->objectSubId == thisobj->objectSubId)
{
ObjectAddressExtra *thisextra = addrs->extras + i;

thisextra->flags |= flags;
result = true;
}
....
The object will not be added to targetObjects if above func returned true.

Your reported two issues have different code path, and duplicates do not processed.

I am considering whether there is a unified way of handling this, otherwise each one will have to be dealt with separately.
 

And I'm just curious that how do you find these issues? Use some tools?
 

I discovered these two issues with my kind of fuzzer, just watching out
for the interesting errors.

Best regards,
Alexander

--
Tender Wang
OpenPie:  https://en.openpie.com/

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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: MarkBufferDirty Assert held LW_EXCLUSIVE lock fail when ginFinishSplit
Следующее
От: feichanghong
Дата:
Сообщение: Re: MarkBufferDirty Assert held LW_EXCLUSIVE lock fail when ginFinishSplit