From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Christophe Pettus <xof(at)thebuild(dot)com>, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
Subject: | Re: = TRUE vs IS TRUE confuses partition index creation |
Date: | 2022-08-17 07:16:00 |
Message-ID: | CAMbWs4--MS+KzwbyR+4hM1tP_gzBA-aCr-4k1-4v=+ONLMWwTQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Wed, Aug 17, 2022 at 12:27 PM Richard Guo <guofenglinux(at)gmail(dot)com> wrote:
>
> On Wed, Aug 17, 2022 at 5:57 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Masahiko Sawada | 2022-08-17 08:06:26 | Re: Excessive number of replication slots for 12->14 logical replication |
Previous Message | Amit Kapila | 2022-08-17 06:40:01 | Re: No-op updates with partitioning and logical replication started failing in version 13 |