Re: redundant check of msg in does_not_exist_skipping
От | Japin Li |
---|---|
Тема | Re: redundant check of msg in does_not_exist_skipping |
Дата | |
Msg-id | MEYP282MB1669B2020AAC59DBA6ACA9F1B6069@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM обсуждение исходный текст |
Ответ на | Re: redundant check of msg in does_not_exist_skipping (Japin Li <japinli@hotmail.com>) |
Ответы |
Re: redundant check of msg in does_not_exist_skipping
|
Список | pgsql-hackers |
On Thu, 17 Nov 2022 at 23:06, Japin Li <japinli@hotmail.com> wrote: > On Thu, 17 Nov 2022 at 20:12, Ted Yu <yuzhihong@gmail.com> wrote: >> Hi, >> I was looking at commit aca992040951c7665f1701cd25d48808eda7a809 >> >> I think the check of msg after the switch statement is not necessary. The >> variable msg is used afterward. >> If there is (potential) missing case in switch statement, the compiler >> would warn. >> >> How about removing the check ? >> > > I think we cannot remove the check, for example, if objtype is OBJECT_OPFAMILY, > and schema_does_not_exist_skipping() returns true, the so the msg keeps NULL, > if we remove this check, a sigfault might be occurd in ereport(). > > case OBJECT_OPFAMILY: > { > List *opfname = list_copy_tail(castNode(List, object), 1); > > if (!schema_does_not_exist_skipping(opfname, &msg, &name)) > { > msg = gettext_noop("operator family \"%s\" does not exist for access method \"%s\", skipping"); > name = NameListToString(opfname); > args = strVal(linitial(castNode(List, object))); > } > } > break; Sorry, I didn't look into schema_does_not_exist_skipping(), and after look into schema_does_not_exist_skipping function and others, all paths that go out switch branch has non-NULL for msg, so we can remove this check safely. -- Regrads, Japin Li. ChengDu WenWu Information Technology Co.,Ltd.
В списке pgsql-hackers по дате отправления: