Re: Surprising (?) Sequence Behavior

From: "Richard M(dot) Kues" <software(at)riva(dot)at>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Surprising (?) Sequence Behavior
Date: 2008-01-29 17:02:55
Message-ID: 479F5C3F.8040105@riva.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Tom Lane schrieb:

>
>> At least for me this is surprising!
>
> Why do you find it surprising? Per spec, the SELECT output list is not
> evaluated at rows that fail the WHERE clause. This must be so; consider
> examples like
> SELECT 1/x FROM t WHERE x <> 0;

Of ocurse!

>
> I think what you need is three levels of nested SELECT, with the
> nextval() done in the middle level, and probably an "OFFSET 0" in the
> middle one to keep Postgres from collapsing the top and middle together.
>

For the archves.
This works:

DROP SEQUENCE IF EXISTS s;
CREATE TEMPORARY SEQUENCE s;

SELECT * FROM
(
SELECT
nextval('s') AS num,
tablename AS name
FROM
(
SELECT
tablename
FROM
pg_tables
ORDER BY tablename
) AS t
OFFSET 0
) AS ranked
WHERE
ranked.name = 'pg_am'

Thanks a lot!
richard

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ivan Sergio Borgonovo 2008-01-29 17:04:48 referencing to "computed columns" in where clause
Previous Message Vlad 2008-01-29 16:49:45 Re: 8.3RC2 vs 8.2.6 testing results