1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-08 03:22:21 +03:00

Prevent a segfault when automatic indices try to use a column with an

unknown collating function.  Ticket [77aa3b1e6592582e38605d36].  This
check-in also removes some stray \r characters unrelated to the problem.

FossilOrigin-Name: f01030a0df4f94f886ab209ee8766b095da28c1e
This commit is contained in:
drh
2011-02-10 17:46:14 +00:00
parent 3772206769
commit 84e30ca0ed
4 changed files with 16 additions and 15 deletions

View File

@@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE----- -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Hash: SHA1
C Refactor\sthe\scost\sfunction\sin\sthe\squery\splanner.\s\sGive\sextra\scost\s(thus\nreduce\slikelihood\sof\sselection)\sto\sfull\stable\sscans. C Prevent\sa\ssegfault\swhen\sautomatic\sindices\stry\sto\suse\sa\scolumn\swith\san\nunknown\scollating\sfunction.\s\sTicket\s[77aa3b1e6592582e38605d36].\s\sThis\ncheck-in\salso\sremoves\ssome\sstray\s\\r\scharacters\sunrelated\sto\sthe\sproblem.
D 2011-02-10T00:08:47.701 D 2011-02-10T17:46:14.555
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -132,7 +132,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/ctime.c 7deec4534f3b5a0c3b4a4cbadf809d321f64f9c4 F src/ctime.c 7deec4534f3b5a0c3b4a4cbadf809d321f64f9c4
F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b
F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd
F src/expr.c 9b02a6dc3c7b97be01619674abebb59ed8830f1d F src/expr.c 400e27db545e0d8b3b18043363294b525596f507
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c 17950a28f28b23e8ad3feaac5fc88c324d2f600a F src/fkey.c 17950a28f28b23e8ad3feaac5fc88c324d2f600a
F src/func.c cb41f614edc43b00bfeb030f9768e80eaff47edd F src/func.c cb41f614edc43b00bfeb030f9768e80eaff47edd
@@ -244,7 +244,7 @@ F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
F src/wal.c aca10a60655e103fc8630a75345000f43c6d47ca F src/wal.c aca10a60655e103fc8630a75345000f43c6d47ca
F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840 F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
F src/where.c 83a89fe4822caf45391459224891b66d3e2ba237 F src/where.c ebecb7b9e08cf1c0bf84bbc26756ff09e9479f08
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 51756962d522e474338e9b2ebb26e7364d4aa125 F test/all.test 51756962d522e474338e9b2ebb26e7364d4aa125
@@ -909,14 +909,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 7cc515edc9cade2bc6c74699b3e4153bf2b74ebb P 878da276ebf643b716ddd650d4d0ca3595fe5bf2
R 08fe91f055ce4403c87684038df163cb R 7115e9b9167d54b1bd5babaa217ab874
U drh U drh
Z 1ef92ed18aa7502ebbef18dbb05b7e9d Z a8209f45d500942f895f6428366345d2
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux) Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFNUyyToxKgR168RlERAiF4AKCIVGuKzORossDsmQaAQbZKU4Xd/gCfWOhI iD8DBQFNVCRpoxKgR168RlERAt6wAJoDNGsC+YrJposBo+/cLnxCnBAN3gCfbqz3
4aKFZ+7oNbX7dj0deyXznl8= zSgAQldrrpVNMc5IxEfC5AM=
=Ts3F =muXT
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----

View File

@@ -1 +1 @@
878da276ebf643b716ddd650d4d0ca3595fe5bf2 f01030a0df4f94f886ab209ee8766b095da28c1e

View File

@@ -92,7 +92,7 @@ Expr *sqlite3ExprSetCollByToken(Parse *pParse, Expr *pExpr, Token *pCollName){
CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
CollSeq *pColl = 0; CollSeq *pColl = 0;
Expr *p = pExpr; Expr *p = pExpr;
while( ALWAYS(p) ){ while( p ){
int op; int op;
pColl = p->pColl; pColl = p->pColl;
if( pColl ) break; if( pColl ) break;

View File

@@ -1882,7 +1882,8 @@ static void constructAutomaticIndex(
idxCols |= cMask; idxCols |= cMask;
pIdx->aiColumn[n] = pTerm->u.leftColumn; pIdx->aiColumn[n] = pTerm->u.leftColumn;
pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight); pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight);
pIdx->azColl[n] = pColl->zName; assert( pColl!=0 || pParse->nErr>0 );
pIdx->azColl[n] = pColl ? pColl->zName : "BINARY";
n++; n++;
} }
} }