On Mon, Aug 25, 2025 at 11:58 AM Chao Li <li.evan.chao@gmail.com> wrote:
>
> I tested this patch with “partition by range”, it works for me.
>
> Just have a few small comments:
>
> + if (bms_is_member(0 - FirstLowInvalidHeapAttributeNumber, expr_attrs))
>
> Can we simply check “if (Var *)expr->varno == 1 && (Var *) expr->varattno == 0”, which seems more direct?
>
hi.
in has_partition_attrs, we have:
if (partattno != 0)
{
}
else
{
/* Arbitrary expression */
Node *expr = (Node *) lfirst(partexprs_item);
Bitmapset *expr_attrs = NULL;
/* Find all attributes referenced */
pull_varattnos(expr, 1, &expr_attrs);
}
see comments " /* Arbitrary expression */"
after pull_varattnos, we can not assume "expr" is a Var node?
> + /*
> + * If partition expression contains wholerow reference, then any
> + * column is indirect part of the expression now. unconditionally
> + * set used_in_expr to true.
> + */
>
> For the comment, a tiny enhancement:
>
> /*
> * If the partition expression contains a whole-row reference, then every
> * column is implicitly part of the expression. Set used_in_expr to true
> * unconditionally.
> */
>
Thanks, your comments are better than mine.