On 12.11.24 09:49, jian he wrote:
On Wed, Nov 6, 2024 at 12:17 AM Peter Eisentraut <pe...@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.



Reply via email to