]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Change the name of the two-argument unlikely() function to likelihood().
authordrh <drh@noemail.net>
Wed, 11 Sep 2013 11:38:58 +0000 (11:38 +0000)
committerdrh <drh@noemail.net>
Wed, 11 Sep 2013 11:38:58 +0000 (11:38 +0000)
Add test cases.

FossilOrigin-Name: 29a359b8d7f90e6fa2b28ce2a112284fd3870494

manifest
manifest.uuid
src/func.c
src/resolve.c
test/whereG.test [new file with mode: 0644]

index c6dcacea09bd1dc9396e6edd68d48890c8b7c0ca..022df6e64665eab4e6499269f7ba1553623edc47 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Tweaks\sto\sthe\sindex\sselection\slogic.
-D 2013-09-11T03:53:22.579
+C Change\sthe\sname\sof\sthe\stwo-argument\sunlikely()\sfunction\sto\slikelihood().\nAdd\stest\scases.
+D 2013-09-11T11:38:58.186
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -175,7 +175,7 @@ F src/delete.c 2dc64ca360b7d7da481183ea920a813a0c203c97
 F src/expr.c d0ed048b3b3c97fddbcccb8df43cc39b89e682c2
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c be866cd8c4fa6cae98ba33109578fd1a3311ee5b
-F src/func.c a297b1f3cf48dd483f5453b7155bc5e8f4ca1fc2
+F src/func.c 0aca17c8bc750fad4856e6098ed5e2597b641a75
 F src/global.c 5caf4deab621abb45b4c607aad1bd21c20aac759
 F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
 F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
@@ -214,7 +214,7 @@ F src/pragma.c 3aa3d8c8623b7b71c5b1bfb72dcc31fb0c25665f
 F src/prepare.c fa6988589f39af8504a61731614cd4f6ae71554f
 F src/printf.c da9119eb31a187a4b99f60aa4a225141c0ebb74b
 F src/random.c 0b2dbc37fdfbfa6bd455b091dfcef5bdb32dba68
-F src/resolve.c 140c25a1aa91c460dee74a1b9e6aa5af5c98cbea
+F src/resolve.c fde5b5c5be70edb1994e5fbef86f0e08fd267333
 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
 F src/select.c 9239586282bd146ec5843a2cde7d54cd7816cf78
 F src/shell.c d920a891ca09b8bd262cced7fb0ab9d723f7a747
@@ -1059,6 +1059,7 @@ F test/whereC.test d6f4ecd4fa2d9429681a5b22a25d2bda8e86ab8a
 F test/whereD.test 6c2feb79ef1f68381b07f39017fe5f9b96da8d62
 F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
 F test/whereF.test 5b2ba0dbe8074aa13e416b37c753991f0a2492d7
+F test/whereG.test fa2da659bd2c88314774dc5ff7c297c027eb92ba
 F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31
 F test/wild001.test bca33f499866f04c24510d74baf1e578d4e44b1c
 F test/win32lock.test 7a6bd73a5dcdee39b5bb93e92395e1773a194361
@@ -1111,7 +1112,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P a51d751553b14aa26912c516f60727551deb8e60
-R de20fadcbd5549c633507180f3bc907b
+P 52d52688644f635a50a60ff17b160f3affa8fa6c
+R 31254cf1d66f852ba95ac31e1e5bad22
 U drh
-Z c7a8a684bdbfede4a4651eea6f5c0b26
+Z 703ec90474ce0af750c28f3450c33fc9
index 2a7636c69035ae331c5d2242c5ad9c7a721a4427..9111f5c25b9b33dec44c5d478a388bace0bd1676 100644 (file)
@@ -1 +1 @@
-52d52688644f635a50a60ff17b160f3affa8fa6c
\ No newline at end of file
+29a359b8d7f90e6fa2b28ce2a112284fd3870494
\ No newline at end of file
index 26cbfbfb0355d1bc0be58190fa91c876ef3706fc..ae79451110975cdd0ce6956da94a5d4fbc093631 100644 (file)
@@ -1663,7 +1663,7 @@ void sqlite3RegisterGlobalFunctions(void){
     FUNCTION(hex,                1, 0, 0, hexFunc          ),
     FUNCTION2(ifnull,            2, 0, 0, noopFunc,  SQLITE_FUNC_COALESCE),
     FUNCTION2(unlikely,          1, 0, 0, noopFunc,  SQLITE_FUNC_UNLIKELY),
-    FUNCTION2(unlikely,          2, 0, 0, noopFunc,  SQLITE_FUNC_UNLIKELY),
+    FUNCTION2(likelihood,        2, 0, 0, noopFunc,  SQLITE_FUNC_UNLIKELY),
     FUNCTION(random,             0, 0, 0, randomFunc       ),
     FUNCTION(randomblob,         1, 0, 0, randomBlob       ),
     FUNCTION(nullif,             2, 0, 1, nullifFunc       ),
index 40acc91bc3502967df0820dab3220a24288474be..5f238e1027aa543c6d305f1927081467e3682948 100644 (file)
@@ -700,8 +700,8 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
           if( n==2 ){
             pExpr->iTable = exprProbability(pList->a[1].pExpr);
             if( pExpr->iTable<0 ){
-              sqlite3ErrorMsg(pParse, "second parameter to unlikely() must be "
-                                      "between 0.0 and 1.0");
+              sqlite3ErrorMsg(pParse, "second argument to likelihood() must be a "
+                                      "constant between 0.0 and 1.0");
               pNC->nErr++;
             }
           }else{
diff --git a/test/whereG.test b/test/whereG.test
new file mode 100644 (file)
index 0000000..257a410
--- /dev/null
@@ -0,0 +1,93 @@
+# 2013-09-05
+#
+# 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.
+#
+#***********************************************************************
+# 
+# Test cases for query planning decisions and the unlikely() and
+# likelihood() functions.
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+do_execsql_test whereG-1.0 {
+  CREATE TABLE composer(
+    cid INTEGER PRIMARY KEY,
+    cname TEXT
+  );
+  CREATE TABLE album(
+    aid INTEGER PRIMARY KEY,
+    aname TEXT
+  );
+  CREATE TABLE track(
+    tid INTEGER PRIMARY KEY,
+    cid INTEGER REFERENCES composer,
+    aid INTEGER REFERENCES album,
+    title TEXT
+  );
+  CREATE INDEX track_i1 ON track(cid);
+  CREATE INDEX track_i2 ON track(aid);
+} {}
+do_eqp_test whereG-1.1 {
+  SELECT DISTINCT aname
+    FROM album, composer, track
+   WHERE unlikely(cname LIKE '%bach%')
+     AND composer.cid=track.cid
+     AND album.aid=track.aid;
+} {/.*composer.*track.*album.*/}
+do_eqp_test whereG-1.2 {
+  SELECT DISTINCT aname
+    FROM album, composer, track
+   WHERE likelihood(cname LIKE '%bach%', 0.5)
+     AND composer.cid=track.cid
+     AND album.aid=track.aid;
+} {/.*track.*composer.*album.*/}
+do_eqp_test whereG-1.3 {
+  SELECT DISTINCT aname
+    FROM album, composer, track
+   WHERE cname LIKE '%bach%'
+     AND composer.cid=track.cid
+     AND album.aid=track.aid;
+} {/.*track.*composer.*album.*/}
+do_eqp_test whereG-1.4 {
+  SELECT DISTINCT aname
+    FROM album, composer, track
+   WHERE cname LIKE '%bach%'
+     AND unlikely(composer.cid=track.cid)
+     AND unlikely(album.aid=track.aid);
+} {/.*track.*composer.*album.*/}
+
+do_test whereG-2.1 {
+  catchsql {
+    SELECT DISTINCT aname
+      FROM album, composer, track
+     WHERE likelihood(cname LIKE '%bach%', -0.01)
+       AND composer.cid=track.cid
+       AND album.aid=track.aid;
+  }
+} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
+do_test whereG-2.2 {
+  catchsql {
+    SELECT DISTINCT aname
+      FROM album, composer, track
+     WHERE likelihood(cname LIKE '%bach%', 1.01)
+       AND composer.cid=track.cid
+       AND album.aid=track.aid;
+  }
+} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
+do_test whereG-2.3 {
+  catchsql {
+    SELECT DISTINCT aname
+      FROM album, composer, track
+     WHERE likelihood(cname LIKE '%bach%', track.cid)
+       AND composer.cid=track.cid
+       AND album.aid=track.aid;
+  }
+} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
+
+finish_test