+1 for fixing this in the backend code rather than FDW code.

Thanks, Richard, for working on this. The patch looks good to me at
a glance.

On Tue, Apr 25, 2023 at 3:36 PM Richard Guo <guofengli...@gmail.com> wrote:

>
> On Fri, Apr 14, 2023 at 8:51 PM Etsuro Fujita <etsuro.fuj...@gmail.com>
> wrote:
>
>> I think that the root cause for this issue would be in the
>> create_scan_plan handling of pseudoconstant quals when creating a
>> foreign-join (or custom-join) plan.
>
>
> Yes exactly.  In create_scan_plan, we are supposed to extract all the
> pseudoconstant clauses and use them as one-time quals in a gating Result
> node.  Currently we check against rel->baserestrictinfo and ppi_clauses
> for the pseudoconstant clauses.  But for scans of foreign joins, we do
> not have any restriction clauses in these places and thus the gating
> Result node as well as the pseudoconstant clauses would just be lost.
>
> I looked at Nishant's patch.  IIUC it treats the pseudoconstant clauses
> as local conditions.  While it can fix the wrong results issue, I think
> maybe it's better to still treat the pseudoconstant clauses as one-time
> quals in a gating node.  So I wonder if we can store the restriction
> clauses for foreign joins in ForeignPath, just as what we do for normal
> JoinPath, and then check against them for pseudoconstant clauses in
> create_scan_plan, something like attached.
>
> BTW, while going through the codes I noticed one place in
> add_foreign_final_paths that uses NULL for List *.  I changed it to NIL.
>
> Thanks
> Richard
>


-- 
--

Thanks & Regards,
Suraj kharage,



edbpostgres.com

Reply via email to