Re: disallow alter individual column if partition key contains wholerow reference
От | jian he |
---|---|
Тема | Re: disallow alter individual column if partition key contains wholerow reference |
Дата | |
Msg-id | CACJufxE_xWFJKpspCebdT17htqdTKnGDnBWiEfFHD7uqh2X7-g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: disallow alter individual column if partition key contains wholerow reference (Chao Li <li.evan.chao@gmail.com>) |
Список | pgsql-hackers |
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.
В списке pgsql-hackers по дате отправления: