On Mon, Aug 25, 2025 at 11:58 AM Chao Li <li.evan.c...@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.