unordered.test 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # 2011 April 9
  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.
  12. #
  13. set testdir [file dirname $argv0]
  14. source $testdir/tester.tcl
  15. set testprefix unordered
  16. do_execsql_test 1.0 {
  17. CREATE TABLE t1(a, b);
  18. CREATE INDEX i1 ON t1(a);
  19. INSERT INTO t1 VALUES(1, 'xxx');
  20. INSERT INTO t1 SELECT a+1, b FROM t1;
  21. INSERT INTO t1 SELECT a+2, b FROM t1;
  22. INSERT INTO t1 SELECT a+4, b FROM t1;
  23. INSERT INTO t1 SELECT a+8, b FROM t1;
  24. INSERT INTO t1 SELECT a+16, b FROM t1;
  25. INSERT INTO t1 SELECT a+32, b FROM t1;
  26. INSERT INTO t1 SELECT a+64, b FROM t1;
  27. ANALYZE;
  28. } {}
  29. foreach idxmode {ordered unordered} {
  30. catchsql { DELETE FROM sqlite_stat2 }
  31. catchsql { DELETE FROM sqlite_stat3 }
  32. if {$idxmode == "unordered"} {
  33. execsql { UPDATE sqlite_stat1 SET stat = stat || ' unordered' }
  34. }
  35. db close
  36. sqlite3 db test.db
  37. foreach {tn sql r(ordered) r(unordered)} {
  38. 1 "SELECT * FROM t1 ORDER BY a"
  39. {0 0 0 {SCAN TABLE t1 USING INDEX i1}}
  40. {0 0 0 {SCAN TABLE t1} 0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
  41. 2 "SELECT * FROM t1 WHERE a >?"
  42. {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a>?)}}
  43. {0 0 0 {SCAN TABLE t1}}
  44. 3 "SELECT * FROM t1 WHERE a = ? ORDER BY rowid"
  45. {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
  46. {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
  47. 0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
  48. 4 "SELECT max(a) FROM t1"
  49. {0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i1}}
  50. {0 0 0 {SEARCH TABLE t1}}
  51. 5 "SELECT group_concat(b) FROM t1 GROUP BY a"
  52. {0 0 0 {SCAN TABLE t1 USING INDEX i1}}
  53. {0 0 0 {SCAN TABLE t1} 0 0 0 {USE TEMP B-TREE FOR GROUP BY}}
  54. 6 "SELECT * FROM t1 WHERE a = ?"
  55. {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
  56. {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}}
  57. 7 "SELECT count(*) FROM t1"
  58. {0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}}
  59. {0 0 0 {SCAN TABLE t1}}
  60. } {
  61. do_eqp_test 1.$idxmode.$tn $sql $r($idxmode)
  62. }
  63. }
  64. finish_test