mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Identity columns
This is the SQL standard-conforming variant of PostgreSQL's serial columns. It fixes a few usability issues that serial columns have: - CREATE TABLE / LIKE copies default but refers to same sequence - cannot add/drop serialness with ALTER TABLE - dropping default does not drop sequence - need to grant separate privileges to sequence - other slight weirdnesses because serial is some kind of special macro Reviewed-by: Vitaly Burovoy <vitaly.burovoy@gmail.com>
This commit is contained in:
@ -246,6 +246,9 @@ exprType(const Node *expr)
|
||||
case T_CurrentOfExpr:
|
||||
type = BOOLOID;
|
||||
break;
|
||||
case T_NextValueExpr:
|
||||
type = ((const NextValueExpr *) expr)->typeId;
|
||||
break;
|
||||
case T_InferenceElem:
|
||||
{
|
||||
const InferenceElem *n = (const InferenceElem *) expr;
|
||||
@ -919,6 +922,9 @@ exprCollation(const Node *expr)
|
||||
case T_CurrentOfExpr:
|
||||
coll = InvalidOid; /* result is always boolean */
|
||||
break;
|
||||
case T_NextValueExpr:
|
||||
coll = InvalidOid; /* result is always an integer type */
|
||||
break;
|
||||
case T_InferenceElem:
|
||||
coll = exprCollation((Node *) ((const InferenceElem *) expr)->expr);
|
||||
break;
|
||||
@ -1122,6 +1128,9 @@ exprSetCollation(Node *expr, Oid collation)
|
||||
case T_CurrentOfExpr:
|
||||
Assert(!OidIsValid(collation)); /* result is always boolean */
|
||||
break;
|
||||
case T_NextValueExpr:
|
||||
Assert(!OidIsValid(collation)); /* result is always an integer type */
|
||||
break;
|
||||
default:
|
||||
elog(ERROR, "unrecognized node type: %d", (int) nodeTag(expr));
|
||||
break;
|
||||
@ -1881,6 +1890,7 @@ expression_tree_walker(Node *node,
|
||||
case T_CaseTestExpr:
|
||||
case T_SetToDefault:
|
||||
case T_CurrentOfExpr:
|
||||
case T_NextValueExpr:
|
||||
case T_SQLValueFunction:
|
||||
case T_RangeTblRef:
|
||||
case T_SortGroupClause:
|
||||
@ -2476,6 +2486,7 @@ expression_tree_mutator(Node *node,
|
||||
case T_CaseTestExpr:
|
||||
case T_SetToDefault:
|
||||
case T_CurrentOfExpr:
|
||||
case T_NextValueExpr:
|
||||
case T_SQLValueFunction:
|
||||
case T_RangeTblRef:
|
||||
case T_SortGroupClause:
|
||||
|
Reference in New Issue
Block a user