Re: = TRUE vs IS TRUE confuses partition index creation

Поиск
Список
Период
Сортировка
От Richard Guo
Тема Re: = TRUE vs IS TRUE confuses partition index creation
Дата
Msg-id CAMbWs4--MS+KzwbyR+4hM1tP_gzBA-aCr-4k1-4v=+ONLMWwTQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: = TRUE vs IS TRUE confuses partition index creation  (Richard Guo <guofenglinux@gmail.com>)
Ответы Re: = TRUE vs IS TRUE confuses partition index creation  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs

On Wed, Aug 17, 2022 at 12:27 PM Richard Guo <guofenglinux@gmail.com> wrote:

On Wed, Aug 17, 2022 at 5:57 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
IIRC, "b = true" will be simplified to just "b" somewhere in expression
preprocessing.  I'm betting that something in the partitioned index
matching code is applying that preprocessing to one index predicate and
not the other, whereupon they look different.  If that's the explanation,
there are likely other cases that should match and fail to.
 
Yeah, you're right. The matching work happens in indexcmds.c, using
CompareIndexInfo to compare 'cldIdxInfo' and 'indexInfo'. The
'cldIdxInfo' is constructed with BuildIndexInfo, which would run index
expressions and index predicates through const-simplification before
creating the IndexInfo node. While 'indexInfo' is created without any
const-simplification.

This can be verified with the attached changes, which would make it work
for this case.
 
BTW, I searched other callers of CompareIndexInfo and they all have both
IndexInfo nodes to be compared constructed from BuildIndexInfo, which
means both nodes have applied const-simplification to their index
expressions and index predicates. So those callers are fine.

Thanks
Richard

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

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: No-op updates with partitioning and logical replication started failing in version 13
Следующее
От: Masahiko Sawada
Дата:
Сообщение: Re: Excessive number of replication slots for 12->14 logical replication