git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 689746c)
Make DISCARD SEQUENCES also discard the last used sequence.
Mon, 7 Oct 2013 19:55:56 +0000 (15:55 -0400)
Mon, 7 Oct 2013 19:55:56 +0000 (15:55 -0400)
Otherwise, we access already-freed memory. Oops.

Report by Michael Paquier. Fix by me.


diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index eba7cad6ec36138f9982c6cc62212d6b4008d12d..f3344c6207d513f1d795fdc5cf3169df05d9d5f4 100644 (file)
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -1617,4 +1617,6 @@ ResetSequenceCaches(void)
free(seqtab);
seqtab = next;
}
+
+ last_used_seq = NULL;
}
diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out
index 37e9a8cfa1afdea6b749b6813fbd6e5b4d0a08b0..8fcb70015fb58e5b22355e48f89fd2d25276d4aa 100644 (file)
--- a/src/test/regress/expected/sequence.out
+++ b/src/test/regress/expected/sequence.out
@@ -344,6 +344,9 @@ SELECT lastval();
99
(1 row)
+DISCARD SEQUENCES;
+SELECT lastval();
+ERROR: lastval is not yet defined in this session
CREATE SEQUENCE seq2;
SELECT nextval('seq2');
nextval
diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql
index 31cbc926c029a468c3407e2ad9d9f4e22bdb04b0..be5e9a97bf40e8c5afd8951faebd6fb0b491bdb8 100644 (file)
--- a/src/test/regress/sql/sequence.sql
+++ b/src/test/regress/sql/sequence.sql
@@ -154,6 +154,8 @@ SELECT nextval('seq');
SELECT lastval();
SELECT setval('seq', 99);
SELECT lastval();
+DISCARD SEQUENCES;
+SELECT lastval();
CREATE SEQUENCE seq2;
SELECT nextval('seq2');
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /