mirror of
https://github.com/postgres/postgres.git
synced 2025-10-18 04:29:09 +03:00
Allow new values to be added to an existing enum type.
After much expenditure of effort, we've got this to the point where the performance penalty is pretty minimal in typical cases. Andrew Dunstan, reviewed by Brendan Jurd, Dean Rasheed, and Tom Lane
This commit is contained in:
@@ -182,8 +182,8 @@ static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_
|
||||
}
|
||||
|
||||
%type <node> stmt schema_stmt
|
||||
AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterFdwStmt
|
||||
AlterForeignServerStmt AlterGroupStmt
|
||||
AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterEnumStmt
|
||||
AlterFdwStmt AlterForeignServerStmt AlterGroupStmt
|
||||
AlterObjectSchemaStmt AlterOwnerStmt AlterSeqStmt AlterTableStmt
|
||||
AlterCompositeTypeStmt AlterUserStmt AlterUserMappingStmt AlterUserSetStmt
|
||||
AlterRoleStmt AlterRoleSetStmt
|
||||
@@ -652,6 +652,7 @@ stmt :
|
||||
| AlterDatabaseSetStmt
|
||||
| AlterDefaultPrivilegesStmt
|
||||
| AlterDomainStmt
|
||||
| AlterEnumStmt
|
||||
| AlterFdwStmt
|
||||
| AlterForeignServerStmt
|
||||
| AlterFunctionStmt
|
||||
@@ -3863,6 +3864,42 @@ enum_val_list: Sconst
|
||||
{ $$ = lappend($1, makeString($3)); }
|
||||
;
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* ALTER TYPE enumtype ADD ...
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
AlterEnumStmt:
|
||||
ALTER TYPE_P any_name ADD_P Sconst
|
||||
{
|
||||
AlterEnumStmt *n = makeNode(AlterEnumStmt);
|
||||
n->typeName = $3;
|
||||
n->newVal = $5;
|
||||
n->newValNeighbor = NULL;
|
||||
n->newValIsAfter = true;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| ALTER TYPE_P any_name ADD_P Sconst BEFORE Sconst
|
||||
{
|
||||
AlterEnumStmt *n = makeNode(AlterEnumStmt);
|
||||
n->typeName = $3;
|
||||
n->newVal = $5;
|
||||
n->newValNeighbor = $7;
|
||||
n->newValIsAfter = false;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| ALTER TYPE_P any_name ADD_P Sconst AFTER Sconst
|
||||
{
|
||||
AlterEnumStmt *n = makeNode(AlterEnumStmt);
|
||||
n->typeName = $3;
|
||||
n->newVal = $5;
|
||||
n->newValNeighbor = $7;
|
||||
n->newValIsAfter = true;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
|
Reference in New Issue
Block a user