-C Performance\simprovements\swhen\sreading\slarge\sblobs,\sespecially\sif\nSQLITE_DIRECT_OVERFLOW_READ\sis\sdefined.
-D 2014-04-04T18:49:19.417
+C Modify\sthe\sOR-clause\shandling\sso\sthat\sit\scan\ssafely\sdeal\swith\sOR-clause\s\nwith\s17\sor\smore\sterms.\s\sFix\sfor\sticket\s[10fb063b1179be53ea0b53bb].
+D 2014-04-10T02:24:48.549
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/printf.c e5a0005f8b3de21f85da6a709d2fbee76775bf4b
F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
F src/resolve.c 273d5f47c4e2c05b2d3d2bffeda939551ab59e66
-F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
+F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be
F src/select.c 269c3e31a450fce642a10569221a49180348c88e
F src/shell.c 5260f2ada8dd06e9f5ae0a448c8c01e7a75dd881
F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80
F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc
-F src/sqliteInt.h cc9582a91b2910404ccda7b7e198815ea0f75948
+F src/sqliteInt.h 9b1361478e821b1a68f7993047a922e3155ca87d
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
F src/utf.c 6dc9ec9f1b3db43ae8ba0365377f11df1ee4c01c
F src/util.c c46c90459ef9bdc0c6c73803cf4c55425b4771cf
F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
-F src/vdbe.c e811a0081149fb90db367026d154cd7efb3c7098
+F src/vdbe.c bf284edea1cee0508dc93c79a73498e0f317edb7
F src/vdbe.h 394464909ed682334aa3d5831aae0c2fe2abef94
F src/vdbeInt.h e6d83e5bfd62fc6685ba1ed6153f7099f82de9f7
F src/vdbeapi.c 0ed6053f947edd0b30f64ce5aeb811872a3450a4
F test/whereA.test 4d253178d135ec46d1671e440cd8f2b916aa6e6b
F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
F test/whereC.test d6f4ecd4fa2d9429681a5b22a25d2bda8e86ab8a
-F test/whereD.test 6c2feb79ef1f68381b07f39017fe5f9b96da8d62
+F test/whereD.test fd9120e262f9da3c45940f52aefeef4d15b904e5
F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
F test/whereF.test 5b2ba0dbe8074aa13e416b37c753991f0a2492d7
F test/whereG.test 2533b72ed4a31fd1687230a499b557b911525344
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P 683dd379a293b2f330e1e4cd746f190527fe48ee 834bf1c367e1ccd498c7f9f843be2d2aa11ffb3c
-R 3de83004edd963c4959934c7f5a61b03
-T +closed 834bf1c367e1ccd498c7f9f843be2d2aa11ffb3c
+P 2312eb6a9eb31051db4e0baf19e033ba39adc7b1
+R 2f4de3ec11a98155d746ed7623586007
U drh
-Z f4df6ef034f1a63bb656a3ddc69e0011
+Z d44fb7b759451f899c9b9bdcaf2f6d96
-2312eb6a9eb31051db4e0baf19e033ba39adc7b1
\ No newline at end of file
+a67b5312f63909737c052fe58ab5772d45530d49
\ No newline at end of file
struct RowSetEntry *pFresh; /* Source of new entry objects */
struct RowSetEntry *pForest; /* List of binary trees of entries */
u16 nFresh; /* Number of objects on pFresh */
- u8 rsFlags; /* Various flags */
- u8 iBatch; /* Current insert batch */
+ u16 rsFlags; /* Various flags */
+ int iBatch; /* Current insert batch */
};
/*
** on pRowSet->pEntry, then sort those entires into the forest at
** pRowSet->pForest so that they can be tested.
*/
-int sqlite3RowSetTest(RowSet *pRowSet, u8 iBatch, sqlite3_int64 iRowid){
+int sqlite3RowSetTest(RowSet *pRowSet, int iBatch, sqlite3_int64 iRowid){
struct RowSetEntry *p, *pTree;
/* This routine is never called after sqlite3RowSetNext() */
RowSet *sqlite3RowSetInit(sqlite3*, void*, unsigned int);
void sqlite3RowSetClear(RowSet*);
void sqlite3RowSetInsert(RowSet*, i64);
-int sqlite3RowSetTest(RowSet*, u8 iBatch, i64);
+int sqlite3RowSetTest(RowSet*, int iBatch, i64);
int sqlite3RowSetNext(RowSet*, i64*);
void sqlite3CreateView(Parse*,Token*,Token*,Token*,Select*,int,int);
assert( pOp->p4type==P4_INT32 );
assert( iSet==-1 || iSet>=0 );
if( iSet ){
- exists = sqlite3RowSetTest(pIn1->u.pRowSet,
- (u8)(iSet>=0 ? iSet & 0xf : 0xff),
- pIn3->u.i);
+ exists = sqlite3RowSetTest(pIn1->u.pRowSet, iSet, pIn3->u.i);
VdbeBranchTaken(exists!=0,2);
if( exists ){
pc = pOp->p2 - 1;
ORDER BY a;
} {3 4 3 4}
+# Verify fix of a bug reported on the mailing list by Peter Reid
+#
+do_execsql_test 5.1 {
+ DROP TABLE IF EXISTS t;
+ CREATE TABLE t(c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17);
+ CREATE INDEX tc0 ON t(c0);
+ CREATE INDEX tc1 ON t(c1);
+ CREATE INDEX tc2 ON t(c2);
+ CREATE INDEX tc3 ON t(c3);
+ CREATE INDEX tc4 ON t(c4);
+ CREATE INDEX tc5 ON t(c5);
+ CREATE INDEX tc6 ON t(c6);
+ CREATE INDEX tc7 ON t(c7);
+ CREATE INDEX tc8 ON t(c8);
+ CREATE INDEX tc9 ON t(c9);
+ CREATE INDEX tc10 ON t(c10);
+ CREATE INDEX tc11 ON t(c11);
+ CREATE INDEX tc12 ON t(c12);
+ CREATE INDEX tc13 ON t(c13);
+ CREATE INDEX tc14 ON t(c14);
+ CREATE INDEX tc15 ON t(c15);
+ CREATE INDEX tc16 ON t(c16);
+ CREATE INDEX tc17 ON t(c17);
+
+ INSERT INTO t(c0, c16) VALUES (1,1);
+
+ SELECT * FROM t WHERE
+ c0=1 or c1=1 or c2=1 or c3=1 or
+ c4=1 or c5=1 or c6=1 or c7=1 or
+ c8=1 or c9=1 or c10=1 or c11=1 or
+ c12=1 or c13=1 or c14=1 or c15=1 or
+ c16=1 or c17=1;
+} {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1 {}}
+do_execsql_test 5.2 {
+ DELETE FROM t;
+ INSERT INTO t(c0,c17) VALUES(1,1);
+ SELECT * FROM t WHERE
+ c0=1 or c1=1 or c2=1 or c3=1 or
+ c4=1 or c5=1 or c6=1 or c7=1 or
+ c8=1 or c9=1 or c10=1 or c11=1 or
+ c12=1 or c13=1 or c14=1 or c15=1 or
+ c16=1 or c17=1;
+} {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1}
+do_execsql_test 5.3 {
+ DELETE FROM t;
+ INSERT INTO t(c0,c15) VALUES(1,1);
+ SELECT * FROM t WHERE
+ c0=1 or c1=1 or c2=1 or c3=1 or
+ c4=1 or c5=1 or c6=1 or c7=1 or
+ c8=1 or c9=1 or c10=1 or c11=1 or
+ c12=1 or c13=1 or c14=1 or c15=1 or
+ c16=1 or c17=1;
+} {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1 {} {}}
finish_test