]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add a test case to cover a missed VDBE branch generated by window.c.
authordan <dan@noemail.net>
Mon, 1 Apr 2019 18:43:09 +0000 (18:43 +0000)
committerdan <dan@noemail.net>
Mon, 1 Apr 2019 18:43:09 +0000 (18:43 +0000)
FossilOrigin-Name: b36813d6467c82159bd3bb69d34ac28fc161a13052ca67d7cf9ad75e2aaea9d5

manifest
manifest.uuid
src/test_vdbecov.c
test/tester.tcl
test/window1.test

index 52a77e02bfa3dfc7a07d28a84114c072cd1dc32c..63995ceed43988be8d466666aef2e5a8189875bb 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C If\sthe\slibrary\sis\sbuilt\swith\sSQLITE_VDBE_COVERAGE\sdefined,\shave\sthe\sTcl\stests\sgenerate\sa\svdbe\scoverage\sreport\sin\sfile\stestdir/vdbe_coverage.txt.
-D 2019-04-01T17:24:20.449
+C Add\sa\stest\scase\sto\scover\sa\smissed\sVDBE\sbranch\sgenerated\sby\swindow.c.
+D 2019-04-01T18:43:09.978
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -573,7 +573,7 @@ F src/test_syscall.c 1073306ba2e9bfc886771871a13d3de281ed3939
 F src/test_tclsh.c eeafce33ad2136d57e5dec10f1e9a4347447eb72ffd504a1c7b9c6bfe2e71578
 F src/test_tclvar.c 33ff42149494a39c5fbb0df3d25d6fafb2f668888e41c0688d07273dcb268dfc
 F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858
-F src/test_vdbecov.c acabb99f510041cb4c9428078f5a7113793a53fa48d5fe28a2e7b7047ea6e6a8
+F src/test_vdbecov.c f60c6f135ec42c0de013a1d5136777aa328a776d33277f92abac648930453d43
 F src/test_vfs.c c6c6a58f66b26876c7b5769fb323a58b2c7120299b5084e7212c4116f902cbaa
 F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
 F src/test_windirent.c a895e2c068a06644eef91a7f0a32182445a893b9a0f33d0cdb4283dca2486ac1
@@ -1377,7 +1377,7 @@ F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30
 F test/temptable2.test d2940417496e2b9548e01d09990763fbe88c316504033256d51493e1f1a5ce6a
 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
-F test/tester.tcl 6e7b44695fc072765921ceb8a23bc745eeb86acc3a0e6c3023ab20160af7dab7
+F test/tester.tcl 64ac253a411db1af7649438f674213a45876ca70609570310a8652edf23e5d77
 F test/thread001.test b61a29dd87cf669f5f6ac96124a7c97d71b0c80d9012746072055877055cf9ef
 F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
@@ -1679,7 +1679,7 @@ F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2
 F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
 F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
 F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
-F test/window1.test 7484bf9a2ef2d845a50c9aff866efb8cd9d244b5916a9e97fb384e05f33d242b
+F test/window1.test 71bb9bfb705edff56ac592c1cf47286096558559b3fba7578e2ee5c8448e2a78
 F test/window2.tcl 9bfa842d8a62b0d36dc8c1b5972206393c43847433c6d75940b87fec93ce3143
 F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e
 F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03
@@ -1815,7 +1815,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P fa37cf9a6aa3e4325674cb6af68f617d25e349c3f694d0117a19a36fc42daf15
-R 5a984bd4dc22a21ee2cbeb73c0aebdfa
+P f0ed714637bf30443d0551d9b6fececa00fc9dfe9669fe720c4598ef71c61e2c
+R b75d12f9234f2b1e702210af1ac04c4a
 U dan
-Z c5db50cf41ee79fb991a649e5739587f
+Z 54f6e80cb73a18a92422dd48e4043d4f
index d3f387a72cbbd7f7ff11ab8bae26361c73f0b566..d5194cfd312320d9891893b7eb94d153771209e2 100644 (file)
@@ -1 +1 @@
-f0ed714637bf30443d0551d9b6fececa00fc9dfe9669fe720c4598ef71c61e2c
\ No newline at end of file
+b36813d6467c82159bd3bb69d34ac28fc161a13052ca67d7cf9ad75e2aaea9d5
\ No newline at end of file
index c00458cc36a5421caa8b6c2920f1b0bff1c90eae..a001b1df0a6a0e89cfb44a63cb25141b99d31403 100644 (file)
@@ -36,11 +36,17 @@ static void test_vdbe_branch(
   }
 }
 
-static void appendToList(Tcl_Obj *pList, int iLine, int iPath){
+static void appendToList(
+  Tcl_Obj *pList, 
+  int iLine, 
+  int iPath, 
+  const char *zNever
+){
   Tcl_Obj *pNew = Tcl_NewObj();
   Tcl_IncrRefCount(pNew);
   Tcl_ListObjAppendElement(0, pNew, Tcl_NewIntObj(iLine));
   Tcl_ListObjAppendElement(0, pNew, Tcl_NewIntObj(iPath));
+  Tcl_ListObjAppendElement(0, pNew, Tcl_NewStringObj(zNever, -1));
   Tcl_ListObjAppendElement(0, pList, pNew);
   Tcl_DecrRefCount(pNew);
 }
@@ -76,10 +82,17 @@ static int SQLITE_TCLAPI test_vdbe_coverage(
       Tcl_IncrRefCount(pRes);
       for(i=0; i<sizeof(aBranchArray); i++){
         u8 b = aBranchArray[i];
+        int bFlag = ((b >> 4)==4);
         if( b ){
-          if( (b & 0x01)==0 ) appendToList(pRes, i, 0);
-          if( (b & 0x02)==0 ) appendToList(pRes, i, 1);
-          if( (b & 0x04)==0 ) appendToList(pRes, i, 2);
+          if( (b & 0x01)==0 ){
+            appendToList(pRes, i, 0, bFlag ? "less than" : "falls through");
+          }
+          if( (b & 0x02)==0 ){
+            appendToList(pRes, i, 1, bFlag ? "equal" : "taken");
+          }
+          if( (b & 0x04)==0 ){
+            appendToList(pRes, i, 2, bFlag ? "greater-than" : "NULL");
+          }
         }
       }
       Tcl_SetObjResult(interp, pRes);
index 5a829aeba937aca2b6ed478e1ccb598cd7cea306..6efb59bd6d9afa15bf214e9b823f5ff9f909f385 100644 (file)
@@ -1330,7 +1330,7 @@ proc vdbe_coverage_report {} {
   }
   set fd [open vdbe_coverage.txt w]
   foreach miss [vdbe_coverage report] {
-    foreach {line branch} $miss {}
+    foreach {line branch never} $miss {}
     set nextfile ""
     while {[llength $lSrc]>0 && [lindex $lSrc 0 0] < $line} {
       set nextfile [lindex $lSrc 0 1]
@@ -1340,7 +1340,7 @@ proc vdbe_coverage_report {} {
       puts $fd ""
       puts $fd "### $nextfile ###"
     }
-    puts $fd "Vdbe branch $line: path $branch never taken"
+    puts $fd "Vdbe branch $line: never $never (path $branch)"
   }
   close $fd
 }
index 5eea9de8a2a78cbb56c4facc1dd9485c6dfd77ee..d99aebec0e67dd0fb952956b4e009c9c282ab1ad 100644 (file)
@@ -1067,6 +1067,19 @@ do_execsql_test 26.3 {
   ) FROM t2
 } {1 1  2 0  3 1  4 0}
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 27.0 {
+  CREATE TABLE t1(x);
+  INSERT INTO t1 VALUES(NULL), (1), (2), (3), (4), (5);
+}
+do_execsql_test 27.1 {
+  SELECT min(x) FROM t1;
+} {1}
+do_execsql_test 27.2 {
+  SELECT min(x) OVER win FROM t1
+  WINDOW win AS (ORDER BY rowid ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
+} {1 1 1 2 3 4}
 
 
 finish_test