From: | Bruno Wolff III <bruno(at)wolff(dot)to> |
---|---|
To: | Martin Langhoff <martin(at)catalyst(dot)net(dot)nz> |
Cc: | PostgreSQL Bugs List <pgsql-bugs(at)postgresql(dot)org>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: BUG #1083: Insert query reordering interacts badly with |
Date: | 2004-02-27 13:46:53 |
Message-ID: | 20040227134653.GA13683@wolff.to |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-sql |
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(at)catalyst(dot)net(dot)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);
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-02-27 16:59:34 | Re: BUG #1086: lower and upper functions |
Previous Message | Damon Hart | 2004-02-27 13:38:53 | Re: intermittent error: 'variable not found in subplan target |
From | Date | Subject | |
---|---|---|---|
Next Message | Brian Knox | 2004-02-27 16:54:04 | Convert INT to INTERVAL? |
Previous Message | Stephan Szabo | 2004-02-27 05:16:03 | Re: Return more than a record |