Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb7fcf68

Browse files
committed
Require VALUE keyword when extending an enum type. Based on a patch from Alvaro Herrera.
1 parent4acf99b commitb7fcf68

File tree

4 files changed

+86
-86
lines changed

4 files changed

+86
-86
lines changed

‎doc/src/sgml/ref/alter_type.sgml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ ALTER TYPE <replaceable class="PARAMETER">name</replaceable> OWNER TO <replaceab
2828
ALTER TYPE <replaceable class="PARAMETER">name</replaceable> RENAME ATTRIBUTE <replaceable class="PARAMETER">attribute_name</replaceable> TO <replaceable class="PARAMETER">new_attribute_name</replaceable>
2929
ALTER TYPE <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable class="PARAMETER">new_name</replaceable>
3030
ALTER TYPE <replaceable class="PARAMETER">name</replaceable> SET SCHEMA <replaceable class="PARAMETER">new_schema</replaceable>
31-
ALTER TYPE <replaceable class="PARAMETER">name</replaceable> ADD <replaceable class="PARAMETER">new_enum_value</replaceable> [ { BEFORE | AFTER } <replaceable class="PARAMETER">existing_enum_value</replaceable> ]
31+
ALTER TYPE <replaceable class="PARAMETER">name</replaceable> ADDVALUE<replaceable class="PARAMETER">new_enum_value</replaceable> [ { BEFORE | AFTER } <replaceable class="PARAMETER">existing_enum_value</replaceable> ]
3232

3333
<phrase>where <replaceable class="PARAMETER">action</replaceable> is one of:</phrase>
3434

@@ -106,7 +106,7 @@ ALTER TYPE <replaceable class="PARAMETER">name</replaceable> ADD <replaceable cl
106106
</varlistentry>
107107

108108
<varlistentry>
109-
<term><literal>ADD [ BEFORE | AFTER ]</literal></term>
109+
<term><literal>ADDVALUE[ BEFORE | AFTER ]</literal></term>
110110
<listitem>
111111
<para>
112112
This form adds a new value to an enum type. If the new value's place in
@@ -238,7 +238,7 @@ ALTER TYPE <replaceable class="PARAMETER">name</replaceable> ADD <replaceable cl
238238
<title>Notes</title>
239239

240240
<para>
241-
<command>ALTER TYPE ... ADD</> (the form that adds a new value to an
241+
<command>ALTER TYPE ... ADD VALUE</> (the form that adds a new value to an
242242
enum type) cannot be executed inside a transaction block.
243243
</para>
244244

@@ -292,7 +292,7 @@ ALTER TYPE compfoo ADD ATTRIBUTE f3 int;
292292
<para>
293293
To add a new value to an enum type in a particular sort position:
294294
<programlisting>
295-
ALTER TYPE colors ADD 'orange' AFTER 'red';
295+
ALTER TYPE colors ADDVALUE'orange' AFTER 'red';
296296
</programlisting>
297297
</para>
298298
</refsect1>

‎src/backend/parser/gram.y

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3871,30 +3871,30 @@ enum_val_list:Sconst
38713871
*****************************************************************************/
38723872

38733873
AlterEnumStmt:
3874-
ALTERTYPE_Pany_nameADD_PSconst
3874+
ALTERTYPE_Pany_nameADD_PVALUE_PSconst
38753875
{
38763876
AlterEnumStmt *n = makeNode(AlterEnumStmt);
38773877
n->typeName =$3;
3878-
n->newVal =$5;
3878+
n->newVal =$6;
38793879
n->newValNeighbor =NULL;
38803880
n->newValIsAfter =true;
38813881
$$ = (Node *) n;
38823882
}
3883-
|ALTERTYPE_Pany_nameADD_PSconstBEFORESconst
3883+
|ALTERTYPE_Pany_nameADD_PVALUE_PSconstBEFORESconst
38843884
{
38853885
AlterEnumStmt *n = makeNode(AlterEnumStmt);
38863886
n->typeName =$3;
3887-
n->newVal =$5;
3888-
n->newValNeighbor =$7;
3887+
n->newVal =$6;
3888+
n->newValNeighbor =$8;
38893889
n->newValIsAfter =false;
38903890
$$ = (Node *) n;
38913891
}
3892-
|ALTERTYPE_Pany_nameADD_PSconstAFTERSconst
3892+
|ALTERTYPE_Pany_nameADD_PVALUE_PSconstAFTERSconst
38933893
{
38943894
AlterEnumStmt *n = makeNode(AlterEnumStmt);
38953895
n->typeName =$3;
3896-
n->newVal =$5;
3897-
n->newValNeighbor =$7;
3896+
n->newVal =$6;
3897+
n->newValNeighbor =$8;
38983898
n->newValIsAfter =true;
38993899
$$ = (Node *) n;
39003900
}

‎src/test/regress/expected/enum.out

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ ORDER BY 2;
3939
mars | 3
4040
(3 rows)
4141

42-
ALTER TYPE planets ADD 'uranus';
42+
ALTER TYPE planets ADDVALUE'uranus';
4343
SELECT enumlabel, enumsortorder
4444
FROM pg_enum
4545
WHERE enumtypid = 'planets'::regtype
@@ -52,10 +52,10 @@ ORDER BY 2;
5252
uranus | 4
5353
(4 rows)
5454

55-
ALTER TYPE planets ADD 'mercury' BEFORE 'venus';
56-
ALTER TYPE planets ADD 'saturn' BEFORE 'uranus';
57-
ALTER TYPE planets ADD 'jupiter' AFTER 'mars';
58-
ALTER TYPE planets ADD 'neptune' AFTER 'uranus';
55+
ALTER TYPE planets ADDVALUE'mercury' BEFORE 'venus';
56+
ALTER TYPE planets ADDVALUE'saturn' BEFORE 'uranus';
57+
ALTER TYPE planets ADDVALUE'jupiter' AFTER 'mars';
58+
ALTER TYPE planets ADDVALUE'neptune' AFTER 'uranus';
5959
SELECT enumlabel, enumsortorder
6060
FROM pg_enum
6161
WHERE enumtypid = 'planets'::regtype
@@ -89,46 +89,46 @@ ORDER BY enumlabel::planets;
8989
(8 rows)
9090

9191
-- errors for adding labels
92-
ALTER TYPE planets ADD
92+
ALTER TYPE planets ADD VALUE
9393
'plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto';
9494
ERROR: invalid enum label "plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto"
9595
DETAIL: Labels must be 63 characters or less.
96-
ALTER TYPE planets ADD 'pluto' AFTER 'zeus';
96+
ALTER TYPE planets ADDVALUE'pluto' AFTER 'zeus';
9797
ERROR: "zeus" is not an existing enum label
9898
--
9999
-- Test inserting so many values that we have to renumber
100100
--
101101
create type insenum as enum ('L1', 'L2');
102-
alter type insenum add 'i1' before 'L2';
103-
alter type insenum add 'i2' before 'L2';
104-
alter type insenum add 'i3' before 'L2';
105-
alter type insenum add 'i4' before 'L2';
106-
alter type insenum add 'i5' before 'L2';
107-
alter type insenum add 'i6' before 'L2';
108-
alter type insenum add 'i7' before 'L2';
109-
alter type insenum add 'i8' before 'L2';
110-
alter type insenum add 'i9' before 'L2';
111-
alter type insenum add 'i10' before 'L2';
112-
alter type insenum add 'i11' before 'L2';
113-
alter type insenum add 'i12' before 'L2';
114-
alter type insenum add 'i13' before 'L2';
115-
alter type insenum add 'i14' before 'L2';
116-
alter type insenum add 'i15' before 'L2';
117-
alter type insenum add 'i16' before 'L2';
118-
alter type insenum add 'i17' before 'L2';
119-
alter type insenum add 'i18' before 'L2';
120-
alter type insenum add 'i19' before 'L2';
121-
alter type insenum add 'i20' before 'L2';
122-
alter type insenum add 'i21' before 'L2';
123-
alter type insenum add 'i22' before 'L2';
124-
alter type insenum add 'i23' before 'L2';
125-
alter type insenum add 'i24' before 'L2';
126-
alter type insenum add 'i25' before 'L2';
127-
alter type insenum add 'i26' before 'L2';
128-
alter type insenum add 'i27' before 'L2';
129-
alter type insenum add 'i28' before 'L2';
130-
alter type insenum add 'i29' before 'L2';
131-
alter type insenum add 'i30' before 'L2';
102+
alter type insenum addvalue'i1' before 'L2';
103+
alter type insenum addvalue'i2' before 'L2';
104+
alter type insenum addvalue'i3' before 'L2';
105+
alter type insenum addvalue'i4' before 'L2';
106+
alter type insenum addvalue'i5' before 'L2';
107+
alter type insenum addvalue'i6' before 'L2';
108+
alter type insenum addvalue'i7' before 'L2';
109+
alter type insenum addvalue'i8' before 'L2';
110+
alter type insenum addvalue'i9' before 'L2';
111+
alter type insenum addvalue'i10' before 'L2';
112+
alter type insenum addvalue'i11' before 'L2';
113+
alter type insenum addvalue'i12' before 'L2';
114+
alter type insenum addvalue'i13' before 'L2';
115+
alter type insenum addvalue'i14' before 'L2';
116+
alter type insenum addvalue'i15' before 'L2';
117+
alter type insenum addvalue'i16' before 'L2';
118+
alter type insenum addvalue'i17' before 'L2';
119+
alter type insenum addvalue'i18' before 'L2';
120+
alter type insenum addvalue'i19' before 'L2';
121+
alter type insenum addvalue'i20' before 'L2';
122+
alter type insenum addvalue'i21' before 'L2';
123+
alter type insenum addvalue'i22' before 'L2';
124+
alter type insenum addvalue'i23' before 'L2';
125+
alter type insenum addvalue'i24' before 'L2';
126+
alter type insenum addvalue'i25' before 'L2';
127+
alter type insenum addvalue'i26' before 'L2';
128+
alter type insenum addvalue'i27' before 'L2';
129+
alter type insenum addvalue'i28' before 'L2';
130+
alter type insenum addvalue'i29' before 'L2';
131+
alter type insenum addvalue'i30' before 'L2';
132132
-- The exact values of enumsortorder will now depend on the local properties
133133
-- of float4, but in any reasonable implementation we should get at least
134134
-- 20 splits before having to renumber; so only hide values > 20.

‎src/test/regress/sql/enum.sql

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ FROM pg_enum
2626
WHERE enumtypid='planets'::regtype
2727
ORDER BY2;
2828

29-
ALTERTYPE planets ADD'uranus';
29+
ALTERTYPE planets ADDVALUE'uranus';
3030

3131
SELECT enumlabel, enumsortorder
3232
FROM pg_enum
3333
WHERE enumtypid='planets'::regtype
3434
ORDER BY2;
3535

36-
ALTERTYPE planets ADD'mercury' BEFORE'venus';
37-
ALTERTYPE planets ADD'saturn' BEFORE'uranus';
38-
ALTERTYPE planets ADD'jupiter' AFTER'mars';
39-
ALTERTYPE planets ADD'neptune' AFTER'uranus';
36+
ALTERTYPE planets ADDVALUE'mercury' BEFORE'venus';
37+
ALTERTYPE planets ADDVALUE'saturn' BEFORE'uranus';
38+
ALTERTYPE planets ADDVALUE'jupiter' AFTER'mars';
39+
ALTERTYPE planets ADDVALUE'neptune' AFTER'uranus';
4040

4141
SELECT enumlabel, enumsortorder
4242
FROM pg_enum
@@ -49,47 +49,47 @@ WHERE enumtypid = 'planets'::regtype
4949
ORDER BY enumlabel::planets;
5050

5151
-- errors for adding labels
52-
ALTERTYPE planets ADD
52+
ALTERTYPE planets ADD VALUE
5353
'plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto';
5454

55-
ALTERTYPE planets ADD'pluto' AFTER'zeus';
55+
ALTERTYPE planets ADDVALUE'pluto' AFTER'zeus';
5656

5757
--
5858
-- Test inserting so many values that we have to renumber
5959
--
6060

6161
createtypeinsenumas enum ('L1','L2');
6262

63-
altertype insenum add'i1' before'L2';
64-
altertype insenum add'i2' before'L2';
65-
altertype insenum add'i3' before'L2';
66-
altertype insenum add'i4' before'L2';
67-
altertype insenum add'i5' before'L2';
68-
altertype insenum add'i6' before'L2';
69-
altertype insenum add'i7' before'L2';
70-
altertype insenum add'i8' before'L2';
71-
altertype insenum add'i9' before'L2';
72-
altertype insenum add'i10' before'L2';
73-
altertype insenum add'i11' before'L2';
74-
altertype insenum add'i12' before'L2';
75-
altertype insenum add'i13' before'L2';
76-
altertype insenum add'i14' before'L2';
77-
altertype insenum add'i15' before'L2';
78-
altertype insenum add'i16' before'L2';
79-
altertype insenum add'i17' before'L2';
80-
altertype insenum add'i18' before'L2';
81-
altertype insenum add'i19' before'L2';
82-
altertype insenum add'i20' before'L2';
83-
altertype insenum add'i21' before'L2';
84-
altertype insenum add'i22' before'L2';
85-
altertype insenum add'i23' before'L2';
86-
altertype insenum add'i24' before'L2';
87-
altertype insenum add'i25' before'L2';
88-
altertype insenum add'i26' before'L2';
89-
altertype insenum add'i27' before'L2';
90-
altertype insenum add'i28' before'L2';
91-
altertype insenum add'i29' before'L2';
92-
altertype insenum add'i30' before'L2';
63+
altertype insenum addvalue'i1' before'L2';
64+
altertype insenum addvalue'i2' before'L2';
65+
altertype insenum addvalue'i3' before'L2';
66+
altertype insenum addvalue'i4' before'L2';
67+
altertype insenum addvalue'i5' before'L2';
68+
altertype insenum addvalue'i6' before'L2';
69+
altertype insenum addvalue'i7' before'L2';
70+
altertype insenum addvalue'i8' before'L2';
71+
altertype insenum addvalue'i9' before'L2';
72+
altertype insenum addvalue'i10' before'L2';
73+
altertype insenum addvalue'i11' before'L2';
74+
altertype insenum addvalue'i12' before'L2';
75+
altertype insenum addvalue'i13' before'L2';
76+
altertype insenum addvalue'i14' before'L2';
77+
altertype insenum addvalue'i15' before'L2';
78+
altertype insenum addvalue'i16' before'L2';
79+
altertype insenum addvalue'i17' before'L2';
80+
altertype insenum addvalue'i18' before'L2';
81+
altertype insenum addvalue'i19' before'L2';
82+
altertype insenum addvalue'i20' before'L2';
83+
altertype insenum addvalue'i21' before'L2';
84+
altertype insenum addvalue'i22' before'L2';
85+
altertype insenum addvalue'i23' before'L2';
86+
altertype insenum addvalue'i24' before'L2';
87+
altertype insenum addvalue'i25' before'L2';
88+
altertype insenum addvalue'i26' before'L2';
89+
altertype insenum addvalue'i27' before'L2';
90+
altertype insenum addvalue'i28' before'L2';
91+
altertype insenum addvalue'i29' before'L2';
92+
altertype insenum addvalue'i30' before'L2';
9393

9494
-- The exact values of enumsortorder will now depend on the local properties
9595
-- of float4, but in any reasonable implementation we should get at least

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp