Re: = TRUE vs IS TRUE confuses partition index creation

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

In response to

Responses

Browse pgsql-bugs by date

  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