1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Disable the query flattening optimization when the subquery is a compound

query with an ORDER BY clause.  Ticket #3773 shows why that combination
does not work. (CVS 6437)

FossilOrigin-Name: 23f90d50737a36ebd17152dd4667948ce7049967
This commit is contained in:
drh
2009-04-02 16:59:47 +00:00
parent 3034e3d364
commit e8902a70fe
5 changed files with 88 additions and 38 deletions

View File

@ -10,7 +10,7 @@
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# $Id: selectB.test,v 1.9 2008/08/04 03:51:24 danielk1977 Exp $
# $Id: selectB.test,v 1.10 2009/04/02 16:59:47 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -122,7 +122,7 @@ for {set ii 1} {$ii <= 2} {incr ii} {
} {
SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 LIMIT 2 OFFSET 3
} {12 14}
test_transform selectB-$ii.9 {
SELECT * FROM (
SELECT a FROM t1 UNION ALL SELECT d FROM t2 UNION ALL SELECT c FROM t1
@ -156,33 +156,35 @@ for {set ii 1} {$ii <= 2} {incr ii} {
SELECT a FROM t1 UNION ALL SELECT d FROM t2 LIMIT 2
} {2 8}
test_transform selectB-$ii.13 {
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a ASC)
} {
SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 ASC
} {2 3 8 12 14 21}
test_transform selectB-$ii.14 {
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a DESC)
} {
SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 DESC
} {21 14 12 8 3 2}
test_transform selectB-$ii.14 {
SELECT * FROM (
SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a DESC
) LIMIT 2 OFFSET 2
} {
SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 DESC LIMIT 2 OFFSET 2
} {12 8}
test_transform selectB-$ii.15 {
SELECT * FROM (
SELECT a, b FROM t1 UNION ALL SELECT d, e FROM t2 ORDER BY a ASC, e DESC
)
} {
SELECT a, b FROM t1 UNION ALL SELECT d, e FROM t2 ORDER BY a ASC, e DESC
} {2 4 3 6 8 10 12 15 14 16 21 24}
# An ORDER BY in a compound subqueries defeats flattening. Ticket #3773
# test_transform selectB-$ii.13 {
# SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a ASC)
# } {
# SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 ASC
# } {2 3 8 12 14 21}
#
# test_transform selectB-$ii.14 {
# SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a DESC)
# } {
# SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 DESC
# } {21 14 12 8 3 2}
#
# test_transform selectB-$ii.14 {
# SELECT * FROM (
# SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY a DESC
# ) LIMIT 2 OFFSET 2
# } {
# SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 DESC
# LIMIT 2 OFFSET 2
# } {12 8}
#
# test_transform selectB-$ii.15 {
# SELECT * FROM (
# SELECT a, b FROM t1 UNION ALL SELECT d, e FROM t2 ORDER BY a ASC, e DESC
# )
# } {
# SELECT a, b FROM t1 UNION ALL SELECT d, e FROM t2 ORDER BY a ASC, e DESC
# } {2 4 3 6 8 10 12 15 14 16 21 24}
}
do_test selectB-3.0 {