]> granicus.if.org Git - postgresql/blob - src/test/regress/sql/alter_table.sql
Implement column aliases on views "CREATE VIEW name (collist)".
[postgresql] / src / test / regress / sql / alter_table.sql
1 --
2 -- ALTER_TABLE
3 -- add attribute
4 --
5
6 CREATE TABLE tmp (initial int4);
7
8 ALTER TABLE tmp ADD COLUMN a int4;
9
10 ALTER TABLE tmp ADD COLUMN b name;
11
12 ALTER TABLE tmp ADD COLUMN c text;
13
14 ALTER TABLE tmp ADD COLUMN d float8;
15
16 ALTER TABLE tmp ADD COLUMN e float4;
17
18 ALTER TABLE tmp ADD COLUMN f int2;
19
20 ALTER TABLE tmp ADD COLUMN g polygon;
21
22 ALTER TABLE tmp ADD COLUMN h abstime;
23
24 ALTER TABLE tmp ADD COLUMN i char;
25
26 ALTER TABLE tmp ADD COLUMN j abstime[];
27
28 ALTER TABLE tmp ADD COLUMN k dt;
29
30 ALTER TABLE tmp ADD COLUMN l tid;
31
32 ALTER TABLE tmp ADD COLUMN m xid;
33
34 ALTER TABLE tmp ADD COLUMN n oidvector;
35
36 --ALTER TABLE tmp ADD COLUMN o lock;
37 ALTER TABLE tmp ADD COLUMN p smgr;
38
39 ALTER TABLE tmp ADD COLUMN q point;
40
41 ALTER TABLE tmp ADD COLUMN r lseg;
42
43 ALTER TABLE tmp ADD COLUMN s path;
44
45 ALTER TABLE tmp ADD COLUMN t box;
46
47 ALTER TABLE tmp ADD COLUMN u tinterval;
48
49 ALTER TABLE tmp ADD COLUMN v datetime;
50
51 ALTER TABLE tmp ADD COLUMN w timespan;
52
53 ALTER TABLE tmp ADD COLUMN x float8[];
54
55 ALTER TABLE tmp ADD COLUMN y float4[];
56
57 ALTER TABLE tmp ADD COLUMN z int2[];
58
59 INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u,
60         v, w, x, y, z)
61    VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 
62         'Mon May  1 00:30:30 1995', 'c', '{Mon May  1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}', 
63         314159, '(1,1)', 512,
64         '1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)',
65         '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]',
66         '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}');
67
68 SELECT * FROM tmp;
69
70 DROP TABLE tmp;
71
72 -- the wolf bug - schema mods caused inconsistent row descriptors 
73 CREATE TABLE tmp (
74         initial         int4
75 );
76
77 ALTER TABLE tmp ADD COLUMN a int4;
78
79 ALTER TABLE tmp ADD COLUMN b name;
80
81 ALTER TABLE tmp ADD COLUMN c text;
82
83 ALTER TABLE tmp ADD COLUMN d float8;
84
85 ALTER TABLE tmp ADD COLUMN e float4;
86
87 ALTER TABLE tmp ADD COLUMN f int2;
88
89 ALTER TABLE tmp ADD COLUMN g polygon;
90
91 ALTER TABLE tmp ADD COLUMN h abstime;
92
93 ALTER TABLE tmp ADD COLUMN i char;
94
95 ALTER TABLE tmp ADD COLUMN j abstime[];
96
97 ALTER TABLE tmp ADD COLUMN k dt;
98
99 ALTER TABLE tmp ADD COLUMN l tid;
100
101 ALTER TABLE tmp ADD COLUMN m xid;
102
103 ALTER TABLE tmp ADD COLUMN n oidvector;
104
105 --ALTER TABLE tmp ADD COLUMN o lock;
106 ALTER TABLE tmp ADD COLUMN p smgr;
107
108 ALTER TABLE tmp ADD COLUMN q point;
109
110 ALTER TABLE tmp ADD COLUMN r lseg;
111
112 ALTER TABLE tmp ADD COLUMN s path;
113
114 ALTER TABLE tmp ADD COLUMN t box;
115
116 ALTER TABLE tmp ADD COLUMN u tinterval;
117
118 ALTER TABLE tmp ADD COLUMN v datetime;
119
120 ALTER TABLE tmp ADD COLUMN w timespan;
121
122 ALTER TABLE tmp ADD COLUMN x float8[];
123
124 ALTER TABLE tmp ADD COLUMN y float4[];
125
126 ALTER TABLE tmp ADD COLUMN z int2[];
127
128 INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u,
129         v, w, x, y, z)
130    VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 
131         'Mon May  1 00:30:30 1995', 'c', '{Mon May  1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}',
132          314159, '(1,1)', 512,
133         '1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)',
134         '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]',
135         '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}');
136
137 SELECT * FROM tmp;
138
139 DROP TABLE tmp;
140
141
142 --
143 -- rename -
144 --   should preserve indices, which we can check by seeing if a SELECT
145 --   chooses an indexscan; however, in the absence of vacuum statistics
146 --   it might not.  Therefore, vacuum first.
147 --
148 VACUUM ANALYZE tenk1;
149
150 ALTER TABLE tenk1 RENAME TO ten_k;
151
152 -- 20 values, sorted 
153 SELECT unique1 FROM ten_k WHERE unique1 < 20;
154
155 -- 20 values, sorted 
156 SELECT unique2 FROM ten_k WHERE unique2 < 20;
157
158 -- 100 values, sorted 
159 SELECT hundred FROM ten_k WHERE hundred = 50;
160
161 ALTER TABLE ten_k RENAME TO tenk1;
162
163 -- 5 values, sorted 
164 SELECT unique1 FROM tenk1 WHERE unique1 < 5;
165
166 -- FOREIGN KEY CONSTRAINT adding TEST
167
168 CREATE TABLE tmp2 (a int primary key);
169
170 CREATE TABLE tmp3 (a int, b int);
171
172 -- Insert rows into tmp2 (pktable)
173 INSERT INTO tmp2 values (1);
174 INSERT INTO tmp2 values (2);
175 INSERT INTO tmp2 values (3);
176 INSERT INTO tmp2 values (4);
177
178 -- Insert rows into tmp3
179 INSERT INTO tmp3 values (1,10);
180 INSERT INTO tmp3 values (1,20);
181 INSERT INTO tmp3 values (5,50);
182
183 -- Try (and fail) to add constraint due to invalid data
184 ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
185
186 -- Delete failing row
187 DELETE FROM tmp3 where a=5;
188
189 -- Try (and succeed)
190 ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
191
192 DROP TABLE tmp3;
193
194 DROP TABLE tmp2;
195