OLD | NEW |
(Empty) | |
| 1 # 2013 January 09 |
| 2 # |
| 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: |
| 5 # |
| 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. |
| 9 # |
| 10 #*********************************************************************** |
| 11 # This file implements regression tests for SQLite library. The |
| 12 # focus of this file is testing that the optimizations that disable |
| 13 # ORDER BY clauses work correctly on a 3-way join. See ticket |
| 14 # http://www.sqlite.org/src/956e4d7f89 |
| 15 # |
| 16 |
| 17 |
| 18 set testdir [file dirname $argv0] |
| 19 source $testdir/tester.tcl |
| 20 set ::testprefix orderby3 |
| 21 |
| 22 # Generate test data for a join. Verify that the join gets the |
| 23 # correct answer. |
| 24 # |
| 25 do_execsql_test 1.0 { |
| 26 CREATE TABLE t1(a INTEGER PRIMARY KEY); |
| 27 CREATE TABLE t2(b INTEGER PRIMARY KEY, c INTEGER); |
| 28 CREATE TABLE t3(d INTEGER); |
| 29 |
| 30 INSERT INTO t1 VALUES(1),(2),(3); |
| 31 |
| 32 INSERT INTO t2 VALUES(3, 1); |
| 33 INSERT INTO t2 VALUES(4, 2); |
| 34 INSERT INTO t2 VALUES(5, 3); |
| 35 |
| 36 INSERT INTO t3 VALUES(4),(3),(5); |
| 37 } {} |
| 38 do_execsql_test 1.1.asc { |
| 39 SELECT t1.a |
| 40 FROM t1, t2, t3 |
| 41 WHERE t1.a=t2.c AND t2.b=t3.d |
| 42 ORDER BY t1.a; |
| 43 } {1 2 3} |
| 44 do_execsql_test 1.1.desc { |
| 45 SELECT t1.a |
| 46 FROM t1, t2, t3 |
| 47 WHERE t1.a=t2.c AND t2.b=t3.d |
| 48 ORDER BY t1.a DESC; |
| 49 } {3 2 1} |
| 50 do_execsql_test 1.123.asc { |
| 51 SELECT t1.a |
| 52 FROM t1 CROSS JOIN t2 CROSS JOIN t3 |
| 53 WHERE t1.a=t2.c AND t2.b=t3.d |
| 54 ORDER BY t1.a; |
| 55 } {1 2 3} |
| 56 do_execsql_test 1.123.desc { |
| 57 SELECT t1.a |
| 58 FROM t1 CROSS JOIN t2 CROSS JOIN t3 |
| 59 WHERE t1.a=t2.c AND t2.b=t3.d |
| 60 ORDER BY t1.a DESC; |
| 61 } {3 2 1} |
| 62 do_execsql_test 1.132.asc { |
| 63 SELECT t1.a |
| 64 FROM t1 CROSS JOIN t3 CROSS JOIN t2 |
| 65 WHERE t1.a=t2.c AND t2.b=t3.d |
| 66 ORDER BY t1.a; |
| 67 } {1 2 3} |
| 68 do_execsql_test 1.132.desc { |
| 69 SELECT t1.a |
| 70 FROM t1 CROSS JOIN t3 CROSS JOIN t2 |
| 71 WHERE t1.a=t2.c AND t2.b=t3.d |
| 72 ORDER BY t1.a DESC; |
| 73 } {3 2 1} |
| 74 do_execsql_test 1.213.asc { |
| 75 SELECT t1.a |
| 76 FROM t2 CROSS JOIN t1 CROSS JOIN t3 |
| 77 WHERE t1.a=t2.c AND t2.b=t3.d |
| 78 ORDER BY t1.a; |
| 79 } {1 2 3} |
| 80 do_execsql_test 1.213.desc { |
| 81 SELECT t1.a |
| 82 FROM t2 CROSS JOIN t1 CROSS JOIN t3 |
| 83 WHERE t1.a=t2.c AND t2.b=t3.d |
| 84 ORDER BY t1.a DESC; |
| 85 } {3 2 1} |
| 86 do_execsql_test 1.231.asc { |
| 87 SELECT t1.a |
| 88 FROM t2 CROSS JOIN t3 CROSS JOIN t1 |
| 89 WHERE t1.a=t2.c AND t2.b=t3.d |
| 90 ORDER BY t1.a; |
| 91 } {1 2 3} |
| 92 do_execsql_test 1.231.desc { |
| 93 SELECT t1.a |
| 94 FROM t2 CROSS JOIN t3 CROSS JOIN t1 |
| 95 WHERE t1.a=t2.c AND t2.b=t3.d |
| 96 ORDER BY t1.a DESC; |
| 97 } {3 2 1} |
| 98 do_execsql_test 1.312.asc { |
| 99 SELECT t1.a |
| 100 FROM t3 CROSS JOIN t1 CROSS JOIN t2 |
| 101 WHERE t1.a=t2.c AND t2.b=t3.d |
| 102 ORDER BY t1.a; |
| 103 } {1 2 3} |
| 104 do_execsql_test 1.312.desc { |
| 105 SELECT t1.a |
| 106 FROM t3 CROSS JOIN t1 CROSS JOIN t2 |
| 107 WHERE t1.a=t2.c AND t2.b=t3.d |
| 108 ORDER BY t1.a DESC; |
| 109 } {3 2 1} |
| 110 do_execsql_test 1.321.asc { |
| 111 SELECT t1.a |
| 112 FROM t3 CROSS JOIN t2 CROSS JOIN t1 |
| 113 WHERE t1.a=t2.c AND t2.b=t3.d |
| 114 ORDER BY t1.a; |
| 115 } {1 2 3} |
| 116 do_execsql_test 1.321.desc { |
| 117 SELECT t1.a |
| 118 FROM t3 CROSS JOIN t2 CROSS JOIN t1 |
| 119 WHERE t1.a=t2.c AND t2.b=t3.d |
| 120 ORDER BY t1.a DESC; |
| 121 } {3 2 1} |
| 122 |
| 123 finish_test |
OLD | NEW |