Re: [SQL] abusing an aggregate funct

From: Postgres DBA <postgres(at)nest(dot)bistbn(dot)com>
To: Marc Howard Zuckman <marc(at)fallon(dot)classyad(dot)com>
Cc: M Simms <grim(at)argh(dot)demon(dot)co(dot)uk>, SQL Mailing List <pgsql-sql(at)postgreSQL(dot)org>
Subject: Re: [SQL] abusing an aggregate funct
Date: 1998-11-16 08:31:45
Message-ID: Pine.BSF.4.02.9811161009520.14966-100000@nest.bistbn.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Sun, 15 Nov 1998, Marc Howard Zuckman wrote:

> On Sun, 15 Nov 1998, Postgres DBA wrote:
>
> >
> >
> > On Sun, 15 Nov 1998, M Simms wrote:
> >
> > > > Unfortunately, solution using sequences is not so good unless you don't
> > > > suppose to use access to that table from some simultaneously running
> > > > sessions. The problem is that every sessions accessing this additional
> > > > sequence with nextval() will get its own pool of values for the
> > > > sequence, so early or later you'll get some gaps in records numbering
> > > > because of at least on of two reasons:
> > >
> > > >From the manpage of create sequence
> > >
> > >
> > > Low-level locking is used to enable multiple simultaneous
> > > calls to a generator.
> > >
> > > Doesnt this mean it will work for this task?
> > >
> > >
> >
> > Sure, you can access one sequence from a couple of sessions at once but
> > it the only thing is guaranteed is UNIQUENESS of values you get from
> > nestval() across one sequence. Although nobody can promise you that there
> > will no gaps... There are lots of reasons, I mentioned just some of them
> > (see my previous posting in this thread)
> >
> > Aleksey
> >
> >
> >
> >
>
> My understanding is that if you do not enable the cache feature
> of the sequence, there will be no gaps. Of course, disabling the
> cache slows the transaction.

You are extremly right:-) Nevertheless, don't forget of another problem:
you CAN'T call curval() before nextval(). So, every time you want to check
the maximum row number in the table you should increase sequence counter
using nextval() -- here is real source of gaps, and I don't know if it is
possible to overcome it :_( The only idea I have for now is to check
last_value field of the sequence instead of calling curval()...

But again, what to do with nextval() calls during rollbacked transaction??

Aleksey.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message 송기원 1998-11-17 05:58:43 How to use text type field....
Previous Message sqyang2 1998-11-16 02:25:40