diff options
| author | Jan Mercl <0xjnml@gmail.com> | 2020-07-26 22:36:18 +0200 | 
|---|---|---|
| committer | Jan Mercl <0xjnml@gmail.com> | 2020-07-26 22:36:18 +0200 | 
| commit | b406626c64313ae348996c243a0a05d3f6ed2c3c (patch) | |
| tree | 0eaae4fa6348b150568725e6f2ec0b4c4203b5f8 /testdata/tcl/offset1.test | |
| parent | d8d9f40ce80062793349c0ea47520b6878312f4a (diff) | |
release v1.4.0-beta1v1.4.0-beta1
Diffstat (limited to 'testdata/tcl/offset1.test')
| -rw-r--r-- | testdata/tcl/offset1.test | 161 | 
1 files changed, 161 insertions, 0 deletions
diff --git a/testdata/tcl/offset1.test b/testdata/tcl/offset1.test new file mode 100644 index 0000000..91dc0b0 --- /dev/null +++ b/testdata/tcl/offset1.test @@ -0,0 +1,161 @@ +# 2015-10-06 +# +# The author disclaims copyright to this source code.  In place of +# a legal notice, here is a blessing: +# +#    May you do good and not evil. +#    May you find forgiveness for yourself and forgive others. +#    May you share freely, never taking more than you give. +# +#*********************************************************************** +#  +# This file implements test cases for the [b65cb2c8d91f6685841d7d1e13b6] +# bug:  Correct handling of LIMIT and OFFSET on a UNION ALL query where +# the right-hand SELECT contains an ORDER BY in a subquery. +# + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +ifcapable !compound { +  finish_test +  return +} + +do_execsql_test offset1-1.1 { +  CREATE TABLE t1(a,b); +  INSERT INTO t1 VALUES(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'); +  CREATE TABLE t2(x,y); +  INSERT INTO t2 VALUES(8,'y'),(9,'z'),(6,'w'),(7,'x'); +  SELECT count(*) FROM t1, t2; +} {20} + +do_execsql_test offset1-1.2.0 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 0; +} {1 a 2 b 3 c} +do_execsql_test offset1-1.2.1 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 1; +} {2 b 3 c 4 d} +do_execsql_test offset1-1.2.2 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 2; +} {3 c 4 d 5 e} +do_execsql_test offset1-1.2.3 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 3; +} {4 d 5 e 6 w} +do_execsql_test offset1-1.2.4 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 4; +} {5 e 6 w 7 x} +do_execsql_test offset1-1.2.5 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 5; +} {6 w 7 x 8 y} +do_execsql_test offset1-1.2.6 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 6; +} {7 x 8 y 9 z} +do_execsql_test offset1-1.2.7 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 7; +} {8 y 9 z} +do_execsql_test offset1-1.2.8 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 8; +} {9 z} +do_execsql_test offset1-1.2.9 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 9; +} {} + +do_execsql_test offset1-1.3.0 { +  SELECT * FROM t1 LIMIT 0; +} {} + +do_execsql_test offset1-1.4.0 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 0 OFFSET 1; +} {} +do_execsql_test offset1-1.4.1 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 1 OFFSET 1; +} {2 b} +do_execsql_test offset1-1.4.2 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 2 OFFSET 1; +} {2 b 3 c} +do_execsql_test offset1-1.4.3 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 3 OFFSET 1; +} {2 b 3 c 4 d} +do_execsql_test offset1-1.4.4 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 4 OFFSET 1; +} {2 b 3 c 4 d 5 e} +do_execsql_test offset1-1.4.5 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 5 OFFSET 1; +} {2 b 3 c 4 d 5 e 6 w} +do_execsql_test offset1-1.4.6 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 6 OFFSET 1; +} {2 b 3 c 4 d 5 e 6 w 7 x} +do_execsql_test offset1-1.4.7 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 7 OFFSET 1; +} {2 b 3 c 4 d 5 e 6 w 7 x 8 y} +do_execsql_test offset1-1.4.8 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 8 OFFSET 1; +} {2 b 3 c 4 d 5 e 6 w 7 x 8 y 9 z} +do_execsql_test offset1-1.4.9 { +  SELECT a, b FROM t1 +  UNION ALL +  SELECT * FROM (SELECT x, y FROM t2 ORDER BY y) +  LIMIT 9 OFFSET 1; +} {2 b 3 c 4 d 5 e 6 w 7 x 8 y 9 z} + + + +finish_test  | 
