Merge in changes from the trunk.

FossilOrigin-Name: 76bf0eee1fd4003a3f1c39922f8f059611d41dd0
This commit is contained in:
drh 2010-04-30 22:28:06 +00:00
commit 27d52b2b19
4 changed files with 46 additions and 13 deletions

View File

@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
C Change\sthe\sSHM\sVFS\slogic\sin\sos_unix.c\sso\sthat\sit\sdoes\snot\shold\san\sexclusive\nlock\sn\sthe\smapped\smemory\swhen\salso\sholding\sa\sCHECKPOINT\slock.\s\sThis\nimproves\sconcurrency\sbetween\sreaders\sand\scheckpointers.
D 2010-04-30T17:47:51
C Merge\sin\schanges\sfrom\sthe\strunk.
D 2010-04-30T22:28:06
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in d83a0ffef3dcbfb08b410a6c6dd6c009ec9167fb
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -227,7 +227,7 @@ F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
F src/wal.c 2115a90d42e1cc14c0f196677609f6c9b32afec7
F src/wal.h c3f347ba8f1cde46d9bcc6fedaf3ed0aa4b53294
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
F src/where.c faadd9c2bf08868e5135192b44e0d753e363a885
F src/where.c 75fee9e255b62f773fcadd1d1f25b6f63ac7a356
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 14165b3e32715b700b5f0cbf8f6e3833dda0be45
@ -769,7 +769,7 @@ F test/walmode.test 40119078da084e6a7403ba57485d5a86ee0e2646
F test/walslow.test 38076d5fad49e3678027be0f8110e6a32d531dc2
F test/walthread.test c9c3b5d19eeb4968254d93f61a7ccd6e8b63f554
F test/where.test de337a3fe0a459ec7c93db16a519657a90552330
F test/where2.test 45eacc126aabb37959a387aa83e59ce1f1f03820
F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554
F test/where3.test aa44a9b29e8c9f3d7bb94a3bb3a95b31627d520d
F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
@ -811,14 +811,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P a012aed498bf41a5f6f3006182b0c4c2ab0fe1bb
R 8c6bff1c20fef6364d82d75506d94733
P 8660cda6f8ef43bd276897ef3b5fc2376b5684dc 946e06cd2a2cc209b0786b7e9d28c0746320d646
R 34e37e2e07b357ad442391f6d6aea47a
U drh
Z 01ae0928e38536e336a0fa4223ef6f3d
Z f36c3392b22f93b3ce95c9951a47e7e6
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFL2xfKoxKgR168RlERAu5rAKCJ9R7soT0Y2Sx2CpYlaWrlm57SuACeIVK9
g9rON3+p6pxGk+AOwiTbLws=
=wAdF
iD8DBQFL21l5oxKgR168RlERAqNRAJ906Wol3RyZLztZzmkcpokv0+CtRgCfbeMz
ohrTG6i1s6JqVvmqdQdSCDg=
=50x7
-----END PGP SIGNATURE-----

View File

@ -1 +1 @@
8660cda6f8ef43bd276897ef3b5fc2376b5684dc
76bf0eee1fd4003a3f1c39922f8f059611d41dd0

View File

@ -2897,7 +2897,7 @@ static void bestIndex(
*/
static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
if( pTerm
&& ALWAYS((pTerm->wtFlags & TERM_CODED)==0)
&& (pTerm->wtFlags & TERM_CODED)==0
&& (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_FromJoin))
){
pTerm->wtFlags |= TERM_CODED;
@ -3095,7 +3095,9 @@ static int codeAllEqualityTerms(
int k = pIdx->aiColumn[j];
pTerm = findTerm(pWC, iCur, k, notReady, pLevel->plan.wsFlags, pIdx);
if( NEVER(pTerm==0) ) break;
assert( (pTerm->wtFlags & TERM_CODED)==0 );
/* The following true for indices with redundant columns.
** Ex: CREATE INDEX i1 ON t1(a,b,a); SELECT * FROM t1 WHERE a=0 AND b=0; */
testcase( (pTerm->wtFlags & TERM_CODED)!=0 );
r1 = codeEqualityTerm(pParse, pTerm, pLevel, regBase+j);
if( r1!=regBase+j ){
if( nReg==1 ){

View File

@ -620,4 +620,35 @@ ifcapable or_opt&&tclvar {
}
}
# Indices with redundant columns
#
do_test where2-11.1 {
execsql {
CREATE TABLE t11(a,b,c,d);
CREATE INDEX i11aba ON t11(a,b,a,c); -- column A occurs twice.
INSERT INTO t11 VALUES(1,2,3,4);
INSERT INTO t11 VALUES(5,6,7,8);
INSERT INTO t11 VALUES(1,2,9,10);
INSERT INTO t11 VALUES(5,11,12,13);
SELECT c FROM t11 WHERE a=1 AND b=2 ORDER BY c;
}
} {3 9}
do_test where2-11.2 {
execsql {
CREATE INDEX i11cccccccc ON t11(c,c,c,c,c,c,c,c); -- repeated column
SELECT d FROM t11 WHERE c=9;
}
} {10}
do_test where2-11.3 {
execsql {
SELECT d FROM t11 WHERE c IN (1,2,3,4,5);
}
} {4}
do_test where2-11.4 {
execsql {
SELECT d FROM t11 WHERE c=7 OR (a=1 AND b=2) ORDER BY d;
}
} {4 8 10}
finish_test