On Fri, Mar 8, 2024 at 10:13 AM David Rowley <dgrowle...@gmail.com> wrote:

> The fix could also be to use deparseConst() in appendOrderByClause()
> and have that handle Const EquivalenceMember instead.  I'd rather just
> skip them. To me, that seems less risky than ensuring deparseConst()
> handles all Const types correctly.


I've looked at this patch a bit.  I once wondered why we don't check
pathkey->pk_eclass->ec_has_const with EC_MUST_BE_REDUNDANT to see if the
pathkey is not needed.  Then I realized that a child member would not be
marked as constant even if the child expr is a Const, as explained in
add_child_rel_equivalences().

BTW, I wonder if it is possible that we have a pseudoconstant expression
that is not of type Const.  In such cases we would need to check
'bms_is_empty(pull_varnos(em_expr))' instead of 'IsA(em_expr, Const)'.
However, I'm unable to think of such an expression in this context.

The patch looks good to me otherwise.

Thanks
Richard

Reply via email to