Re: Virtual generated columns
От | Peter Eisentraut |
---|---|
Тема | Re: Virtual generated columns |
Дата | |
Msg-id | a6fa6f90-1fd8-471d-a6c5-dd70c76eeada@eisentraut.org обсуждение исходный текст |
Ответ на | Re: Virtual generated columns (jian he <jian.universality@gmail.com>) |
Ответы |
Re: Virtual generated columns
|
Список | pgsql-hackers |
On 12.11.24 09:49, jian he wrote: >> On Wed, Nov 6, 2024 at 12:17 AM Peter Eisentraut <peter@eisentraut.org> wrote: > RelationBuildPartitionKey > if (!isnull) > { > char *exprString; > Node *expr; > exprString = TextDatumGetCString(datum); > expr = stringToNode(exprString); > pfree(exprString); > expr = expand_generated_columns_in_expr(expr, relation); > } > no need expand_generated_columns_in_expr? > in ComputePartitionAttrs, we already forbidden generated columns to be > part of the partition key. True. I have removed this extra code in v9. > check_modified_virtual_generated, we can replace fastgetattr to > heap_attisnull? like: > // bool isnull; > // fastgetattr(tuple, i + 1, tupdesc, &isnull); > // if (!isnull) > // ereport(ERROR, > // (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), > // errmsg("trigger modified virtual generated > column value"))); > if (!heap_attisnull(tuple, i+1, tupdesc)) > ereport(ERROR, > (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), > errmsg("trigger modified virtual generated > column value"))); I don't know. fastgetattr() is supposed to be "fast". ;-) It's all inline functions, so maybe that is actually correct. I don't have a strong opinion either way.
В списке pgsql-hackers по дате отправления: