summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael P2011-03-29 19:36:37 +0000
committerPavan Deolasee2011-05-24 10:15:38 +0000
commit1e1dc8653b58622fd2531defc585facc114df0f5 (patch)
tree712fbd1663ff66edc4222358bb4bfec78d5d14dd
parent7dccc3dca57147acbce13cd6721022ec94671e4b (diff)
Fix for bug 3240318: support for lastval
Last value was simply not saved in cache after nextval and setval.
-rw-r--r--src/backend/commands/sequence.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 0b3e0e503c..2f9e6f6e2a 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -624,6 +624,8 @@ nextval_internal(Oid relid)
elm->last = result; /* last returned number */
elm->cached = result; /* last fetched number */
elm->last_valid = true;
+
+ last_used_seq = elm;
}
else
{
@@ -939,6 +941,15 @@ do_setval(Oid relid, int64 next, bool iscalled)
/* Update the on-disk data */
seq->last_value = next; /* last fetched number */
seq->is_called = iscalled;
+ seq->log_cnt = (iscalled) ? 0 : 1;
+
+ if (iscalled)
+ {
+ elm->last = next; /* last returned number */
+ elm->last_valid = true;
+ }
+
+ elm->cached = elm->last;
}
else
{