Re: current version: Patch - Have psql show current values - Mailing list pgsql-patches
| From | Dhanaraj M |
|---|---|
| Subject | Re: current version: Patch - Have psql show current values |
| Date | |
| Msg-id | 44607CC9.1020900@sun.com Whole thread Raw |
| In response to | Re: current version: Patch - Have psql show current values (Bruce Momjian <pgman@candle.pha.pa.us>) |
| Responses |
Re: current version: Patch - Have psql show current values
|
| List | pgsql-patches |
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
pgsql-patches by date: