Commit 16a906f5 authored by Robert Haas's avatar Robert Haas

Make DISCARD SEQUENCES also discard the last used sequence.

Otherwise, we access already-freed memory.  Oops.

Report by Michael Paquier.  Fix by me.
parent 689746c0
...@@ -1617,4 +1617,6 @@ ResetSequenceCaches(void) ...@@ -1617,4 +1617,6 @@ ResetSequenceCaches(void)
free(seqtab); free(seqtab);
seqtab = next; seqtab = next;
} }
last_used_seq = NULL;
} }
...@@ -344,6 +344,9 @@ SELECT lastval(); ...@@ -344,6 +344,9 @@ SELECT lastval();
99 99
(1 row) (1 row)
DISCARD SEQUENCES;
SELECT lastval();
ERROR: lastval is not yet defined in this session
CREATE SEQUENCE seq2; CREATE SEQUENCE seq2;
SELECT nextval('seq2'); SELECT nextval('seq2');
nextval nextval
......
...@@ -154,6 +154,8 @@ SELECT nextval('seq'); ...@@ -154,6 +154,8 @@ SELECT nextval('seq');
SELECT lastval(); SELECT lastval();
SELECT setval('seq', 99); SELECT setval('seq', 99);
SELECT lastval(); SELECT lastval();
DISCARD SEQUENCES;
SELECT lastval();
CREATE SEQUENCE seq2; CREATE SEQUENCE seq2;
SELECT nextval('seq2'); SELECT nextval('seq2');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment