mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Do not assume an index contains unique entries unless it is declared UNIQUE and NOT NULL is specified for all columns. Fix for [7b4fee9f6c].
FossilOrigin-Name: e3b1f625518edc0e925116668dca5d25c3232b59
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C Detect\sand\sreport\soversized\srecords\sconstructed\sfrom\smultiple\szeroblobs.
|
C Do\snot\sassume\san\sindex\scontains\sunique\sentries\sunless\sit\sis\sdeclared\sUNIQUE\sand\sNOT\sNULL\sis\sspecified\sfor\sall\scolumns.\sFix\sfor\s[7b4fee9f6c].
|
||||||
D 2015-04-11T02:08:48.265
|
D 2015-04-11T11:44:27.202
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in 5f78b1ab81b64e7c57a75d170832443e66c0880a
|
F Makefile.in 5f78b1ab81b64e7c57a75d170832443e66c0880a
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@ -307,7 +307,7 @@ F src/vxworks.h c18586c8edc1bddbc15c004fa16aeb1e1342b4fb
|
|||||||
F src/wal.c 878c8e1a51cb2ec45c395d26b7d5cd9e1a098e4a
|
F src/wal.c 878c8e1a51cb2ec45c395d26b7d5cd9e1a098e4a
|
||||||
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
|
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
|
||||||
F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
|
F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
|
||||||
F src/where.c 85d832efa5ef57de542db7f430b72fecd3af8b38
|
F src/where.c bd435b75b9de53e11b5eb561540e395041ac0cba
|
||||||
F src/whereInt.h cbe4aa57326998d89e7698ca65bb7c28541d483c
|
F src/whereInt.h cbe4aa57326998d89e7698ca65bb7c28541d483c
|
||||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||||
@ -768,7 +768,7 @@ F test/notify1.test 669b2b743618efdc18ca4b02f45423d5d2304abf
|
|||||||
F test/notify2.test 2ecabaa1305083856b7c39cf32816b612740c161
|
F test/notify2.test 2ecabaa1305083856b7c39cf32816b612740c161
|
||||||
F test/notify3.test 10ff25cde502e72a92053a2f215d64bece4ef934
|
F test/notify3.test 10ff25cde502e72a92053a2f215d64bece4ef934
|
||||||
F test/notnull.test f8fcf58669ddba79274daa2770d61dfad8274f62
|
F test/notnull.test f8fcf58669ddba79274daa2770d61dfad8274f62
|
||||||
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
F test/null.test 0dcce4f04284ec66108c503327ad6d224c0752b3
|
||||||
F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1
|
F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1
|
||||||
F test/openv2.test 0d3040974bf402e19b7df4b783e447289d7ab394
|
F test/openv2.test 0d3040974bf402e19b7df4b783e447289d7ab394
|
||||||
F test/orderby1.test eb246e377612b21a418fbea57047ba8ea88aaa6b
|
F test/orderby1.test eb246e377612b21a418fbea57047ba8ea88aaa6b
|
||||||
@ -1250,7 +1250,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 40c417a7efb17221cec4a0a703863854bcab8db2
|
P 9e139afd92116ebc593114ed63b57c8f469653f6
|
||||||
R fd7ff5723f566045f2ba0751ddce0467
|
R cb22563425ec3fdd92f04af95791ab8d
|
||||||
U drh
|
U dan
|
||||||
Z f6419661cff2a502b477cceb45bb8fdd
|
Z a8ae95b3c171e79da5c1dd8c91dd053d
|
||||||
|
@ -1 +1 @@
|
|||||||
9e139afd92116ebc593114ed63b57c8f469653f6
|
e3b1f625518edc0e925116668dca5d25c3232b59
|
@ -4781,7 +4781,7 @@ static int whereLoopAddBtreeIndex(
|
|||||||
}else if( eOp & (WO_EQ) ){
|
}else if( eOp & (WO_EQ) ){
|
||||||
pNew->wsFlags |= WHERE_COLUMN_EQ;
|
pNew->wsFlags |= WHERE_COLUMN_EQ;
|
||||||
if( iCol<0 || (nInMul==0 && pNew->u.btree.nEq==pProbe->nKeyCol-1) ){
|
if( iCol<0 || (nInMul==0 && pNew->u.btree.nEq==pProbe->nKeyCol-1) ){
|
||||||
if( iCol>=0 && !IsUniqueIndex(pProbe) ){
|
if( iCol>=0 && pProbe->uniqNotNull==0 ){
|
||||||
pNew->wsFlags |= WHERE_UNQ_WANTED;
|
pNew->wsFlags |= WHERE_UNQ_WANTED;
|
||||||
}else{
|
}else{
|
||||||
pNew->wsFlags |= WHERE_ONEROW;
|
pNew->wsFlags |= WHERE_ONEROW;
|
||||||
|
@ -278,6 +278,23 @@ do_test null-8.15 {
|
|||||||
}
|
}
|
||||||
} {1}
|
} {1}
|
||||||
|
|
||||||
|
do_execsql_test null-9.1 {
|
||||||
|
CREATE TABLE t5(a, b, c);
|
||||||
|
CREATE UNIQUE INDEX t5ab ON t5(a, b);
|
||||||
|
|
||||||
|
INSERT INTO t5 VALUES(1, NULL, 'one');
|
||||||
|
INSERT INTO t5 VALUES(1, NULL, 'i');
|
||||||
|
INSERT INTO t5 VALUES(NULL, 'x', 'two');
|
||||||
|
INSERT INTO t5 VALUES(NULL, 'x', 'ii');
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test null-9.2 {
|
||||||
|
SELECT * FROM t5 WHERE a = 1 AND b IS NULL;
|
||||||
|
} {1 {} one 1 {} i}
|
||||||
|
|
||||||
|
do_execsql_test null-9.3 {
|
||||||
|
SELECT * FROM t5 WHERE a IS NULL AND b = 'x';
|
||||||
|
} {{} x two {} x ii}
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
Reference in New Issue
Block a user