5
CREATE TABLE tmp (initial int4);
6
COMMENT ON TABLE tmp_wrong IS 'table comment';
7
ERROR: relation "tmp_wrong" does not exist
8
COMMENT ON TABLE tmp IS 'table comment';
9
COMMENT ON TABLE tmp IS NULL;
10
ALTER TABLE tmp ADD COLUMN a int4 default 3;
11
ALTER TABLE tmp ADD COLUMN b name;
12
ALTER TABLE tmp ADD COLUMN c text;
13
ALTER TABLE tmp ADD COLUMN d float8;
14
ALTER TABLE tmp ADD COLUMN e float4;
15
ALTER TABLE tmp ADD COLUMN f int2;
16
ALTER TABLE tmp ADD COLUMN g polygon;
17
ALTER TABLE tmp ADD COLUMN h abstime;
18
ALTER TABLE tmp ADD COLUMN i char;
19
ALTER TABLE tmp ADD COLUMN j abstime[];
20
ALTER TABLE tmp ADD COLUMN k int4;
21
ALTER TABLE tmp ADD COLUMN l tid;
22
ALTER TABLE tmp ADD COLUMN m xid;
23
ALTER TABLE tmp ADD COLUMN n oidvector;
24
--ALTER TABLE tmp ADD COLUMN o lock;
25
ALTER TABLE tmp ADD COLUMN p smgr;
26
ALTER TABLE tmp ADD COLUMN q point;
27
ALTER TABLE tmp ADD COLUMN r lseg;
28
ALTER TABLE tmp ADD COLUMN s path;
29
ALTER TABLE tmp ADD COLUMN t box;
30
ALTER TABLE tmp ADD COLUMN u tinterval;
31
ALTER TABLE tmp ADD COLUMN v timestamp;
32
ALTER TABLE tmp ADD COLUMN w interval;
33
ALTER TABLE tmp ADD COLUMN x float8[];
34
ALTER TABLE tmp ADD COLUMN y float4[];
35
ALTER TABLE tmp ADD COLUMN z int2[];
36
INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u,
38
VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)',
39
'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}',
40
314159, '(1,1)', '512',
41
'1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)',
42
'(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["epoch" "infinity"]',
43
'epoch', '01:00:10', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}');
45
initial | a | b | c | d | e | f | g | h | i | j | k | l | m | n | p | q | r | s | t | u | v | w | x | y | z
46
---------+---+------+------+-----+-----+---+-----------------------+------------------------------+---+------------------------------------------------------------------------------------------------+--------+-------+-----+-----------------+---------------+-----------+-----------------------+-----------------------------+---------------------+---------------------------------------------+--------------------------+------------------+-----------+-----------+-----------
47
| 4 | name | text | 4.1 | 4.1 | 2 | ((4.1,4.1),(3.1,3.1)) | Mon May 01 00:30:30 1995 PDT | c | {"Mon May 01 00:30:30 1995 PDT","Mon Aug 24 14:43:07 1992 PDT","Wed Dec 31 16:00:00 1969 PST"} | 314159 | (1,1) | 512 | 1 2 3 4 5 6 7 8 | magnetic disk | (1.1,1.1) | [(4.1,4.1),(3.1,3.1)] | ((0,2),(4.1,4.1),(3.1,3.1)) | (4.1,4.1),(3.1,3.1) | ["Wed Dec 31 16:00:00 1969 PST" "infinity"] | Thu Jan 01 00:00:00 1970 | @ 1 hour 10 secs | {1,2,3,4} | {1,2,3,4} | {1,2,3,4}
51
-- the wolf bug - schema mods caused inconsistent row descriptors
55
ALTER TABLE tmp ADD COLUMN a int4;
56
ALTER TABLE tmp ADD COLUMN b name;
57
ALTER TABLE tmp ADD COLUMN c text;
58
ALTER TABLE tmp ADD COLUMN d float8;
59
ALTER TABLE tmp ADD COLUMN e float4;
60
ALTER TABLE tmp ADD COLUMN f int2;
61
ALTER TABLE tmp ADD COLUMN g polygon;
62
ALTER TABLE tmp ADD COLUMN h abstime;
63
ALTER TABLE tmp ADD COLUMN i char;
64
ALTER TABLE tmp ADD COLUMN j abstime[];
65
ALTER TABLE tmp ADD COLUMN k int4;
66
ALTER TABLE tmp ADD COLUMN l tid;
67
ALTER TABLE tmp ADD COLUMN m xid;
68
ALTER TABLE tmp ADD COLUMN n oidvector;
69
--ALTER TABLE tmp ADD COLUMN o lock;
70
ALTER TABLE tmp ADD COLUMN p smgr;
71
ALTER TABLE tmp ADD COLUMN q point;
72
ALTER TABLE tmp ADD COLUMN r lseg;
73
ALTER TABLE tmp ADD COLUMN s path;
74
ALTER TABLE tmp ADD COLUMN t box;
75
ALTER TABLE tmp ADD COLUMN u tinterval;
76
ALTER TABLE tmp ADD COLUMN v timestamp;
77
ALTER TABLE tmp ADD COLUMN w interval;
78
ALTER TABLE tmp ADD COLUMN x float8[];
79
ALTER TABLE tmp ADD COLUMN y float4[];
80
ALTER TABLE tmp ADD COLUMN z int2[];
81
INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u,
83
VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)',
84
'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}',
85
314159, '(1,1)', '512',
86
'1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)',
87
'(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["epoch" "infinity"]',
88
'epoch', '01:00:10', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}');
90
initial | a | b | c | d | e | f | g | h | i | j | k | l | m | n | p | q | r | s | t | u | v | w | x | y | z
91
---------+---+------+------+-----+-----+---+-----------------------+------------------------------+---+------------------------------------------------------------------------------------------------+--------+-------+-----+-----------------+---------------+-----------+-----------------------+-----------------------------+---------------------+---------------------------------------------+--------------------------+------------------+-----------+-----------+-----------
92
| 4 | name | text | 4.1 | 4.1 | 2 | ((4.1,4.1),(3.1,3.1)) | Mon May 01 00:30:30 1995 PDT | c | {"Mon May 01 00:30:30 1995 PDT","Mon Aug 24 14:43:07 1992 PDT","Wed Dec 31 16:00:00 1969 PST"} | 314159 | (1,1) | 512 | 1 2 3 4 5 6 7 8 | magnetic disk | (1.1,1.1) | [(4.1,4.1),(3.1,3.1)] | ((0,2),(4.1,4.1),(3.1,3.1)) | (4.1,4.1),(3.1,3.1) | ["Wed Dec 31 16:00:00 1969 PST" "infinity"] | Thu Jan 01 00:00:00 1970 | @ 1 hour 10 secs | {1,2,3,4} | {1,2,3,4} | {1,2,3,4}
97
-- rename - check on both non-temp and temp tables
99
CREATE TABLE tmp (regtable int);
100
CREATE TEMP TABLE tmp (tmptable int);
101
ALTER TABLE tmp RENAME TO tmp_new;
107
SELECT * FROM tmp_new;
112
ALTER TABLE tmp RENAME TO tmp_new2;
113
SELECT * FROM tmp; -- should fail
114
ERROR: relation "tmp" does not exist
115
SELECT * FROM tmp_new;
120
SELECT * FROM tmp_new2;
127
-- ALTER TABLE ... RENAME on non-table relations
128
-- renaming indexes (FIXME: this should probably test the index's functionality)
129
ALTER INDEX onek_unique1 RENAME TO tmp_onek_unique1;
130
ALTER INDEX tmp_onek_unique1 RENAME TO onek_unique1;
132
CREATE VIEW tmp_view (unique1) AS SELECT unique1 FROM tenk1;
133
ALTER TABLE tmp_view RENAME TO tmp_view_new;
134
-- analyze to ensure we get an indexscan here
137
SELECT unique1 FROM tenk1 WHERE unique1 < 5;
147
DROP VIEW tmp_view_new;
148
-- toast-like relation name
149
alter table stud_emp rename to pg_toast_stud_emp;
150
alter table pg_toast_stud_emp rename to stud_emp;
151
-- FOREIGN KEY CONSTRAINT adding TEST
152
CREATE TABLE tmp2 (a int primary key);
153
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tmp2_pkey" for table "tmp2"
154
CREATE TABLE tmp3 (a int, b int);
155
CREATE TABLE tmp4 (a int, b int, unique(a,b));
156
NOTICE: CREATE TABLE / UNIQUE will create implicit index "tmp4_a_key" for table "tmp4"
157
CREATE TABLE tmp5 (a int, b int);
158
-- Insert rows into tmp2 (pktable)
159
INSERT INTO tmp2 values (1);
160
INSERT INTO tmp2 values (2);
161
INSERT INTO tmp2 values (3);
162
INSERT INTO tmp2 values (4);
163
-- Insert rows into tmp3
164
INSERT INTO tmp3 values (1,10);
165
INSERT INTO tmp3 values (1,20);
166
INSERT INTO tmp3 values (5,50);
167
-- Try (and fail) to add constraint due to invalid source columns
168
ALTER TABLE tmp3 add constraint tmpconstr foreign key(c) references tmp2 match full;
169
ERROR: column "c" referenced in foreign key constraint does not exist
170
-- Try (and fail) to add constraint due to invalide destination columns explicitly given
171
ALTER TABLE tmp3 add constraint tmpconstr foreign key(a) references tmp2(b) match full;
172
ERROR: column "b" referenced in foreign key constraint does not exist
173
-- Try (and fail) to add constraint due to invalid data
174
ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
175
ERROR: insert or update on table "tmp3" violates foreign key constraint "tmpconstr"
176
DETAIL: Key (a)=(5) is not present in table "tmp2".
177
-- Delete failing row
178
DELETE FROM tmp3 where a=5;
180
ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
181
-- Try (and fail) to create constraint from tmp5(a) to tmp4(a) - unique constraint on
183
ALTER TABLE tmp5 add constraint tmpconstr foreign key(a) references tmp4(a) match full;
184
ERROR: there is no unique constraint matching given keys for referenced table "tmp4"
189
-- Foreign key adding test with mixed types
190
-- Note: these tables are TEMP to avoid name conflicts when this test
191
-- is run in parallel with foreign_key.sql.
192
CREATE TEMP TABLE PKTABLE (ptest1 int PRIMARY KEY);
193
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pktable_pkey" for table "pktable"
194
CREATE TEMP TABLE FKTABLE (ftest1 inet);
195
-- This next should fail, because inet=int does not exist
196
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable;
197
ERROR: foreign key constraint "fktable_ftest1_fkey" cannot be implemented
198
DETAIL: Key columns "ftest1" and "ptest1" are of incompatible types: inet and integer.
199
-- This should also fail for the same reason, but here we
200
-- give the column name
201
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable(ptest1);
202
ERROR: foreign key constraint "fktable_ftest1_fkey" cannot be implemented
203
DETAIL: Key columns "ftest1" and "ptest1" are of incompatible types: inet and integer.
204
-- This should succeed, even though they are different types
205
-- because varchar=int does exist
207
CREATE TEMP TABLE FKTABLE (ftest1 varchar);
208
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable;
209
WARNING: foreign key constraint "fktable_ftest1_fkey" will require costly sequential scans
210
DETAIL: Key columns "ftest1" and "ptest1" are of different types: character varying and integer.
212
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable(ptest1);
213
WARNING: foreign key constraint "fktable_ftest1_fkey1" will require costly sequential scans
214
DETAIL: Key columns "ftest1" and "ptest1" are of different types: character varying and integer.
215
DROP TABLE pktable cascade;
216
NOTICE: drop cascades to constraint fktable_ftest1_fkey1 on table fktable
217
NOTICE: drop cascades to constraint fktable_ftest1_fkey on table fktable
219
CREATE TEMP TABLE PKTABLE (ptest1 int, ptest2 inet,
220
PRIMARY KEY(ptest1, ptest2));
221
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pktable_pkey" for table "pktable"
222
-- This should fail, because we just chose really odd types
223
CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp);
224
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) references pktable;
225
ERROR: foreign key constraint "fktable_ftest1_fkey" cannot be implemented
226
DETAIL: Key columns "ftest1" and "ptest1" are of incompatible types: cidr and integer.
228
-- Again, so should this...
229
CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp);
230
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2)
231
references pktable(ptest1, ptest2);
232
ERROR: foreign key constraint "fktable_ftest1_fkey" cannot be implemented
233
DETAIL: Key columns "ftest1" and "ptest1" are of incompatible types: cidr and integer.
235
-- This fails because we mixed up the column ordering
236
CREATE TEMP TABLE FKTABLE (ftest1 int, ftest2 inet);
237
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2)
238
references pktable(ptest2, ptest1);
239
ERROR: foreign key constraint "fktable_ftest1_fkey" cannot be implemented
240
DETAIL: Key columns "ftest1" and "ptest2" are of incompatible types: integer and inet.
242
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest2, ftest1)
243
references pktable(ptest1, ptest2);
244
ERROR: foreign key constraint "fktable_ftest2_fkey" cannot be implemented
245
DETAIL: Key columns "ftest2" and "ptest1" are of incompatible types: inet and integer.
246
-- temp tables should go away by themselves, need not drop them.
247
-- test check constraint adding
248
create table atacc1 ( test int );
249
-- add a check constraint
250
alter table atacc1 add constraint atacc_test1 check (test>3);
252
insert into atacc1 (test) values (2);
253
ERROR: new row for relation "atacc1" violates check constraint "atacc_test1"
255
insert into atacc1 (test) values (4);
257
-- let's do one where the check fails when added
258
create table atacc1 ( test int );
259
-- insert a soon to be failing row
260
insert into atacc1 (test) values (2);
261
-- add a check constraint (fails)
262
alter table atacc1 add constraint atacc_test1 check (test>3);
263
ERROR: check constraint "atacc_test1" is violated by some row
264
insert into atacc1 (test) values (4);
266
-- let's do one where the check fails because the column doesn't exist
267
create table atacc1 ( test int );
268
-- add a check constraint (fails)
269
alter table atacc1 add constraint atacc_test1 check (test1>3);
270
ERROR: column "test1" does not exist
272
-- something a little more complicated
273
create table atacc1 ( test int, test2 int, test3 int);
274
-- add a check constraint (fails)
275
alter table atacc1 add constraint atacc_test1 check (test+test2<test3*4);
277
insert into atacc1 (test,test2,test3) values (4,4,2);
278
ERROR: new row for relation "atacc1" violates check constraint "atacc_test1"
280
insert into atacc1 (test,test2,test3) values (4,4,5);
282
-- lets do some naming tests
283
create table atacc1 (test int check (test>3), test2 int);
284
alter table atacc1 add check (test2>test);
285
-- should fail for $2
286
insert into atacc1 (test2, test) values (3, 4);
287
ERROR: new row for relation "atacc1" violates check constraint "atacc1_check"
289
-- inheritance related tests
290
create table atacc1 (test int);
291
create table atacc2 (test2 int);
292
create table atacc3 (test3 int) inherits (atacc1, atacc2);
293
alter table atacc2 add constraint foo check (test2>0);
294
-- fail and then succeed on atacc2
295
insert into atacc2 (test2) values (-3);
296
ERROR: new row for relation "atacc2" violates check constraint "foo"
297
insert into atacc2 (test2) values (3);
298
-- fail and then succeed on atacc3
299
insert into atacc3 (test2) values (-3);
300
ERROR: new row for relation "atacc3" violates check constraint "foo"
301
insert into atacc3 (test2) values (3);
305
-- let's try only to add only to the parent
306
create table atacc1 (test int);
307
create table atacc2 (test2 int);
308
create table atacc3 (test3 int) inherits (atacc1, atacc2);
309
alter table only atacc2 add constraint foo check (test2>0);
310
-- fail and then succeed on atacc2
311
insert into atacc2 (test2) values (-3);
312
ERROR: new row for relation "atacc2" violates check constraint "foo"
313
insert into atacc2 (test2) values (3);
314
-- both succeed on atacc3
315
insert into atacc3 (test2) values (-3);
316
insert into atacc3 (test2) values (3);
320
-- test unique constraint adding
321
create table atacc1 ( test int ) with oids;
322
-- add a unique constraint
323
alter table atacc1 add constraint atacc_test1 unique (test);
324
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "atacc_test1" for table "atacc1"
325
-- insert first value
326
insert into atacc1 (test) values (2);
328
insert into atacc1 (test) values (2);
329
ERROR: duplicate key violates unique constraint "atacc_test1"
331
insert into atacc1 (test) values (4);
332
-- try adding a unique oid constraint
333
alter table atacc1 add constraint atacc_oid1 unique(oid);
334
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "atacc_oid1" for table "atacc1"
336
-- let's do one where the unique constraint fails when added
337
create table atacc1 ( test int );
338
-- insert soon to be failing rows
339
insert into atacc1 (test) values (2);
340
insert into atacc1 (test) values (2);
341
-- add a unique constraint (fails)
342
alter table atacc1 add constraint atacc_test1 unique (test);
343
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "atacc_test1" for table "atacc1"
344
ERROR: could not create unique index
345
DETAIL: Table contains duplicated values.
346
insert into atacc1 (test) values (3);
348
-- let's do one where the unique constraint fails
349
-- because the column doesn't exist
350
create table atacc1 ( test int );
351
-- add a unique constraint (fails)
352
alter table atacc1 add constraint atacc_test1 unique (test1);
353
ERROR: column "test1" named in key does not exist
355
-- something a little more complicated
356
create table atacc1 ( test int, test2 int);
357
-- add a unique constraint
358
alter table atacc1 add constraint atacc_test1 unique (test, test2);
359
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "atacc_test1" for table "atacc1"
360
-- insert initial value
361
insert into atacc1 (test,test2) values (4,4);
363
insert into atacc1 (test,test2) values (4,4);
364
ERROR: duplicate key violates unique constraint "atacc_test1"
365
-- should all succeed
366
insert into atacc1 (test,test2) values (4,5);
367
insert into atacc1 (test,test2) values (5,4);
368
insert into atacc1 (test,test2) values (5,5);
370
-- lets do some naming tests
371
create table atacc1 (test int, test2 int, unique(test));
372
NOTICE: CREATE TABLE / UNIQUE will create implicit index "atacc1_test_key" for table "atacc1"
373
alter table atacc1 add unique (test2);
374
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "atacc1_test2_key" for table "atacc1"
375
-- should fail for @@ second one @@
376
insert into atacc1 (test2, test) values (3, 3);
377
insert into atacc1 (test2, test) values (2, 3);
378
ERROR: duplicate key violates unique constraint "atacc1_test_key"
380
-- test primary key constraint adding
381
create table atacc1 ( test int ) with oids;
382
-- add a primary key constraint
383
alter table atacc1 add constraint atacc_test1 primary key (test);
384
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc_test1" for table "atacc1"
385
-- insert first value
386
insert into atacc1 (test) values (2);
388
insert into atacc1 (test) values (2);
389
ERROR: duplicate key violates unique constraint "atacc_test1"
391
insert into atacc1 (test) values (4);
392
-- inserting NULL should fail
393
insert into atacc1 (test) values(NULL);
394
ERROR: null value in column "test" violates not-null constraint
395
-- try adding a second primary key (should fail)
396
alter table atacc1 add constraint atacc_oid1 primary key(oid);
397
ERROR: multiple primary keys for table "atacc1" are not allowed
398
-- drop first primary key constraint
399
alter table atacc1 drop constraint atacc_test1 restrict;
400
-- try adding a primary key on oid (should succeed)
401
alter table atacc1 add constraint atacc_oid1 primary key(oid);
402
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc_oid1" for table "atacc1"
404
-- let's do one where the primary key constraint fails when added
405
create table atacc1 ( test int );
406
-- insert soon to be failing rows
407
insert into atacc1 (test) values (2);
408
insert into atacc1 (test) values (2);
409
-- add a primary key (fails)
410
alter table atacc1 add constraint atacc_test1 primary key (test);
411
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc_test1" for table "atacc1"
412
ERROR: could not create unique index
413
DETAIL: Table contains duplicated values.
414
insert into atacc1 (test) values (3);
416
-- let's do another one where the primary key constraint fails when added
417
create table atacc1 ( test int );
418
-- insert soon to be failing row
419
insert into atacc1 (test) values (NULL);
420
-- add a primary key (fails)
421
alter table atacc1 add constraint atacc_test1 primary key (test);
422
ERROR: column "test" contains null values
423
insert into atacc1 (test) values (3);
425
-- let's do one where the primary key constraint fails
426
-- because the column doesn't exist
427
create table atacc1 ( test int );
428
-- add a primary key constraint (fails)
429
alter table atacc1 add constraint atacc_test1 primary key (test1);
430
ERROR: column "test1" named in key does not exist
432
-- something a little more complicated
433
create table atacc1 ( test int, test2 int);
434
-- add a primary key constraint
435
alter table atacc1 add constraint atacc_test1 primary key (test, test2);
436
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc_test1" for table "atacc1"
437
-- try adding a second primary key - should fail
438
alter table atacc1 add constraint atacc_test2 primary key (test);
439
ERROR: multiple primary keys for table "atacc1" are not allowed
440
-- insert initial value
441
insert into atacc1 (test,test2) values (4,4);
443
insert into atacc1 (test,test2) values (4,4);
444
ERROR: duplicate key violates unique constraint "atacc_test1"
445
insert into atacc1 (test,test2) values (NULL,3);
446
ERROR: null value in column "test" violates not-null constraint
447
insert into atacc1 (test,test2) values (3, NULL);
448
ERROR: null value in column "test2" violates not-null constraint
449
insert into atacc1 (test,test2) values (NULL,NULL);
450
ERROR: null value in column "test" violates not-null constraint
451
-- should all succeed
452
insert into atacc1 (test,test2) values (4,5);
453
insert into atacc1 (test,test2) values (5,4);
454
insert into atacc1 (test,test2) values (5,5);
456
-- lets do some naming tests
457
create table atacc1 (test int, test2 int, primary key(test));
458
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "atacc1_pkey" for table "atacc1"
459
-- only first should succeed
460
insert into atacc1 (test2, test) values (3, 3);
461
insert into atacc1 (test2, test) values (2, 3);
462
ERROR: duplicate key violates unique constraint "atacc1_pkey"
463
insert into atacc1 (test2, test) values (1, NULL);
464
ERROR: null value in column "test" violates not-null constraint
466
-- alter table / alter column [set/drop] not null tests
467
-- try altering system catalogs, should fail
468
alter table pg_class alter column relname drop not null;
469
ERROR: permission denied: "pg_class" is a system catalog
470
alter table pg_class alter relname set not null;
471
ERROR: permission denied: "pg_class" is a system catalog
472
-- try altering non-existent table, should fail
473
alter table non_existent alter column bar set not null;
474
ERROR: relation "non_existent" does not exist
475
alter table non_existent alter column bar drop not null;
476
ERROR: relation "non_existent" does not exist
477
-- test setting columns to null and not null and vice versa
478
-- test checking for null values and primary key
479
create table atacc1 (test int not null) with oids;
480
alter table atacc1 add constraint "atacc1_pkey" primary key (test);
481
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc1_pkey" for table "atacc1"
482
alter table atacc1 alter column test drop not null;
483
ERROR: column "test" is in a primary key
484
alter table atacc1 drop constraint "atacc1_pkey";
485
alter table atacc1 alter column test drop not null;
486
insert into atacc1 values (null);
487
alter table atacc1 alter test set not null;
488
ERROR: column "test" contains null values
490
alter table atacc1 alter test set not null;
491
-- try altering a non-existent column, should fail
492
alter table atacc1 alter bar set not null;
493
ERROR: column "bar" of relation "atacc1" does not exist
494
alter table atacc1 alter bar drop not null;
495
ERROR: column "bar" of relation "atacc1" does not exist
496
-- try altering the oid column, should fail
497
alter table atacc1 alter oid set not null;
498
ERROR: cannot alter system column "oid"
499
alter table atacc1 alter oid drop not null;
500
ERROR: cannot alter system column "oid"
501
-- try creating a view and altering that, should fail
502
create view myview as select * from atacc1;
503
alter table myview alter column test drop not null;
504
ERROR: "myview" is not a table
505
alter table myview alter column test set not null;
506
ERROR: "myview" is not a table
510
create table parent (a int);
511
create table child (b varchar(255)) inherits (parent);
512
alter table parent alter a set not null;
513
insert into parent values (NULL);
514
ERROR: null value in column "a" violates not-null constraint
515
insert into child (a, b) values (NULL, 'foo');
516
ERROR: null value in column "a" violates not-null constraint
517
alter table parent alter a drop not null;
518
insert into parent values (NULL);
519
insert into child (a, b) values (NULL, 'foo');
520
alter table only parent alter a set not null;
521
ERROR: column "a" contains null values
522
alter table child alter a set not null;
523
ERROR: column "a" contains null values
525
alter table only parent alter a set not null;
526
insert into parent values (NULL);
527
ERROR: null value in column "a" violates not-null constraint
528
alter table child alter a set not null;
529
insert into child (a, b) values (NULL, 'foo');
530
ERROR: null value in column "a" violates not-null constraint
532
alter table child alter a set not null;
533
insert into child (a, b) values (NULL, 'foo');
534
ERROR: null value in column "a" violates not-null constraint
537
-- test setting and removing default values
538
create table def_test (
540
c2 text default 'initial_default'
542
insert into def_test default values;
543
alter table def_test alter column c1 drop default;
544
insert into def_test default values;
545
alter table def_test alter column c2 drop default;
546
insert into def_test default values;
547
alter table def_test alter column c1 set default 10;
548
alter table def_test alter column c2 set default 'new_default';
549
insert into def_test default values;
550
select * from def_test;
552
----+-----------------
559
-- set defaults to an incorrect type: this should fail
560
alter table def_test alter column c1 set default 'wrong_datatype';
561
ERROR: invalid input syntax for integer: "wrong_datatype"
562
alter table def_test alter column c2 set default 20;
563
-- set defaults on a non-existent column: this should fail
564
alter table def_test alter column c3 set default 30;
565
ERROR: column "c3" of relation "def_test" does not exist
566
-- set defaults on views: we need to create a view, add a rule
567
-- to allow insertions into it, and then alter the view to add
569
create view def_view_test as select * from def_test;
570
create rule def_view_test_ins as
571
on insert to def_view_test
572
do instead insert into def_test select new.*;
573
insert into def_view_test default values;
574
alter table def_view_test alter column c1 set default 45;
575
insert into def_view_test default values;
576
alter table def_view_test alter column c2 set default 'view_default';
577
insert into def_view_test default values;
578
select * from def_view_test;
580
----+-----------------
590
drop rule def_view_test_ins on def_view_test;
591
drop view def_view_test;
593
-- alter table / drop column tests
594
-- try altering system catalogs, should fail
595
alter table pg_class drop column relname;
596
ERROR: permission denied: "pg_class" is a system catalog
597
-- try altering non-existent table, should fail
598
alter table nosuchtable drop column bar;
599
ERROR: relation "nosuchtable" does not exist
600
-- test dropping columns
601
create table atacc1 (a int4 not null, b int4, c int4 not null, d int4) with oids;
602
insert into atacc1 values (1, 2, 3, 4);
603
alter table atacc1 drop a;
604
alter table atacc1 drop a;
605
ERROR: column "a" of relation "atacc1" does not exist
607
select * from atacc1;
613
select * from atacc1 order by a;
614
ERROR: column "a" does not exist
615
select * from atacc1 order by "........pg.dropped.1........";
616
ERROR: column "........pg.dropped.1........" does not exist
617
select * from atacc1 group by a;
618
ERROR: column "a" does not exist
619
select * from atacc1 group by "........pg.dropped.1........";
620
ERROR: column "........pg.dropped.1........" does not exist
621
select atacc1.* from atacc1;
627
select a from atacc1;
628
ERROR: column "a" does not exist
629
select atacc1.a from atacc1;
630
ERROR: column atacc1.a does not exist
631
select b,c,d from atacc1;
637
select a,b,c,d from atacc1;
638
ERROR: column "a" does not exist
639
select * from atacc1 where a = 1;
640
ERROR: column "a" does not exist
641
select "........pg.dropped.1........" from atacc1;
642
ERROR: column "........pg.dropped.1........" does not exist
643
select atacc1."........pg.dropped.1........" from atacc1;
644
ERROR: column atacc1.........pg.dropped.1........ does not exist
645
select "........pg.dropped.1........",b,c,d from atacc1;
646
ERROR: column "........pg.dropped.1........" does not exist
647
select * from atacc1 where "........pg.dropped.1........" = 1;
648
ERROR: column "........pg.dropped.1........" does not exist
650
update atacc1 set a = 3;
651
ERROR: column "a" of relation "atacc1" does not exist
652
update atacc1 set b = 2 where a = 3;
653
ERROR: column "a" does not exist
654
update atacc1 set "........pg.dropped.1........" = 3;
655
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
656
update atacc1 set b = 2 where "........pg.dropped.1........" = 3;
657
ERROR: column "........pg.dropped.1........" does not exist
659
insert into atacc1 values (10, 11, 12, 13);
660
ERROR: INSERT has more expressions than target columns
661
insert into atacc1 values (default, 11, 12, 13);
662
ERROR: INSERT has more expressions than target columns
663
insert into atacc1 values (11, 12, 13);
664
insert into atacc1 (a) values (10);
665
ERROR: column "a" of relation "atacc1" does not exist
666
insert into atacc1 (a) values (default);
667
ERROR: column "a" of relation "atacc1" does not exist
668
insert into atacc1 (a,b,c,d) values (10,11,12,13);
669
ERROR: column "a" of relation "atacc1" does not exist
670
insert into atacc1 (a,b,c,d) values (default,11,12,13);
671
ERROR: column "a" of relation "atacc1" does not exist
672
insert into atacc1 (b,c,d) values (11,12,13);
673
insert into atacc1 ("........pg.dropped.1........") values (10);
674
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
675
insert into atacc1 ("........pg.dropped.1........") values (default);
676
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
677
insert into atacc1 ("........pg.dropped.1........",b,c,d) values (10,11,12,13);
678
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
679
insert into atacc1 ("........pg.dropped.1........",b,c,d) values (default,11,12,13);
680
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
682
delete from atacc1 where a = 3;
683
ERROR: column "a" does not exist
684
delete from atacc1 where "........pg.dropped.1........" = 3;
685
ERROR: column "........pg.dropped.1........" does not exist
687
-- try dropping a non-existent column, should fail
688
alter table atacc1 drop bar;
689
ERROR: column "bar" of relation "atacc1" does not exist
690
-- try dropping the oid column, should succeed
691
alter table atacc1 drop oid;
692
-- try dropping the xmin column, should fail
693
alter table atacc1 drop xmin;
694
ERROR: cannot drop system column "xmin"
695
-- try creating a view and altering that, should fail
696
create view myview as select * from atacc1;
697
select * from myview;
702
alter table myview drop d;
703
ERROR: "myview" is not a table
705
-- test some commands to make sure they fail on the dropped column
707
ERROR: column "a" of relation "atacc1" does not exist
708
analyze atacc1("........pg.dropped.1........");
709
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
710
vacuum analyze atacc1(a);
711
ERROR: column "a" of relation "atacc1" does not exist
712
vacuum analyze atacc1("........pg.dropped.1........");
713
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
714
comment on column atacc1.a is 'testing';
715
ERROR: column "a" of relation "atacc1" does not exist
716
comment on column atacc1."........pg.dropped.1........" is 'testing';
717
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
718
alter table atacc1 alter a set storage plain;
719
ERROR: column "a" of relation "atacc1" does not exist
720
alter table atacc1 alter "........pg.dropped.1........" set storage plain;
721
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
722
alter table atacc1 alter a set statistics 0;
723
ERROR: column "a" of relation "atacc1" does not exist
724
alter table atacc1 alter "........pg.dropped.1........" set statistics 0;
725
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
726
alter table atacc1 alter a set default 3;
727
ERROR: column "a" of relation "atacc1" does not exist
728
alter table atacc1 alter "........pg.dropped.1........" set default 3;
729
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
730
alter table atacc1 alter a drop default;
731
ERROR: column "a" of relation "atacc1" does not exist
732
alter table atacc1 alter "........pg.dropped.1........" drop default;
733
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
734
alter table atacc1 alter a set not null;
735
ERROR: column "a" of relation "atacc1" does not exist
736
alter table atacc1 alter "........pg.dropped.1........" set not null;
737
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
738
alter table atacc1 alter a drop not null;
739
ERROR: column "a" of relation "atacc1" does not exist
740
alter table atacc1 alter "........pg.dropped.1........" drop not null;
741
ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist
742
alter table atacc1 rename a to x;
743
ERROR: column "a" does not exist
744
alter table atacc1 rename "........pg.dropped.1........" to x;
745
ERROR: column "........pg.dropped.1........" does not exist
746
alter table atacc1 add primary key(a);
747
ERROR: column "a" named in key does not exist
748
alter table atacc1 add primary key("........pg.dropped.1........");
749
ERROR: column "........pg.dropped.1........" named in key does not exist
750
alter table atacc1 add unique(a);
751
ERROR: column "a" named in key does not exist
752
alter table atacc1 add unique("........pg.dropped.1........");
753
ERROR: column "........pg.dropped.1........" named in key does not exist
754
alter table atacc1 add check (a > 3);
755
ERROR: column "a" does not exist
756
alter table atacc1 add check ("........pg.dropped.1........" > 3);
757
ERROR: column "........pg.dropped.1........" does not exist
758
create table atacc2 (id int4 unique);
759
NOTICE: CREATE TABLE / UNIQUE will create implicit index "atacc2_id_key" for table "atacc2"
760
alter table atacc1 add foreign key (a) references atacc2(id);
761
ERROR: column "a" referenced in foreign key constraint does not exist
762
alter table atacc1 add foreign key ("........pg.dropped.1........") references atacc2(id);
763
ERROR: column "........pg.dropped.1........" referenced in foreign key constraint does not exist
764
alter table atacc2 add foreign key (id) references atacc1(a);
765
ERROR: column "a" referenced in foreign key constraint does not exist
766
alter table atacc2 add foreign key (id) references atacc1("........pg.dropped.1........");
767
ERROR: column "........pg.dropped.1........" referenced in foreign key constraint does not exist
769
create index "testing_idx" on atacc1(a);
770
ERROR: column "a" does not exist
771
create index "testing_idx" on atacc1("........pg.dropped.1........");
772
ERROR: column "........pg.dropped.1........" does not exist
773
-- test create as and select into
774
insert into atacc1 values (21, 22, 23);
775
create table test1 as select * from atacc1;
783
select * into test2 from atacc1;
791
-- try dropping all columns
792
alter table atacc1 drop c;
793
alter table atacc1 drop d;
794
alter table atacc1 drop b;
795
select * from atacc1;
802
create table parent (a int, b int, c int);
803
insert into parent values (1, 2, 3);
804
alter table parent drop a;
805
create table child (d varchar(255)) inherits (parent);
806
insert into child values (12, 13, 'testing');
807
select * from parent;
820
alter table parent drop c;
821
select * from parent;
837
create table test (a int4, b int4, c int4);
838
insert into test values (1,2,3);
839
alter table test drop a;
842
copy test(a) to stdout;
843
ERROR: column "a" of relation "test" does not exist
844
copy test("........pg.dropped.1........") to stdout;
845
ERROR: column "........pg.dropped.1........" of relation "test" does not exist
846
copy test from stdin;
847
ERROR: extra data after last expected column
848
CONTEXT: COPY test, line 1: "10 11 12"
855
copy test from stdin;
863
copy test(a) from stdin;
864
ERROR: column "a" of relation "test" does not exist
865
copy test("........pg.dropped.1........") from stdin;
866
ERROR: column "........pg.dropped.1........" of relation "test" does not exist
867
copy test(b,c) from stdin;
878
create table dropColumn (a int, b int, e int);
879
create table dropColumnChild (c int) inherits (dropColumn);
880
create table dropColumnAnother (d int) inherits (dropColumnChild);
881
-- these two should fail
882
alter table dropColumnchild drop column a;
883
ERROR: cannot drop inherited column "a"
884
alter table only dropColumnChild drop column b;
885
ERROR: cannot drop inherited column "b"
886
-- these three should work
887
alter table only dropColumn drop column e;
888
alter table dropColumnChild drop column c;
889
alter table dropColumn drop column a;
890
create table renameColumn (a int);
891
create table renameColumnChild (b int) inherits (renameColumn);
892
create table renameColumnAnother (c int) inherits (renameColumnChild);
893
-- these three should fail
894
alter table renameColumnChild rename column a to d;
895
ERROR: cannot rename inherited column "a"
896
alter table only renameColumnChild rename column a to d;
897
ERROR: inherited column "a" must be renamed in child tables too
898
alter table only renameColumn rename column a to d;
899
ERROR: inherited column "a" must be renamed in child tables too
901
alter table renameColumn rename column a to d;
902
alter table renameColumnChild rename column b to a;
904
alter table renameColumn add column w int;
906
alter table only renameColumn add column x int;
907
ERROR: column must be added to child tables too
908
-- Test corner cases in dropping of inherited columns
909
create table p1 (f1 int, f2 int);
910
create table c1 (f1 int not null) inherits(p1);
911
NOTICE: merging column "f1" with inherited definition
912
-- should be rejected since c1.f1 is inherited
913
alter table c1 drop column f1;
914
ERROR: cannot drop inherited column "f1"
916
alter table p1 drop column f1;
917
-- c1.f1 is still there, but no longer inherited
923
alter table c1 drop column f1;
925
ERROR: column "f1" does not exist
926
drop table p1 cascade;
927
NOTICE: drop cascades to table c1
928
create table p1 (f1 int, f2 int);
929
create table c1 () inherits(p1);
930
-- should be rejected since c1.f1 is inherited
931
alter table c1 drop column f1;
932
ERROR: cannot drop inherited column "f1"
933
alter table p1 drop column f1;
934
-- c1.f1 is dropped now, since there is no local definition for it
936
ERROR: column "f1" does not exist
937
drop table p1 cascade;
938
NOTICE: drop cascades to table c1
939
create table p1 (f1 int, f2 int);
940
create table c1 () inherits(p1);
941
-- should be rejected since c1.f1 is inherited
942
alter table c1 drop column f1;
943
ERROR: cannot drop inherited column "f1"
944
alter table only p1 drop column f1;
945
-- c1.f1 is NOT dropped, but must now be considered non-inherited
946
alter table c1 drop column f1;
947
drop table p1 cascade;
948
NOTICE: drop cascades to table c1
949
create table p1 (f1 int, f2 int);
950
create table c1 (f1 int not null) inherits(p1);
951
NOTICE: merging column "f1" with inherited definition
952
-- should be rejected since c1.f1 is inherited
953
alter table c1 drop column f1;
954
ERROR: cannot drop inherited column "f1"
955
alter table only p1 drop column f1;
956
-- c1.f1 is still there, but no longer inherited
957
alter table c1 drop column f1;
958
drop table p1 cascade;
959
NOTICE: drop cascades to table c1
960
create table p1(id int, name text);
961
create table p2(id2 int, name text, height int);
962
create table c1(age int) inherits(p1,p2);
963
NOTICE: merging multiple inherited definitions of column "name"
964
create table gc1() inherits (c1);
965
select relname, attname, attinhcount, attislocal
966
from pg_class join pg_attribute on (pg_class.oid = pg_attribute.attrelid)
967
where relname in ('p1','p2','c1','gc1') and attnum > 0 and not attisdropped
968
order by relname, attnum;
969
relname | attname | attinhcount | attislocal
970
---------+---------+-------------+------------
989
alter table only p1 drop column name;
990
-- should work. Now c1.name is local and inhcount is 0.
991
alter table p2 drop column name;
992
-- should be rejected since its inherited
993
alter table gc1 drop column name;
994
ERROR: cannot drop inherited column "name"
995
-- should work, and drop gc1.name along
996
alter table c1 drop column name;
997
-- should fail: column does not exist
998
alter table gc1 drop column name;
999
ERROR: column "name" of relation "gc1" does not exist
1000
-- should work and drop the attribute in all tables
1001
alter table p2 drop column height;
1002
select relname, attname, attinhcount, attislocal
1003
from pg_class join pg_attribute on (pg_class.oid = pg_attribute.attrelid)
1004
where relname in ('p1','p2','c1','gc1') and attnum > 0 and not attisdropped
1005
order by relname, attnum;
1006
relname | attname | attinhcount | attislocal
1007
---------+---------+-------------+------------
1018
drop table p1, p2 cascade;
1019
NOTICE: drop cascades to table c1
1020
NOTICE: drop cascades to table gc1
1022
-- Test the ALTER TABLE WITHOUT OIDS command
1024
create table altstartwith (col integer) with oids;
1025
insert into altstartwith values (1);
1026
select oid > 0, * from altstartwith;
1032
alter table altstartwith set without oids;
1033
select oid > 0, * from altstartwith; -- fails
1034
ERROR: column "oid" does not exist
1035
select * from altstartwith;
1041
-- Run inheritance tests
1042
create table altwithoid (col integer) with oids;
1043
-- Inherits parents oid column
1044
create table altinhoid () inherits (altwithoid) without oids;
1045
insert into altinhoid values (1);
1046
select oid > 0, * from altwithoid;
1052
select oid > 0, * from altinhoid;
1058
alter table altwithoid set without oids;
1059
alter table altinhoid set without oids;
1060
select oid > 0, * from altwithoid; -- fails
1061
ERROR: column "oid" does not exist
1062
select oid > 0, * from altinhoid; -- fails
1063
ERROR: column "oid" does not exist
1064
select * from altwithoid;
1070
select * from altinhoid;
1076
-- test renumbering of child-table columns in inherited operations
1077
create table p1 (f1 int);
1078
create table c1 (f2 text, f3 int) inherits (p1);
1079
alter table p1 add column a1 int check (a1 > 0);
1080
alter table p1 add column f2 text;
1081
NOTICE: merging definition of column "f2" for child "c1"
1082
insert into p1 values (1,2,'abc');
1083
insert into c1 values(11,'xyz',33,0); -- should fail
1084
ERROR: new row for relation "c1" violates check constraint "c1_a1_check"
1085
insert into c1 values(11,'xyz',33,22);
1093
update p1 set a1 = a1 + 1, f2 = upper(f2);
1101
drop table p1 cascade;
1102
NOTICE: drop cascades to table c1
1103
NOTICE: drop cascades to constraint c1_a1_check on table c1
1104
-- test that operations with a dropped column do not try to reference
1106
create domain mytype as text;
1107
create temp table foo (f1 text, f2 mytype, f3 text);
1108
insert into foo values('aa','bb','cc');
1115
drop domain mytype cascade;
1116
NOTICE: drop cascades to table foo column f2
1123
insert into foo values('qq','rr');
1131
update foo set f3 = 'zz';
1139
select f3,max(f1) from foo group by f3;
1145
-- Simple tests for alter table column type
1146
alter table foo alter f1 TYPE integer; -- fails
1147
ERROR: column "f1" cannot be cast to type "pg_catalog.int4"
1148
alter table foo alter f1 TYPE varchar(10);
1149
create table anothertab (atcol1 serial8, atcol2 boolean,
1150
constraint anothertab_chk check (atcol1 <= 3));
1151
NOTICE: CREATE TABLE will create implicit sequence "anothertab_atcol1_seq" for serial column "anothertab.atcol1"
1152
insert into anothertab (atcol1, atcol2) values (default, true);
1153
insert into anothertab (atcol1, atcol2) values (default, false);
1154
select * from anothertab;
1161
alter table anothertab alter column atcol1 type boolean; -- fails
1162
ERROR: column "atcol1" cannot be cast to type "pg_catalog.bool"
1163
alter table anothertab alter column atcol1 type integer;
1164
select * from anothertab;
1171
insert into anothertab (atcol1, atcol2) values (45, null); -- fails
1172
ERROR: new row for relation "anothertab" violates check constraint "anothertab_chk"
1173
insert into anothertab (atcol1, atcol2) values (default, null);
1174
select * from anothertab;
1182
alter table anothertab alter column atcol2 type text
1183
using case when atcol2 is true then 'IT WAS TRUE'
1184
when atcol2 is false then 'IT WAS FALSE'
1185
else 'IT WAS NULL!' end;
1186
select * from anothertab;
1188
--------+--------------
1194
alter table anothertab alter column atcol1 type boolean
1195
using case when atcol1 % 2 = 0 then true else false end; -- fails
1196
ERROR: default for column "atcol1" cannot be cast to type "pg_catalog.bool"
1197
alter table anothertab alter column atcol1 drop default;
1198
alter table anothertab alter column atcol1 type boolean
1199
using case when atcol1 % 2 = 0 then true else false end; -- fails
1200
ERROR: operator does not exist: boolean <= integer
1201
HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts.
1202
alter table anothertab drop constraint anothertab_chk;
1203
alter table anothertab alter column atcol1 type boolean
1204
using case when atcol1 % 2 = 0 then true else false end;
1205
select * from anothertab;
1207
--------+--------------
1213
drop table anothertab;
1214
create table another (f1 int, f2 text);
1215
insert into another values(1, 'one');
1216
insert into another values(2, 'two');
1217
insert into another values(3, 'three');
1218
select * from another;
1227
alter f1 type text using f2 || ' more',
1228
alter f2 type bigint using f1 * 10;
1229
select * from another;