Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
d711532b
Commit
d711532b
authored
Jan 30, 2017
by
Peter Eisentraut
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Additional test coverage for sequences
Reviewed-by:
Michael Paquier
<
michael.paquier@gmail.com
>
parent
308d8682
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
319 additions
and
40 deletions
+319
-40
src/test/regress/expected/sequence.out
src/test/regress/expected/sequence.out
+222
-31
src/test/regress/sql/sequence.sql
src/test/regress/sql/sequence.sql
+97
-9
No files found.
src/test/regress/expected/sequence.out
View file @
d711532b
This diff is collapsed.
Click to expand it.
src/test/regress/sql/sequence.sql
View file @
d711532b
--
-- CREATE SEQUENCE
--
-- various error cases
CREATE
UNLOGGED
SEQUENCE
sequence_testx
;
CREATE
SEQUENCE
sequence_testx
INCREMENT
BY
0
;
CREATE
SEQUENCE
sequence_testx
INCREMENT
BY
-
1
MINVALUE
20
;
CREATE
SEQUENCE
sequence_testx
INCREMENT
BY
1
MAXVALUE
-
20
;
CREATE
SEQUENCE
sequence_testx
INCREMENT
BY
-
1
START
10
;
CREATE
SEQUENCE
sequence_testx
INCREMENT
BY
1
START
-
10
;
CREATE
SEQUENCE
sequence_testx
CACHE
0
;
-- OWNED BY errors
CREATE
SEQUENCE
sequence_testx
OWNED
BY
nobody
;
-- nonsense word
CREATE
SEQUENCE
sequence_testx
OWNED
BY
pg_tables
.
tablename
;
-- not a table
CREATE
SEQUENCE
sequence_testx
OWNED
BY
pg_class
.
relname
;
-- not same schema
CREATE
TABLE
sequence_test_table
(
a
int
);
CREATE
SEQUENCE
sequence_testx
OWNED
BY
sequence_test_table
.
b
;
-- wrong column
DROP
TABLE
sequence_test_table
;
---
---
--- test creation of SERIAL column
--- test creation of SERIAL column
---
---
...
@@ -120,43 +141,80 @@ DROP SEQUENCE myseq2;
...
@@ -120,43 +141,80 @@ DROP SEQUENCE myseq2;
--
--
ALTER
SEQUENCE
IF
EXISTS
sequence_test2
RESTART
WITH
24
ALTER
SEQUENCE
IF
EXISTS
sequence_test2
RESTART
WITH
24
INCREMENT
BY
4
MAXVALUE
36
MINVALUE
5
CYCLE
;
INCREMENT
BY
4
MAXVALUE
36
MINVALUE
5
CYCLE
;
ALTER
SEQUENCE
pg_class
CYCLE
;
-- error, not a sequence
CREATE
SEQUENCE
sequence_test2
START
WITH
32
;
CREATE
SEQUENCE
sequence_test2
START
WITH
32
;
CREATE
SEQUENCE
sequence_test4
INCREMENT
BY
-
1
;
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test4'
);
ALTER
SEQUENCE
sequence_test2
RESTART
;
SELECT
nextval
(
'sequence_test2'
);
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
0
;
-- error
ALTER
SEQUENCE
sequence_test4
RESTART
WITH
40
;
-- error
-- test CYCLE and NO CYCLE
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
24
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
24
INCREMENT
BY
4
MAXVALUE
36
MINVALUE
5
CYCLE
;
INCREMENT
BY
4
MAXVALUE
36
MINVALUE
5
CYCLE
;
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
-- cycled
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
24
NO
CYCLE
;
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
-- error
ALTER
SEQUENCE
sequence_test2
RESTART
;
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
-
24
START
WITH
-
24
INCREMENT
BY
-
4
MINVALUE
-
36
MAXVALUE
-
5
CYCLE
;
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
-- cycled
ALTER
SEQUENCE
sequence_test2
RESTART
WITH
-
24
NO
CYCLE
;
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
SELECT
nextval
(
'sequence_test2'
);
-- error
-- reset
ALTER
SEQUENCE
IF
EXISTS
sequence_test2
RESTART
WITH
32
START
WITH
32
INCREMENT
BY
4
MAXVALUE
36
MINVALUE
5
CYCLE
;
SELECT
setval
(
'sequence_test2'
,
-
100
);
-- error
SELECT
setval
(
'sequence_test2'
,
100
);
-- error
SELECT
setval
(
'sequence_test2'
,
5
);
CREATE
SEQUENCE
sequence_test3
;
-- not read from, to test is_called
CREATE
SEQUENCE
sequence_test3
;
-- not read from, to test is_called
-- Information schema
-- Information schema
SELECT
*
FROM
information_schema
.
sequences
WHERE
sequence_name
IN
SELECT
*
FROM
information_schema
.
sequences
(
'sequence_test2'
,
'sequence_test3'
,
'serialtest2_f2_seq'
,
'serialtest2_f3_seq'
,
WHERE
sequence_name
~
ANY
(
ARRAY
[
'sequence_test'
,
'serialtest'
])
'serialtest2_f4_seq'
,
'serialtest2_f5_seq'
,
'serialtest2_f6_seq'
)
ORDER
BY
sequence_name
ASC
;
ORDER
BY
sequence_name
ASC
;
SELECT
schemaname
,
sequencename
,
start_value
,
min_value
,
max_value
,
increment_by
,
cycle
,
cache_size
,
last_value
SELECT
schemaname
,
sequencename
,
start_value
,
min_value
,
max_value
,
increment_by
,
cycle
,
cache_size
,
last_value
FROM
pg_sequences
FROM
pg_sequences
WHERE
sequencename
IN
WHERE
sequencename
~
ANY
(
ARRAY
[
'sequence_test'
,
'serialtest'
])
(
'sequence_test2'
,
'sequence_test3'
,
'serialtest2_f2_seq'
,
'serialtest2_f3_seq'
,
'serialtest2_f4_seq'
,
'serialtest2_f5_seq'
,
'serialtest2_f6_seq'
)
ORDER
BY
sequencename
ASC
;
ORDER
BY
sequencename
ASC
;
SELECT
*
FROM
pg_sequence_parameters
(
'sequence_test4'
::
regclass
);
-- Test comments
-- Test comments
COMMENT
ON
SEQUENCE
asdf
IS
'won
''
t work'
;
COMMENT
ON
SEQUENCE
asdf
IS
'won
''
t work'
;
COMMENT
ON
SEQUENCE
sequence_test2
IS
'will work'
;
COMMENT
ON
SEQUENCE
sequence_test2
IS
'will work'
;
...
@@ -181,6 +239,17 @@ SELECT lastval();
...
@@ -181,6 +239,17 @@ SELECT lastval();
CREATE
USER
regress_seq_user
;
CREATE
USER
regress_seq_user
;
-- Test sequences in read-only transactions
CREATE
TEMPORARY
SEQUENCE
sequence_test_temp1
;
START
TRANSACTION
READ
ONLY
;
SELECT
nextval
(
'sequence_test_temp1'
);
-- ok
SELECT
nextval
(
'sequence_test2'
);
-- error
ROLLBACK
;
START
TRANSACTION
READ
ONLY
;
SELECT
setval
(
'sequence_test_temp1'
,
1
);
-- ok
SELECT
setval
(
'sequence_test2'
,
1
);
-- error
ROLLBACK
;
-- privileges tests
-- privileges tests
-- nextval
-- nextval
...
@@ -264,6 +333,25 @@ GRANT USAGE ON seq3 TO regress_seq_user;
...
@@ -264,6 +333,25 @@ GRANT USAGE ON seq3 TO regress_seq_user;
SELECT
lastval
();
SELECT
lastval
();
ROLLBACK
;
ROLLBACK
;
-- setval
BEGIN
;
SET
LOCAL
SESSION
AUTHORIZATION
regress_seq_user
;
CREATE
SEQUENCE
seq3
;
REVOKE
ALL
ON
seq3
FROM
regress_seq_user
;
SAVEPOINT
save
;
SELECT
setval
(
'seq3'
,
5
);
ROLLBACK
TO
save
;
GRANT
UPDATE
ON
seq3
TO
regress_seq_user
;
SELECT
setval
(
'seq3'
,
5
);
SELECT
nextval
(
'seq3'
);
ROLLBACK
;
-- ALTER SEQUENCE
BEGIN
;
SET
LOCAL
SESSION
AUTHORIZATION
regress_seq_user
;
ALTER
SEQUENCE
sequence_test2
START
WITH
1
;
ROLLBACK
;
-- Sequences should get wiped out as well:
-- Sequences should get wiped out as well:
DROP
TABLE
serialTest
,
serialTest2
;
DROP
TABLE
serialTest
,
serialTest2
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment