Skip to content

Commit 431ab0e

Browse files
committed
Add some regression tests for serial pseudotypes.
Josh Kupershmidt
1 parent 61307dc commit 431ab0e

File tree

2 files changed

+162
-6
lines changed

2 files changed

+162
-6
lines changed

src/test/regress/expected/sequence.out

Lines changed: 103 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,84 @@ SELECT * FROM serialTest;
1616
force | 100
1717
(3 rows)
1818

19+
-- test smallserial / bigserial
20+
CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2,
21+
f5 bigserial, f6 serial8);
22+
NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f2_seq" for serial column "serialtest2.f2"
23+
NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f3_seq" for serial column "serialtest2.f3"
24+
NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f4_seq" for serial column "serialtest2.f4"
25+
NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f5_seq" for serial column "serialtest2.f5"
26+
NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f6_seq" for serial column "serialtest2.f6"
27+
INSERT INTO serialTest2 (f1)
28+
VALUES ('test_defaults');
29+
INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6)
30+
VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807,
31+
9223372036854775807),
32+
('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808,
33+
-9223372036854775808);
34+
-- All these INSERTs should fail:
35+
INSERT INTO serialTest2 (f1, f3)
36+
VALUES ('bogus', -32769);
37+
ERROR: smallint out of range
38+
INSERT INTO serialTest2 (f1, f4)
39+
VALUES ('bogus', -32769);
40+
ERROR: smallint out of range
41+
INSERT INTO serialTest2 (f1, f3)
42+
VALUES ('bogus', 32768);
43+
ERROR: smallint out of range
44+
INSERT INTO serialTest2 (f1, f4)
45+
VALUES ('bogus', 32768);
46+
ERROR: smallint out of range
47+
INSERT INTO serialTest2 (f1, f5)
48+
VALUES ('bogus', -9223372036854775809);
49+
ERROR: bigint out of range
50+
INSERT INTO serialTest2 (f1, f6)
51+
VALUES ('bogus', -9223372036854775809);
52+
ERROR: bigint out of range
53+
INSERT INTO serialTest2 (f1, f5)
54+
VALUES ('bogus', 9223372036854775808);
55+
ERROR: bigint out of range
56+
INSERT INTO serialTest2 (f1, f6)
57+
VALUES ('bogus', 9223372036854775808);
58+
ERROR: bigint out of range
59+
SELECT * FROM serialTest2 ORDER BY f2 ASC;
60+
f1 | f2 | f3 | f4 | f5 | f6
61+
---------------+-------------+--------+--------+----------------------+----------------------
62+
test_min_vals | -2147483648 | -32768 | -32768 | -9223372036854775808 | -9223372036854775808
63+
test_defaults | 1 | 1 | 1 | 1 | 1
64+
test_max_vals | 2147483647 | 32767 | 32767 | 9223372036854775807 | 9223372036854775807
65+
(3 rows)
66+
67+
SELECT nextval('serialTest2_f2_seq');
68+
nextval
69+
---------
70+
2
71+
(1 row)
72+
73+
SELECT nextval('serialTest2_f3_seq');
74+
nextval
75+
---------
76+
2
77+
(1 row)
78+
79+
SELECT nextval('serialTest2_f4_seq');
80+
nextval
81+
---------
82+
2
83+
(1 row)
84+
85+
SELECT nextval('serialTest2_f5_seq');
86+
nextval
87+
---------
88+
2
89+
(1 row)
90+
91+
SELECT nextval('serialTest2_f6_seq');
92+
nextval
93+
---------
94+
2
95+
(1 row)
96+
1997
-- basic sequence operations using both text and oid references
2098
CREATE SEQUENCE sequence_test;
2199
SELECT nextval('sequence_test'::text);
@@ -221,11 +299,19 @@ SELECT nextval('sequence_test2');
221299
(1 row)
222300

223301
-- Information schema
224-
SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2');
225-
sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
226-
------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
227-
regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
228-
(1 row)
302+
SELECT * FROM information_schema.sequences WHERE sequence_name IN
303+
('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
304+
'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
305+
ORDER BY sequence_name ASC;
306+
sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
307+
------------------+-----------------+--------------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------------+-----------+--------------
308+
regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
309+
regression | public | serialtest2_f2_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
310+
regression | public | serialtest2_f3_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
311+
regression | public | serialtest2_f4_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
312+
regression | public | serialtest2_f5_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
313+
regression | public | serialtest2_f6_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
314+
(6 rows)
229315

230316
-- Test comments
231317
COMMENT ON SEQUENCE asdf IS 'won''t work';
@@ -289,5 +375,17 @@ REVOKE ALL ON seq3 FROM seq_user;
289375
SELECT lastval();
290376
ERROR: permission denied for sequence seq3
291377
ROLLBACK;
378+
-- Sequences should get wiped out as well:
379+
DROP TABLE serialTest, serialTest2;
380+
-- Make sure sequences are gone:
381+
SELECT * FROM information_schema.sequences WHERE sequence_name IN
382+
('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
383+
'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
384+
ORDER BY sequence_name ASC;
385+
sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
386+
------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
387+
regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
388+
(1 row)
389+
292390
DROP USER seq_user;
293391
DROP SEQUENCE seq;

src/test/regress/sql/sequence.sql

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,52 @@ INSERT INTO serialTest VALUES ('wrong', NULL);
1111

1212
SELECT * FROM serialTest;
1313

14+
-- test smallserial / bigserial
15+
CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2,
16+
f5 bigserial, f6 serial8);
17+
18+
INSERT INTO serialTest2 (f1)
19+
VALUES ('test_defaults');
20+
21+
INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6)
22+
VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807,
23+
9223372036854775807),
24+
('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808,
25+
-9223372036854775808);
26+
27+
-- All these INSERTs should fail:
28+
INSERT INTO serialTest2 (f1, f3)
29+
VALUES ('bogus', -32769);
30+
31+
INSERT INTO serialTest2 (f1, f4)
32+
VALUES ('bogus', -32769);
33+
34+
INSERT INTO serialTest2 (f1, f3)
35+
VALUES ('bogus', 32768);
36+
37+
INSERT INTO serialTest2 (f1, f4)
38+
VALUES ('bogus', 32768);
39+
40+
INSERT INTO serialTest2 (f1, f5)
41+
VALUES ('bogus', -9223372036854775809);
42+
43+
INSERT INTO serialTest2 (f1, f6)
44+
VALUES ('bogus', -9223372036854775809);
45+
46+
INSERT INTO serialTest2 (f1, f5)
47+
VALUES ('bogus', 9223372036854775808);
48+
49+
INSERT INTO serialTest2 (f1, f6)
50+
VALUES ('bogus', 9223372036854775808);
51+
52+
SELECT * FROM serialTest2 ORDER BY f2 ASC;
53+
54+
SELECT nextval('serialTest2_f2_seq');
55+
SELECT nextval('serialTest2_f3_seq');
56+
SELECT nextval('serialTest2_f4_seq');
57+
SELECT nextval('serialTest2_f5_seq');
58+
SELECT nextval('serialTest2_f6_seq');
59+
1460
-- basic sequence operations using both text and oid references
1561
CREATE SEQUENCE sequence_test;
1662

@@ -86,7 +132,10 @@ SELECT nextval('sequence_test2');
86132
SELECT nextval('sequence_test2');
87133

88134
-- Information schema
89-
SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2');
135+
SELECT * FROM information_schema.sequences WHERE sequence_name IN
136+
('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
137+
'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
138+
ORDER BY sequence_name ASC;
90139

91140
-- Test comments
92141
COMMENT ON SEQUENCE asdf IS 'won''t work';
@@ -118,5 +167,14 @@ REVOKE ALL ON seq3 FROM seq_user;
118167
SELECT lastval();
119168
ROLLBACK;
120169

170+
-- Sequences should get wiped out as well:
171+
DROP TABLE serialTest, serialTest2;
172+
173+
-- Make sure sequences are gone:
174+
SELECT * FROM information_schema.sequences WHERE sequence_name IN
175+
('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
176+
'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
177+
ORDER BY sequence_name ASC;
178+
121179
DROP USER seq_user;
122180
DROP SEQUENCE seq;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy