Bruce Momjian wrote:
I am thinking we just add another column to the \d display for sequences
showing the current value.
---------------------------------------------------------------------------
As suggested in the previous mails, I tried to use the following to
display the seq. value.
select last_value from <seq>.
However, it was not possible to display the seq. value using this.
Hence, I made a small change in the currval() function, so that it
retrieves the last_value
even if the the value is not cached.
I hope this patch will be more suitable for this issue. Pl. look at the
patch.
Thanks
Dhanaraj
*** ./src/backend/commands/sequence.c.orig Tue May 2 14:51:03 2006
--- ./src/backend/commands/sequence.c Tue May 9 13:52:38 2006
***************
*** 605,610 ****
--- 605,612 ----
int64 result;
SeqTable elm;
Relation seqrel;
+ Form_pg_sequence seq;
+ Buffer buf;
/* open and AccessShareLock sequence */
init_sequence(relid, &elm, &seqrel);
***************
*** 616,632 ****
errmsg("permission denied for sequence %s",
RelationGetRelationName(seqrel))));
! if (elm->increment == 0) /* nextval/read_info were not called */
! ereport(ERROR,
! (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
! errmsg("currval of sequence \"%s\" is not yet defined in this session",
! RelationGetRelationName(seqrel))));
! result = elm->last;
! relation_close(seqrel, NoLock);
! PG_RETURN_INT64(result);
}
Datum
--- 618,641 ----
errmsg("permission denied for sequence %s",
RelationGetRelationName(seqrel))));
! if ((elm->increment != 0) ||(elm->last != elm->cached)) /* some numbers were cached */
! {
! result = elm->last;
! relation_close(seqrel, NoLock);
! PG_RETURN_INT64(result);
! }
! /* lock page' buffer and read tuple if not cached */
! seq = read_info(elm, seqrel, &buf);
! result = seq->last_value;
! UnlockReleaseBuffer(buf);
! relation_close(seqrel, NoLock);
! seqtab = elm->next;
! free(elm);
!
! PG_RETURN_INT64(result);
}
Datum
*** ./src/bin/psql/describe.c.orig Thu Apr 27 04:45:45 2006
--- ./src/bin/psql/describe.c Tue May 9 16:26:10 2006
***************
*** 1480,1485 ****
--- 1480,1488 ----
_("table"), _("view"), _("index"), _("sequence"),
_("special"), _("Type"), _("Owner"));
+ if (showSeq && !showTables)
+ appendPQExpBuffer(&buf,",\n currval(CAST(c.relname AS pg_catalog.text)) as \"%s\"",_("value"));
+
if (showIndexes)
appendPQExpBuffer(&buf,
",\n c2.relname as \"%s\"",
No differences encountered
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster