diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/parser/gram.y | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 01521789e82..b51f12dc232 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -3505,6 +3505,19 @@ ColConstraintElem: n->raw_expr = $5; n->cooked_expr = NULL; n->location = @1; + + /* + * Can't do this in the grammar because of shift/reduce + * conflicts. (IDENTITY allows both ALWAYS and BY + * DEFAULT, but generated columns only allow ALWAYS.) We + * can also give a more useful error message and location. + */ + if ($2 != ATTRIBUTE_IDENTITY_ALWAYS) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("for a generated column, GENERATED ALWAYS must be specified"), + parser_errposition(@2))); + $$ = (Node *)n; } | REFERENCES qualified_name opt_column_list key_match key_actions |