]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Corner-case changes to the bytecode virtual table for testability and bytecode-function
authordrh <drh@noemail.net>
Sat, 2 May 2020 00:01:39 +0000 (00:01 +0000)
committerdrh <drh@noemail.net>
Sat, 2 May 2020 00:01:39 +0000 (00:01 +0000)
correctness.

FossilOrigin-Name: baa720e4a88f268ed95337daab5f434fd3263b00f09101cddc6424765bf3b722

manifest
manifest.uuid
src/shell.c.in
src/vdbeaux.c
src/vdbevtab.c

index fdbedef2b394fc1b6b54750841ae1c9cfc2869c0..77f7d33d15ac87009bdf841828d9e05b54c06c9b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\srecent\senhancements\sfrom\strunk.
-D 2020-05-01T18:58:21.571
+C Corner-case\schanges\sto\sthe\sbytecode\svirtual\stable\sfor\stestability\sand\ncorrectness.
+D 2020-05-02T00:01:39.619
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -534,7 +534,7 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
 F src/resolve.c d36a2b1639e1c33d7b508abfd3452a63e7fd81737f6f3940bfef085fca6f21f4
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 F src/select.c c310de94bf67315054587c18a16e7a3e3dc3a98dc79168f0c2b776548d43f6cd
-F src/shell.c.in 86cd0f0412b9739b769fafdfcad28f731882d522042a95c30ab033a5eba68b03
+F src/shell.c.in cf2d24f54412c06e5fb34af7fabc748651125e1dceac29b740e91f06d23447b6
 F src/sqlite.h.in b20d5dc52765ff82f3701395a7e670611ddf138ee0ae84482452ad3a0b5f24b5
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 2d1af80082edffd71c6f96f70ad1ce6a4fb46615ad10291fc77fe0dea9ff0197
@@ -609,12 +609,12 @@ F src/vdbe.c 972999395eee88702091fb5d50cf4effd07889c371807d222a7f517388e6378e
 F src/vdbe.h 07b8c636a87df8b6e58f29d6badd7f10d5844353deff1d7c88ed1c2bfe3bbd35
 F src/vdbeInt.h 571413068b5ac07e2ed8ca7a02fa529622fd5455ae6981498376e5e492d2e5ef
 F src/vdbeapi.c d176ee7251d5344de7bb2a0d2dd0fe536834e5843d9bc2389e0f5cdcd5374141
-F src/vdbeaux.c d191d07906d284acb458c8ba3e24a5ea0ab7610c2800f97d683d0917bda0e66d
+F src/vdbeaux.c 319a6e44cff0e8ba710a8374778043609d11cf82cb4ab2ba0a80dde52e607a08
 F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
 F src/vdbemem.c 39b942ecca179f4f30a32b54579a85d74ccaefa5af2a0ad2700abe5ef0768b22
 F src/vdbesort.c 2be76d26998ce2b3324cdcc9f6443728e54b6c7677c553ad909c7d7cfab587df
 F src/vdbetrace.c fa3bf238002f0bbbdfb66cc8afb0cea284ff9f148d6439bc1f6f2b4c3b7143f0
-F src/vdbevtab.c 3f7fd339425729f6cef36ef0bc576bf42641d2a664c746b54a6e2c045ae1a248
+F src/vdbevtab.c 8094dfc28dad82d60a1c832020a1b201a5381dc185c14638affc6d4e9d54c653
 F src/vtab.c 7b704a90515a239c6cdba6a66b1bb3a385e62326cceb5ecb05ec7a091d6b8515
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c ea8dad28bb0e2b85ac1ab7618968687ff5fd522af8a1a38d6960ec176ebc8ee6
@@ -1863,7 +1863,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 7e6576ec00fde277c5c7abac264f7ec7e531de00c4e112bf733a07fe703fadcc 853703cd6d44d6dd48ef5eda6523e374b8ebdf7c338ddaad31c15a40a8b3fd9b
-R e24ff42847364b0b675f72b087b80143
+P 96dfc71ea599702ef38b60952d03e95dce5a8c534cd943e076e9c76b00e61e65
+R 8a6312f86dfd0f2dc1b9dbd32625eb27
 U drh
-Z d4de9e26c72a33ad0b73d11829e14172
+Z 054131aab304a488c76322b7f6a162fc
index a6fc3f83364a8332ef8a58c23fc54eafc22f39ac..8a146fc4398ae92d3d2c5923eba3612c96b437f7 100644 (file)
@@ -1 +1 @@
-96dfc71ea599702ef38b60952d03e95dce5a8c534cd943e076e9c76b00e61e65
\ No newline at end of file
+baa720e4a88f268ed95337daab5f434fd3263b00f09101cddc6424765bf3b722
\ No newline at end of file
index f65caaa8acc86a058ca81e383ed0d082bd7a00a1..5858296420599d1596ff4917180fdc03f5ca80ac 100644 (file)
@@ -3158,6 +3158,7 @@ static int shell_exec(
             const char *zEQPLine = (const char*)sqlite3_column_text(pExplain,3);
             int iEqpId = sqlite3_column_int(pExplain, 0);
             int iParentId = sqlite3_column_int(pExplain, 1);
+            if( zEQPLine==0 ) zEQPLine = "";
             if( zEQPLine[0]=='-' ) eqp_render(pArg);
             eqp_append(pArg, iEqpId, iParentId, zEQPLine);
           }
index da8108a593a5f2b5e9b9a67e4a237a7386995f7d..454be534baffa07d42c4d4be0c2c91df150b8e54 100644 (file)
@@ -1847,7 +1847,8 @@ void sqlite3VdbePrintOp(FILE *pOut, int pc, VdbeOp *pOp){
   ** by the mkopcodeh.awk and mkopcodec.awk scripts which extract the
   ** information from the vdbe.c source text */
   fprintf(pOut, zFormat1, pc, 
-      sqlite3OpcodeName(pOp->opcode), pOp->p1, pOp->p2, pOp->p3, zP4, pOp->p5,
+      sqlite3OpcodeName(pOp->opcode), pOp->p1, pOp->p2, pOp->p3, 
+      zP4 ? zP4 : "", pOp->p5,
       zCom ? zCom : ""
   );
   fflush(pOut);
index d97db1c156638a1571dcd11360b4fc8863a7c68b..95ea0ad228a7a4d0417a52d6357981340b1cd8be 100644 (file)
@@ -224,7 +224,6 @@ static int bytecodevtabColumn(
             if( pIdx->tnum==iRoot ){
               pCur->zName = pIdx->zName;
               pCur->zType = "index";
-              break;
             }
           }
         }
@@ -268,11 +267,11 @@ static int bytecodevtabColumn(
       break;
     case 8: {   /* subprog */
       Op *aOp = pCur->aOp;
+      assert( aOp[0].opcode==OP_Init );
+      assert( aOp[0].p4.z==0 || strncmp(aOp[0].p4.z,"-" "- ",3)==0 );
       if( pCur->iRowid==pCur->iAddr+1 ){
         break;  /* Result is NULL for the main program */
-      }else if( aOp[0].p4type==P4_DYNAMIC
-       && aOp[0].p4.z!=0
-       && strncmp(aOp[0].p4.z,"-- ", 3)==0 ){
+      }else if( aOp[0].p4.z!=0 ){
          sqlite3_result_text(ctx, aOp[0].p4.z+3, -1, SQLITE_STATIC);
       }else{
          sqlite3_result_text(ctx, "(FK)", 4, SQLITE_STATIC);