Add some notes about why "ALTER TYPE enum DROP VALUE" is hard.
In hopes of putting these where any would-be implementer is sure to find them, make a placeholder grammar production for ALTER DROP VALUE and put them there. This is really just a docs patch, though. Vik Fearing, with a bit more wordsmithing by me Discussion: https://postgr.es/m/9fffd149-da0f-0c9c-6745-731fb688642a@postgresfriends.org
This commit is contained in:
parent
c2ba3fdea5
commit
af3ee8a086
@ -6412,6 +6412,33 @@ AlterEnumStmt:
|
|||||||
n->skipIfNewValExists = false;
|
n->skipIfNewValExists = false;
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
|
| ALTER TYPE_P any_name DROP VALUE_P Sconst
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* The following problems must be solved before this can be
|
||||||
|
* implemented:
|
||||||
|
*
|
||||||
|
* - There must be no instance of the target value in
|
||||||
|
* any table.
|
||||||
|
*
|
||||||
|
* - The value must not appear in any catalog metadata,
|
||||||
|
* such as stored view expressions or column defaults.
|
||||||
|
*
|
||||||
|
* - The value must not appear in any non-leaf page of a
|
||||||
|
* btree (and similar issues with other index types).
|
||||||
|
* This is problematic because a value could persist
|
||||||
|
* there long after it's gone from user-visible data.
|
||||||
|
*
|
||||||
|
* - Concurrent sessions must not be able to insert the
|
||||||
|
* value while the preceding conditions are being checked.
|
||||||
|
*
|
||||||
|
* - Possibly more...
|
||||||
|
*/
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("dropping an enum value is not implemented"),
|
||||||
|
parser_errposition(@4)));
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_if_not_exists: IF_P NOT EXISTS { $$ = true; }
|
opt_if_not_exists: IF_P NOT EXISTS { $$ = true; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user