On Tue, Aug 21, 2012 at 1:03 PM, Scott Marlowe <scott.marlowe@xxxxxxxxx> wrote: > That seems unnecessarily complex. how about this: > > create sequence s; > select array_agg (a.b) from (select nextval('s') as b from > generate_series(1,1000)) as a; > > Then you just iterate that array for the ids you need. For brevity I didn't explain the use-case in detail. I need a series of IDs that are unique across a cluster of servers and across time (years and decades). The blocksize might be anywhere from 1 to 100000. One server is the master and issues all IDs. I don't want to iterate over an array to get the values because it's inefficient: if the blocksize is large (say, 100000 items), it will require 100000 select() statements. The solution using an advisory lock along with setvalue() is nice because the application only makes one select() statement and gets a block of IDs that are guaranteed to be unique across the cluster. Craig -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance