]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add tests for some syntax diagrams in lang_select.html.
authordan <dan@noemail.net>
Fri, 17 Sep 2010 19:04:18 +0000 (19:04 +0000)
committerdan <dan@noemail.net>
Fri, 17 Sep 2010 19:04:18 +0000 (19:04 +0000)
FossilOrigin-Name: 2254e93bd5f70af5d3b2021983e4b826e601ee8f

manifest
manifest.uuid
test/e_select.test

index e20410ef1137a5e57e9102e0108319970795aa04..9fda6ace65a12fd7271d6ac0e35c944e89074cdd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,5 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-C Remove\sadditional\soccurrences\sof\s&lt;ctype.h&gt;\sfrom\sFTS2.
-D 2010-09-17T17:10:31
+C Add\stests\sfor\ssome\ssyntax\sdiagrams\sin\slang_select.html.
+D 2010-09-17T19:04:19
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in c599a15d268b1db2aeadea19df2adc3bf2eb6bee
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -353,7 +350,7 @@ F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
 F test/e_expr.test 164e87c1d7b40ceb47c57c3bffa384c81d009aa7
 F test/e_fkey.test 6721a741c6499b3ab7e5385923233343c8f1ad05
 F test/e_fts3.test 75bb0aee26384ef586165e21018a17f7cd843469
-F test/e_select.test 08868f620e244579913ca11b758eed82f2027dde
+F test/e_select.test 66d398699f8a1906e292432190e1df6ed8573b33
 F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
 F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398
 F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041
@@ -861,14 +858,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P a207f74408acb043aafd96b8e03807d8ae5d7f01
-R ccfc236a1759bf7ba55baaa23b8f8f40
-U drh
-Z d8f63449b3dc452dffe72f003604cf9f
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-iD8DBQFMk6EKoxKgR168RlERAoRwAJ0SFQUu2Lw2k2NkntJqlDWofYhGZACfchJt
-Kgj0Jv3mGc/+wPqiaWJCipk=
-=jFh4
------END PGP SIGNATURE-----
+P ee52589c80a6d37dc8c7a86a0e3b531ec4dd8d45
+R 31c4b270de35f676fcc4204cc88bacd6
+U dan
+Z 0f88d4009af295c3a193758a524f6f37
index d4ed61292a3877f397bfcf4e2f47e2a4fe6ea0cd..20daacde43a68f86f04758445ad265ac782df85f 100644 (file)
@@ -1 +1 @@
-ee52589c80a6d37dc8c7a86a0e3b531ec4dd8d45
\ No newline at end of file
+2254e93bd5f70af5d3b2021983e4b826e601ee8f
\ No newline at end of file
index 9bac6e9d409dd662c068e28051c229fa181b97a6..22163440829567cb6ac3f58c443e1a8d429c2c5b 100644 (file)
@@ -96,6 +96,134 @@ do_catchsql_test e_select-0.1.5 {
   SELECT count(*) FROM t1, t2 USING (a) ON (t1.a=t2.a)
 } {1 {near "ON": syntax error}}
 
+# EVIDENCE-OF: R-44854-11739 -- syntax diagram select-core
+#
+#   0: SELECT ...
+#   1: SELECT DISTINCT ...
+#   2: SELECT ALL ...
+#
+#   0: No FROM clause
+#   1: Has FROM clause
+#
+#   0: No WHERE clause
+#   1: Has WHERE clause
+#
+#   0: No GROUP BY clause
+#   1: Has GROUP BY clause
+#   2: Has GROUP BY and HAVING clauses
+#
+foreach {tn select res} {
+    0000.1  "SELECT 1, 2, 3 " {1 2 3}
+    1000.1  "SELECT DISTINCT 1, 2, 3 " {1 2 3}
+    2000.1  "SELECT ALL 1, 2, 3 " {1 2 3}
+    
+    0100.1  "SELECT a, b, a||b FROM t1 " {
+      a one aone b two btwo c three cthree
+    }
+    1100.1  "SELECT DISTINCT a, b, a||b FROM t1 " {
+      a one aone b two btwo c three cthree
+    }
+    1200.1  "SELECT ALL a, b, a||b FROM t1 " {
+      a one aone b two btwo c three cthree
+    }
+
+    0010.1  "SELECT 1, 2, 3 WHERE 1 " {1 2 3}
+    0010.2  "SELECT 1, 2, 3 WHERE 0 " {}
+    0010.3  "SELECT 1, 2, 3 WHERE NULL " {}
+
+    1010.1  "SELECT DISTINCT 1, 2, 3 WHERE 1 " {1 2 3}
+
+    2010.1  "SELECT ALL 1, 2, 3 WHERE 1 " {1 2 3}
+
+    0110.1  "SELECT a, b, a||b FROM t1 WHERE a!='x' " {
+      a one aone b two btwo c three cthree
+    }
+    0110.2  "SELECT a, b, a||b FROM t1 WHERE a=='x'" {}
+
+    1110.1  "SELECT DISTINCT a, b, a||b FROM t1 WHERE a!='x' " {
+      a one aone b two btwo c three cthree
+    }
+
+    2110.0  "SELECT ALL a, b, a||b FROM t1 WHERE a=='x'" {}
+
+    0001.1  "SELECT 1, 2, 3 GROUP BY 2" {1 2 3}
+    0002.1  "SELECT 1, 2, 3 GROUP BY 2 HAVING count(*)=1" {1 2 3}
+    0002.2  "SELECT 1, 2, 3 GROUP BY 2 HAVING count(*)>1" {}
+
+    1001.1  "SELECT DISTINCT 1, 2, 3 GROUP BY 2" {1 2 3}
+    1002.1  "SELECT DISTINCT 1, 2, 3 GROUP BY 2 HAVING count(*)=1" {1 2 3}
+    1002.2  "SELECT DISTINCT 1, 2, 3 GROUP BY 2 HAVING count(*)>1" {}
+
+    2001.1  "SELECT ALL 1, 2, 3 GROUP BY 2" {1 2 3}
+    2002.1  "SELECT ALL 1, 2, 3 GROUP BY 2 HAVING count(*)=1" {1 2 3}
+    2002.2  "SELECT ALL 1, 2, 3 GROUP BY 2 HAVING count(*)>1" {}
+
+    0101.1  "SELECT count(*), max(a) FROM t1 GROUP BY b" {1 a 1 c 1 b}
+    0102.1  "SELECT count(*), max(a) FROM t1 GROUP BY b HAVING count(*)=1" {
+      1 a 1 c 1 b
+    }
+    0102.2  "SELECT count(*), max(a) FROM t1 GROUP BY b HAVING count(*)=2" { }
+
+    1101.1  "SELECT DISTINCT count(*), max(a) FROM t1 GROUP BY b" {1 a 1 c 1 b}
+    1102.1  "SELECT DISTINCT count(*), max(a) FROM t1 
+             GROUP BY b HAVING count(*)=1" {
+      1 a 1 c 1 b
+    }
+    1102.2  "SELECT DISTINCT count(*), max(a) FROM t1 
+             GROUP BY b HAVING count(*)=2" { 
+    }
+
+    2101.1  "SELECT ALL count(*), max(a) FROM t1 GROUP BY b" {1 a 1 c 1 b}
+    2102.1  "SELECT ALL count(*), max(a) FROM t1 
+             GROUP BY b HAVING count(*)=1" {
+      1 a 1 c 1 b
+    }
+    2102.2  "SELECT ALL count(*), max(a) FROM t1 
+             GROUP BY b HAVING count(*)=2" { 
+    }
+
+    0011.1  "SELECT 1, 2, 3 WHERE 1 GROUP BY 2" {1 2 3}
+    0012.1  "SELECT 1, 2, 3 WHERE 0 GROUP BY 2 HAVING count(*)=1" {}
+    0012.2  "SELECT 1, 2, 3 WHERE 0 GROUP BY 2 HAVING count(*)>1" {}
+
+    1011.1  "SELECT DISTINCT 1, 2, 3 WHERE 0 GROUP BY 2" {}
+    1012.1  "SELECT DISTINCT 1, 2, 3 WHERE 1 GROUP BY 2 HAVING count(*)=1" 
+            {1 2 3}
+    1012.2  "SELECT DISTINCT 1, 2, 3 WHERE NULL GROUP BY 2 HAVING count(*)>1" {}
+
+    2011.1  "SELECT ALL 1, 2, 3 WHERE 1 GROUP BY 2" {1 2 3}
+    2012.1  "SELECT ALL 1, 2, 3 WHERE 0 GROUP BY 2 HAVING count(*)=1" {}
+    2012.2  "SELECT ALL 1, 2, 3 WHERE 'abc' GROUP BY 2 HAVING count(*)>1" {}
+
+    0111.1  "SELECT count(*), max(a) FROM t1 WHERE a='a' GROUP BY b" {1 a}
+    0112.1  "SELECT count(*), max(a) FROM t1 
+             WHERE a='c' GROUP BY b HAVING count(*)=1" {1 c}
+    0112.2  "SELECT count(*), max(a) FROM t1 
+             WHERE 0 GROUP BY b HAVING count(*)=2" { }
+    1111.1  "SELECT DISTINCT count(*), max(a) FROM t1 WHERE a<'c' GROUP BY b" 
+            {1 a 1 b}
+    1112.1  "SELECT DISTINCT count(*), max(a) FROM t1 WHERE a>'a'
+             GROUP BY b HAVING count(*)=1" {
+      1 c 1 b
+    }
+    1112.2  "SELECT DISTINCT count(*), max(a) FROM t1 WHERE 0
+             GROUP BY b HAVING count(*)=2" { 
+    }
+
+    2111.1  "SELECT ALL count(*), max(a) FROM t1 WHERE b>'one' GROUP BY b" 
+            {1 c 1 b}
+    2112.1  "SELECT ALL count(*), max(a) FROM t1 WHERE a!='b'
+             GROUP BY b HAVING count(*)=1" {
+      1 a 1 c
+    }
+    2112.2  "SELECT ALL count(*), max(a) FROM t1 
+             WHERE 0 GROUP BY b HAVING count(*)=2" { }
+} {
+  do_execsql_test e_select-0.2.$tn $select [list {*}$res]
+}
+
+
+
 #-------------------------------------------------------------------------
 # The following tests focus on FROM clause (join) processing.
 #
@@ -1231,7 +1359,8 @@ foreach {tn select nCol} {
 #
 #   By other definitions in lang_select.html, a non-aggregate query is
 #   any simple SELECT that has no GROUP BY clause and no aggregate expressions
-#   in the result expression list.
+#   in the result expression list. These tests also verify (in a way) that
+#   that definition is consistent:
 #
 do_execsql_test e_select-4.4.1 {
   SELECT a, b FROM z1