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
|
Список | 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 selfYes, 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;
}
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
В списке pgsql-bugs по дате отправления: