mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +03:00
Generated columns
This is an SQL-standard feature that allows creating columns that are computed from expressions rather than assigned, similar to a view or materialized view but on a column basis. This implements one kind of generated column: stored (computed on write). Another kind, virtual (computed on read), is planned for the future, and some room is left for it. Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Pavel Stehule <pavel.stehule@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/b151f851-4019-bdb1-699e-ebab07d2f40a@2ndquadrant.com
This commit is contained in:
@@ -2083,6 +2083,25 @@ has_row_triggers(PlannerInfo *root, Index rti, CmdType event)
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
has_stored_generated_columns(PlannerInfo *root, Index rti)
|
||||
{
|
||||
RangeTblEntry *rte = planner_rt_fetch(rti, root);
|
||||
Relation relation;
|
||||
TupleDesc tupdesc;
|
||||
bool result = false;
|
||||
|
||||
/* Assume we already have adequate lock */
|
||||
relation = heap_open(rte->relid, NoLock);
|
||||
|
||||
tupdesc = RelationGetDescr(relation);
|
||||
result = tupdesc->constr && tupdesc->constr->has_generated_stored;
|
||||
|
||||
heap_close(relation, NoLock);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* set_relation_partition_info
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user