Re: BUG #1083: Insert query reordering interacts badly with - Mailing list pgsql-bugs

From Bruno Wolff III
Subject Re: BUG #1083: Insert query reordering interacts badly with
Date
Msg-id 20040227134653.GA13683@wolff.to
Whole thread Raw
In response to Re: BUG #1083: Insert query reordering interacts badly with  (Martin Langhoff <martin@catalyst.net.nz>)
List pgsql-bugs
I am going to try to move this over the sql list, since it doesn't belong
on bugs.

On Tue, Feb 24, 2004 at 23:47:48 +1300, Martin Langhoff <martin@catalyst.net.nz> wrote:
> Tom Lane wrote:
> 
> >How about
> >
> >SELECT nextval('seq');       -- ignore result
> >
> >INSERT INTO ... VALUES (currval('seq'), currval('seq'));
> > 
> >
> 
> Well, it works for my sample case, I have to agree. Maybe I should 
> mention that I tried to boil down the bugreport to the simplest repro 
> case I could.
> 
> My actual SQL looks roughly like
> 
>    INSERT INTO destination (record_id, page, row)
>    SELECT
>        (SELECT record_id FROM record ORDERED BY name),
>        (NEXTVAL('seq') / 200),
>        (CURRVAL('seq') % 200)
> 
> While I have a workaround, I am definitely curious as to whether there 
> is actually a way to do it. Thanks for your patience.

I think the following will do what you want:
   INSERT INTO destination (record_id, page, row)   SELECT record_id, seq/200, seq%200 FROM       (SELECT record_id,
nextval('seq')as seq FROM record ORDERED BY name);
 


pgsql-bugs by date:

Previous
From: Damon Hart
Date:
Subject: Re: intermittent error: 'variable not found in subplan target
Next
From: Tom Lane
Date:
Subject: Re: BUG #1086: lower and upper functions