diff options
author | Neil Conway <neilc@samurai.com> | 2005-06-07 07:08:35 +0000 |
---|---|---|
committer | Neil Conway <neilc@samurai.com> | 2005-06-07 07:08:35 +0000 |
commit | 657c098e41b0bb29d30d13d9aa1ac858a07f3493 (patch) | |
tree | 6d55885d0e4fd2dbeec8edde846fc33dcebdcebe /src/test | |
parent | c59887f91618b95f42a33d4c62dac35165a7910a (diff) | |
download | postgresql-657c098e41b0bb29d30d13d9aa1ac858a07f3493.tar.gz postgresql-657c098e41b0bb29d30d13d9aa1ac858a07f3493.zip |
Add a function lastval(), which returns the value returned by the
last nextval() or setval() performed by the current session. Update the
docs, add regression tests, and bump the catalog version. Patch from
Dennis Björklund, various improvements by Neil Conway.
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/sequence.out | 59 | ||||
-rw-r--r-- | src/test/regress/sql/sequence.sql | 27 |
2 files changed, 86 insertions, 0 deletions
diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out index 040506d4deb..6e919d1f1de 100644 --- a/src/test/regress/expected/sequence.out +++ b/src/test/regress/expected/sequence.out @@ -76,3 +76,62 @@ COMMENT ON SEQUENCE asdf IS 'won''t work'; ERROR: relation "asdf" does not exist COMMENT ON SEQUENCE sequence_test2 IS 'will work'; COMMENT ON SEQUENCE sequence_test2 IS NULL; +-- Test lastval() +CREATE SEQUENCE seq; +SELECT nextval('seq'); + nextval +--------- + 1 +(1 row) + +SELECT lastval(); + lastval +--------- + 1 +(1 row) + +SELECT setval('seq', 99); + setval +-------- + 99 +(1 row) + +SELECT lastval(); + lastval +--------- + 99 +(1 row) + +CREATE SEQUENCE seq2; +SELECT nextval('seq2'); + nextval +--------- + 1 +(1 row) + +SELECT lastval(); + lastval +--------- + 1 +(1 row) + +DROP SEQUENCE seq2; +-- should fail +SELECT lastval(); +ERROR: lastval is not yet defined in this session +CREATE USER seq_user; +BEGIN; +SET LOCAL SESSION AUTHORIZATION seq_user; +CREATE SEQUENCE seq3; +SELECT nextval('seq3'); + nextval +--------- + 1 +(1 row) + +REVOKE ALL ON seq3 FROM seq_user; +SELECT lastval(); +ERROR: permission denied for sequence seq3 +ROLLBACK; +DROP USER seq_user; +DROP SEQUENCE seq; diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql index 07f5765faf2..a8b73c02bf8 100644 --- a/src/test/regress/sql/sequence.sql +++ b/src/test/regress/sql/sequence.sql @@ -42,3 +42,30 @@ COMMENT ON SEQUENCE asdf IS 'won''t work'; COMMENT ON SEQUENCE sequence_test2 IS 'will work'; COMMENT ON SEQUENCE sequence_test2 IS NULL; +-- Test lastval() +CREATE SEQUENCE seq; +SELECT nextval('seq'); +SELECT lastval(); +SELECT setval('seq', 99); +SELECT lastval(); + +CREATE SEQUENCE seq2; +SELECT nextval('seq2'); +SELECT lastval(); + +DROP SEQUENCE seq2; +-- should fail +SELECT lastval(); + +CREATE USER seq_user; + +BEGIN; +SET LOCAL SESSION AUTHORIZATION seq_user; +CREATE SEQUENCE seq3; +SELECT nextval('seq3'); +REVOKE ALL ON seq3 FROM seq_user; +SELECT lastval(); +ROLLBACK; + +DROP USER seq_user; +DROP SEQUENCE seq;
\ No newline at end of file |