diff options
| author | Michael P | 2011-03-29 19:36:37 +0000 |
|---|---|---|
| committer | Pavan Deolasee | 2011-05-24 10:15:38 +0000 |
| commit | 1e1dc8653b58622fd2531defc585facc114df0f5 (patch) | |
| tree | 712fbd1663ff66edc4222358bb4bfec78d5d14dd | |
| parent | 7dccc3dca57147acbce13cd6721022ec94671e4b (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.c | 11 |
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 { |
