From 68748ec50924a77e19498766d5243851ca836d29 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 14 Oct 2019 20:32:31 +0000 Subject: [PATCH] Futher improvements to the IN operator for row-values on virtual tables. FossilOrigin-Name: bc751fb64d5b08e5ca4c85cd1c6fbf09590fa9dad7e176ba373082ea373655b5 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/wherecode.c | 6 ++++-- test/fuzzdata8.db | Bin 1364992 -> 1371136 bytes 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 9f7e150ca6..da13312c73 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C New\stest\scases\sin\stest/fuzzdata8.db. -D 2019-10-14T15:24:20.778 +C Futher\simprovements\sto\sthe\sIN\soperator\sfor\srow-values\son\svirtual\stables. +D 2019-10-14T20:32:31.002 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -613,7 +613,7 @@ F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a F src/walker.c d5a94907dcac990e31976be9dc769d17f6a806782593d6aec9d760ee01ec22cd F src/where.c 9f3f23efc45934e7b7ea6c0c1042420b73053e7c3264feef6faf9ce6fbd5df61 F src/whereInt.h 2c6bae136a7c0be6ff75dc36950d1968c67d005c8e51d7a9d77cb996bb4843d9 -F src/wherecode.c fde87356e0393d91cf29f27817ed02583e152517b5cc641cd0d0c94912a5603a +F src/wherecode.c e6173659b15105ab9cc62388ea83077587aec8b77622e6b1da7bac029334d411 F src/whereexpr.c 05c283d26aa9c3f5d1bf13a5f6a573b43295b9db280eff18e26f97d7d7f119b4 F src/window.c 064f251451c8e2a1c76b6269229d911a651e119c6a5f522b6eaebf8dc8714041 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@ -1015,7 +1015,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db e7a86fd83dda151d160445d542e32e5c6019c541b3a74c2a525b6ac640639711 -F test/fuzzdata8.db 14b531b71ba1fb5f86aa80b741f98867c2d25bd0731b966513e4af04700e2557 +F test/fuzzdata8.db 7a8baf778cbaf9c9744c9dd9b7aa66c4365d96c0ef8e1900e99a48a48f19778c F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1847,7 +1847,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 aa57d7abac0bb92d4d5fd4e093a11cf8efc04e4eed748b2a400d01f137250649 -R ca568602d34a734421b347284b3a3d99 +P 344d9cb0c726078af6deb4a26bed3aded5b26914bb286d3446d3a4e9150840b7 +R 2718afa6f840036afeb5adff293ecb86 U drh -Z d532a8411ac1d1ff35d5311fa4be383e +Z b3560113c59df505425231fe27d4299c diff --git a/manifest.uuid b/manifest.uuid index d53877e082..d83dff67ae 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -344d9cb0c726078af6deb4a26bed3aded5b26914bb286d3446d3a4e9150840b7 \ No newline at end of file +bc751fb64d5b08e5ca4c85cd1c6fbf09590fa9dad7e176ba373082ea373655b5 \ No newline at end of file diff --git a/src/wherecode.c b/src/wherecode.c index cf5ce5d4ae..3a8fba81bb 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -1305,6 +1305,7 @@ Bitmask sqlite3WhereCodeOneLoopStart( iIn = pLevel->u.in.nIn; for(j=nConstraint-1; j>=0; j--){ pTerm = pLoop->aLTerm[j]; + if( (pTerm->eOperator & WO_IN)!=0 ) iIn--; if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){ disableTerm(pLevel, pTerm); }else if( (pTerm->eOperator & WO_IN)!=0 && @@ -1320,8 +1321,8 @@ Bitmask sqlite3WhereCodeOneLoopStart( ** encoding of the value in the register, so it *must* be reloaded. */ assert( pLevel->u.in.aInLoop!=0 || db->mallocFailed ); if( !db->mallocFailed ){ - assert( iIn>0 ); - pOp = sqlite3VdbeGetOp(v, pLevel->u.in.aInLoop[--iIn].addrInTop); + assert( iIn>=0 && iInu.in.nIn ); + pOp = sqlite3VdbeGetOp(v, pLevel->u.in.aInLoop[iIn].addrInTop); assert( pOp->opcode==OP_Column || pOp->opcode==OP_Rowid ); assert( pOp->opcode!=OP_Column || pOp->p3==iReg+j+2 ); assert( pOp->opcode!=OP_Rowid || pOp->p2==iReg+j+2 ); @@ -1345,6 +1346,7 @@ Bitmask sqlite3WhereCodeOneLoopStart( } } } + assert( iIn==0 || db->mallocFailed ); /* These registers need to be preserved in case there is an IN operator ** loop. So we could deallocate the registers here (and potentially ** reuse them later) if (pLoop->wsFlags & WHERE_IN_ABLE)==0. But it seems diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 89406974898f29e8cac0e556157d009f8949fe4c..e024e6d627e997f393089741f9a34ccc5fded452 100644 GIT binary patch delta 23679 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 KM5rC4-v|Jeg2o>J delta 22521 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ðEjSpM= zB)o6_U5A$+hj-;4I=uQgybT^U$wpAScRe$}_T7nU{)8v>d4XNuqi>Pt_|BA|1&@wp z^CJ(^511e7*@CfeE5Vpr!}G~Q36M#!fj_>6`4imTF(t~A!a~01GQe# zx&046`RPfAzVoCpe*Sl3{PMUlel0VGM%}J^_KNV^GBN5>_dP-FtxR{X=LaPTat-#hak{VEnKA`$g@C>JcO#v6-zFHExoGtn! zsHOm6lvB}@8$jKaf5BZiQm^&|(ptQ$4>L{ARAe9zP{ij!rvw&xn$+@qDsnyZT1#$5 zO=ftu0cBkX>L)-rnw8YbWiSr_3Eu=ss`4Du`KsE;biSIr9|WBMOrGFg#QQh;KL@{t A_W%F@ -- 2.47.2