summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorAndrew Dunstan2012-09-22 16:53:31 +0000
committerAndrew Dunstan2012-09-22 16:53:31 +0000
commit6d12b68cd7a93e279c8c690749b334c9f59ac7fa (patch)
treefadc9d82179c4ad7cd49198c97208b17e9db45bc /src/include
parent11e131854f8231a21613f834c40fe9d046926387 (diff)
Allow IF NOT EXISTS when add a new enum label.
If the label is already in the enum the statement becomes a no-op. This will reduce the pain that comes from our not allowing this operation inside a transaction block. Andrew Dunstan, reviewed by Tom Lane and Magnus Hagander.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/catalog/pg_enum.h3
-rw-r--r--src/include/nodes/parsenodes.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h
index 91c1ab1de7d..8842a8706b5 100644
--- a/src/include/catalog/pg_enum.h
+++ b/src/include/catalog/pg_enum.h
@@ -65,6 +65,7 @@ typedef FormData_pg_enum *Form_pg_enum;
extern void EnumValuesCreate(Oid enumTypeOid, List *vals);
extern void EnumValuesDelete(Oid enumTypeOid);
extern void AddEnumLabel(Oid enumTypeOid, const char *newVal,
- const char *neighbor, bool newValIsAfter);
+ const char *neighbor, bool newValIsAfter,
+ bool skipIfExists);
#endif /* PG_ENUM_H */
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 19178b55512..98fe850c927 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -2306,6 +2306,7 @@ typedef struct AlterEnumStmt
char *newVal; /* new enum value's name */
char *newValNeighbor; /* neighboring enum value, if specified */
bool newValIsAfter; /* place new enum value after neighbor? */
+ bool skipIfExists; /* ignore statement if label already exists */
} AlterEnumStmt;
/* ----------------------