Re: BUG #18297: Error when adding a column to a parent table with complex inheritance
Tender Wang <tndrwang@gmail.com>
From: Tender Wang <tndrwang@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: Richard Guo <guofenglinux@gmail.com>, pgsql-bugs@lists.postgresql.org
Date: 2024-01-23T03:19:57Z
Lists: 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/
Commits
-
Fix ALTER TABLE .. ADD COLUMN with complex inheritance trees
- 2f724283719e 12.18 landed
- bfec14d06de8 13.14 landed
- 5a7833f49679 14.11 landed
- ad6fbbeeb07a 15.6 landed
- 51193e7a7d33 16.2 landed
- bb812ab0917e 17.0 landed