mirror of
https://github.com/postgres/postgres.git
synced 2025-09-05 02:22:28 +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:
@@ -570,6 +570,7 @@ transformColumnRef(ParseState *pstate, ColumnRef *cref)
|
||||
case EXPR_KIND_PARTITION_EXPRESSION:
|
||||
case EXPR_KIND_CALL_ARGUMENT:
|
||||
case EXPR_KIND_COPY_WHERE:
|
||||
case EXPR_KIND_GENERATED_COLUMN:
|
||||
/* okay */
|
||||
break;
|
||||
|
||||
@@ -1927,6 +1928,9 @@ transformSubLink(ParseState *pstate, SubLink *sublink)
|
||||
case EXPR_KIND_COPY_WHERE:
|
||||
err = _("cannot use subquery in COPY FROM WHERE condition");
|
||||
break;
|
||||
case EXPR_KIND_GENERATED_COLUMN:
|
||||
err = _("cannot use subquery in column generation expression");
|
||||
break;
|
||||
|
||||
/*
|
||||
* There is intentionally no default: case here, so that the
|
||||
@@ -3557,6 +3561,8 @@ ParseExprKindName(ParseExprKind exprKind)
|
||||
return "CALL";
|
||||
case EXPR_KIND_COPY_WHERE:
|
||||
return "WHERE";
|
||||
case EXPR_KIND_GENERATED_COLUMN:
|
||||
return "GENERATED AS";
|
||||
|
||||
/*
|
||||
* There is intentionally no default: case here, so that the
|
||||
|
Reference in New Issue
Block a user