Re: Problems with UNION ALL and ORDER BY

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Kaloyan Iliev Iliev <news1(at)faith(dot)digsys(dot)bg>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Problems with UNION ALL and ORDER BY
Date: 2004-08-02 17:09:42
Message-ID: 12126.1091466582@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Kaloyan Iliev Iliev <news1(at)faith(dot)digsys(dot)bg> writes:
> As I say in my previous letter I am using 7.2.3. If you wish I can show
> you the query and the result to see for yourself, that there is
> something wrong. It just don't order the overall result but the separate
> results of the both subqueries.

Quite honestly, I don't believe it. In 7.2 I get

regression=# explain select * from tenk1 a union all select * from tenk1 b order by unique1;
NOTICE: QUERY PLAN:

Sort (cost=3128.28..3128.28 rows=20000 width=148)
-> Append (cost=0.00..760.00 rows=20000 width=148)
-> Subquery Scan *SELECT* 1 (cost=0.00..380.00 rows=10000 width=148)
-> Seq Scan on tenk1 a (cost=0.00..380.00 rows=10000 width=148)
-> Subquery Scan *SELECT* 2 (cost=0.00..380.00 rows=10000 width=148)
-> Seq Scan on tenk1 b (cost=0.00..380.00 rows=10000 width=148)

EXPLAIN

and as you can see there's only one sort step being applied to the union
result.

Now if EXPLAIN shows you a different sorting structure for your query,
then I'd be interested to see the exact query and the EXPLAIN output.
But what I think is that you are misinterpreting the sorting result you
get. If you are using a non-C locale you may be seeing some pretty
weird sorting rules :-(

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Kaloyan Iliev Iliev 2004-08-02 17:37:15 Problems with UNION ALL and ORDER BY
Previous Message Gaetano Mendola 2004-08-02 16:45:50 Re: Problems with UNION ALL and ORDER BY