Add a couple of tests to see if the new compound select optimizations work when the compound select is hidden inside a view. (CVS 5327)

FossilOrigin-Name: 1a711249c25aafbaf08057ffdcbb9cf2f872f13d
This commit is contained in:
danielk1977 2008-06-30 07:53:09 +00:00
parent 986fbb8e30
commit 7a8097b6d8
3 changed files with 97 additions and 8 deletions

View File

@ -1,5 +1,5 @@
C Remove\san\sassert()\sthat\swas\sfailing\sif\sthere\swere\sany\sopen\sincremental\sblob\shandles\swhen\sa\sstatement\stransaction\swas\srolled\sback.\s(CVS\s5326)
D 2008-06-28T15:33:25
C Add\sa\scouple\sof\stests\sto\ssee\sif\sthe\snew\scompound\sselect\soptimizations\swork\swhen\sthe\scompound\sselect\sis\shidden\sinside\sa\sview.\s(CVS\s5327)
D 2008-06-30T07:53:10
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 325dfac0a0dd1cb4d975f1ace6453157892e6042
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -447,7 +447,7 @@ F test/select5.test 5ad14ea338aada2e6394ba98fa9aa40e3e50aec0
F test/select6.test 399f14b9ba37b768afe5d2cd8c12e4f340a69db8
F test/select7.test 7906735805cfbee4dddc0bed4c14e68d7f5f9c5f
F test/select8.test 391de11bdd52339c30580dabbbbe97e3e9a3c79d
F test/select9.test 0e1a5470bac7e6daa757d8df3fbfaee6730c544e
F test/select9.test 2f52de9bcca6002ff9ad57b045a023e2dff6438d
F test/selectA.test e4501789a1d0fe9d00db15187623fb5b7031357b
F test/server1.test f5b790d4c0498179151ca8a7715a65a7802c859c
F test/shared.test c6769531e0cb751d46a9838c0532d3786606c0f6
@ -595,7 +595,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
P 0ab0b030dea03ec6693358b733329328828cf802
R 8c25ea2dec6b6961f92bbdeafaa47650
P f66491ab2ba3645d4e44e33ec6fa0ab94b2989be
R 611ba85a3e5544f4f674bd15a237607d
U danielk1977
Z 103f0194a9136d291f48c62f781a1953
Z 1eba408b59726db78885f41885acd9e1

View File

@ -1 +1 @@
f66491ab2ba3645d4e44e33ec6fa0ab94b2989be
1a711249c25aafbaf08057ffdcbb9cf2f872f13d

View File

@ -10,7 +10,7 @@
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# $Id: select9.test,v 1.2 2008/06/24 15:39:44 danielk1977 Exp $
# $Id: select9.test,v 1.3 2008/06/30 07:53:10 danielk1977 Exp $
# The tests in this file are focused on test compound SELECT statements
# that have any or all of an ORDER BY, LIMIT or OFFSET clauses. As of
@ -328,5 +328,94 @@ foreach indexes [list {
}
do_test select9-2.X {
execsql {
DROP INDEX i1;
DROP INDEX i2;
DROP INDEX i3;
}
} {}
# This procedure executes the SQL. Then it checks the generated program
# for the SQL and appends a "nosort" to the result if the program contains the
# SortCallback opcode. If the program does not contain the SortCallback
# opcode it appends "sort"
#
proc cksort {sql} {
set ::sqlite_sort_count 0
set data [execsql $sql]
if {$::sqlite_sort_count} {set x sort} {set x nosort}
lappend data $x
return $data
}
# If the right indexes exist, the following query:
#
# SELECT t1.a FROM t1 UNION ALL SELECT t2.d FROM t2 ORDER BY 1
#
# can use indexes to run without doing a in-memory sort operation.
# This block of tests (select9-3.*) is used to check if the same
# is possible with:
#
# CREATE VIEW v1 AS SELECT a FROM t1 UNION ALL SELECT d FROM t2
# SELECT a FROM v1 ORDER BY 1
#
# Currently it is not.
#
do_test select9-3.1 {
cksort { SELECT a FROM t1 ORDER BY 1 }
} {1 2 3 4 5 6 7 8 9 10 sort}
do_test select9-3.2 {
execsql { CREATE INDEX i1 ON t1(a) }
cksort { SELECT a FROM t1 ORDER BY 1 }
} {1 2 3 4 5 6 7 8 9 10 nosort}
do_test select9-3.3 {
cksort { SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 LIMIT 5 }
} {1 1 2 2 3 sort}
do_test select9-3.4 {
execsql { CREATE INDEX i2 ON t2(d) }
cksort { SELECT a FROM t1 UNION ALL SELECT d FROM t2 ORDER BY 1 LIMIT 5 }
} {1 1 2 2 3 nosort}
do_test select9-3.5 {
execsql { CREATE VIEW v1 AS SELECT a FROM t1 UNION ALL SELECT d FROM t2 }
cksort { SELECT a FROM v1 ORDER BY 1 LIMIT 5 }
} {1 1 2 2 3 sort}
do_test select9-3.X {
execsql {
DROP INDEX i1;
DROP INDEX i2;
DROP VIEW v1;
}
} {}
# This block of tests is the same as the preceding one, except that
# "UNION" is tested instead of "UNION ALL".
#
do_test select9-4.1 {
cksort { SELECT a FROM t1 ORDER BY 1 }
} {1 2 3 4 5 6 7 8 9 10 sort}
do_test select9-4.2 {
execsql { CREATE INDEX i1 ON t1(a) }
cksort { SELECT a FROM t1 ORDER BY 1 }
} {1 2 3 4 5 6 7 8 9 10 nosort}
do_test select9-4.3 {
cksort { SELECT a FROM t1 UNION SELECT d FROM t2 ORDER BY 1 LIMIT 5 }
} {1 2 3 4 5 sort}
do_test select9-4.4 {
execsql { CREATE INDEX i2 ON t2(d) }
cksort { SELECT a FROM t1 UNION SELECT d FROM t2 ORDER BY 1 LIMIT 5 }
} {1 2 3 4 5 nosort}
do_test select9-4.5 {
execsql { CREATE VIEW v1 AS SELECT a FROM t1 UNION SELECT d FROM t2 }
cksort { SELECT a FROM v1 ORDER BY 1 LIMIT 5 }
} {1 2 3 4 5 sort}
do_test select9-4.X {
execsql {
DROP INDEX i1;
DROP INDEX i2;
DROP VIEW v1;
}
} {}
finish_test