From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
---|---|
To: | Alexander Pyhalov <a(dot)pyhalov(at)postgrespro(dot)ru> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Inconsistency between try_mergejoin_path and create_mergejoin_plan |
Date: | 2024-06-19 04:15:24 |
Message-ID: | CAMbWs4-RWW20bifm--wjqtwd_BWVXX1YP9qDCBR3r-GNTr_M6A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jun 17, 2024 at 10:51 PM Alexander Pyhalov
<a(dot)pyhalov(at)postgrespro(dot)ru> wrote:
> There's the following inconsistency between try_mergejoin_path() and
> create_mergejoin_plan().
> When clause operator has no commutator, we can end up with mergejoin
> path.
> Later create_mergejoin_plan() will call get_switched_clauses(). This
> function can error out with
>
> ERROR: could not find commutator for operator XXX
Interesting. This error can be reproduced with table 'ec1' from
sql/equivclass.sql.
set enable_indexscan to off;
explain select * from ec1 t1 join ec1 t2 on t2.ff = t1.f1;
ERROR: could not find commutator for operator 30450
The column ec1.f1 has a type of 'int8alias1', a new data type created in
this test file. Additionally, there is also a newly created operator
'int8 = int8alias1' which is mergejoinable but lacks a valid commutator.
Therefore, there is no problem generating the mergejoin path, but when
we create the mergejoin plan, get_switched_clauses would notice the
absence of a valid commutator needed to commute the clause.
It seems to me that the new operator is somewhat artificial, since it is
designed to support a mergejoin but lacks a valid commutator. So before
we proceed to discuss the fix, I'd like to know whether this is a valid
issue that needs fixing.
Any thoughts?
Thanks
Richard
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2024-06-19 04:21:05 | Re: DOCS: Generated table columns are skipped by logical replication |
Previous Message | David G. Johnston | 2024-06-19 03:56:58 | Re: Document NULL |