1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Veryquick now row to completion without segfaulting or asserting. But there

are still lots of errors.

FossilOrigin-Name: 7fafab12e4c0c832c421975f8329c3214403d281
This commit is contained in:
drh
2012-12-07 14:02:14 +00:00
parent ae80ddea9f
commit 4b17cf5855
7 changed files with 23 additions and 23 deletions

View File

@@ -1,5 +1,5 @@
C Remove\sthe\sExpr.pColl\sfield\sand\scompute\sthe\scollating\ssequence\sas\sit\sis\sneeded.\nThis\sfixes\sthe\stest\sscript\s"shared9.test",\sthough\sthere\sis\sstill\sa\smemory\sleak.\nAnd\sthere\sare\sother\sproblems.\s\sConsider\sthis\sa\swork-in-progress. C Veryquick\snow\srow\sto\scompletion\swithout\ssegfaulting\sor\sasserting.\s\sBut\sthere\nare\sstill\slots\sof\serrors.
D 2012-12-06T21:16:43.401 D 2012-12-07T14:02:14.202
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 690d441a758cbffd13e814dc2724a721a6ebd400 F Makefile.in 690d441a758cbffd13e814dc2724a721a6ebd400
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -130,9 +130,9 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e
F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4 F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4
F src/delete.c 9b8d308979114991e5dc7cee958316e07186941d F src/delete.c 9b8d308979114991e5dc7cee958316e07186941d
F src/expr.c 696c9e664a3d0405fb83ed206500809519f9c1a7 F src/expr.c f4bb756c02bb5cd1b020f3c9f760961506c18f3c
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c ca70996e72b307d58718e4d1f11668ff76d5f2d4 F src/fkey.c 0ef356ae0c6f5ccbef14f9fdc8eaf890188148f2
F src/func.c 8147799b048065a1590805be464d05b4913e652c F src/func.c 8147799b048065a1590805be464d05b4913e652c
F src/global.c e59ecd2c553ad0d4bfbc84ca71231336f8993a7a F src/global.c e59ecd2c553ad0d4bfbc84ca71231336f8993a7a
F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4 F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
@@ -172,9 +172,9 @@ F src/pragma.c 015723c48072781d2740e310ab04dc92956b76d1
F src/prepare.c 931ad0d852a0df48f79adcba6ce79ca5f475625c F src/prepare.c 931ad0d852a0df48f79adcba6ce79ca5f475625c
F src/printf.c 4a9f882f1c1787a8b494a2987765acf9d97ac21f F src/printf.c 4a9f882f1c1787a8b494a2987765acf9d97ac21f
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
F src/resolve.c 6faf0f337ef89f7f9f6142d766793a87074612dc F src/resolve.c c05083cb7f72090c238af7082b52e678b6b6f12a
F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
F src/select.c da1af4c2f1ff4d280aa68eb58b714e9b7d0fc1c3 F src/select.c eb3ded8d6ffcbab20dc3e65ba6a6dc13a01e7fbf
F src/shell.c e392dd1ccbb77cc1d75a8367a89b473c24bea019 F src/shell.c e392dd1ccbb77cc1d75a8367a89b473c24bea019
F src/sqlite.h.in 4e71a210f383b6d060bd3fdf81d850f0f8c4eca3 F src/sqlite.h.in 4e71a210f383b6d060bd3fdf81d850f0f8c4eca3
F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0 F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0
@@ -250,7 +250,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
F src/wal.c f5c7b5027d0ed0e9bc9afeb4a3a8dfea762ec7d2 F src/wal.c f5c7b5027d0ed0e9bc9afeb4a3a8dfea762ec7d2
F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6 F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b
F src/where.c 1c7ff5ad06fe23d9d46008a23f9118926bb4fcb7 F src/where.c e415f9834292ad93033fe3956b22030462744ce1
F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823 F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
@@ -1025,7 +1025,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
P cc6e0785df3c2342376351e19ba7dba7b8d2f6a3 P fd011cb22f2d899d94ec7ce22641d7a8f5e19972
R a2a449d5f80e428bd0ee765a55dfac68 R ba9600466f631bd82f758c001af1c41a
U drh U drh
Z 434d5050577e1426f5ec867bc43f759c Z 54f2a394eca4714e815d413b6b9d3ddf

View File

@@ -1 +1 @@
fd011cb22f2d899d94ec7ce22641d7a8f5e19972 7fafab12e4c0c832c421975f8329c3214403d281

View File

@@ -106,7 +106,7 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
break; break;
} }
if( p->flags & EP_Collate ){ if( p->flags & EP_Collate ){
if( p->pLeft->flags & EP_Collate ){ if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){
p = p->pLeft; p = p->pLeft;
}else{ }else{
p = p->pRight; p = p->pRight;
@@ -114,14 +114,6 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
}else{ }else{
break; break;
} }
#if 0
else if( p->flags & EP_TokenOnly ){
break;
}else{
pColl = sqlite3ExprCollSeq(pParse, p->pLeft);
p = p->pRight;
}
#endif
} }
if( sqlite3CheckCollSeq(pParse, pColl) ){ if( sqlite3CheckCollSeq(pParse, pColl) ){
pColl = 0; pColl = 0;
@@ -3355,7 +3347,7 @@ static int evalConstExpr(Walker *pWalker, Expr *pExpr){
int r1 = ++pParse->nMem; int r1 = ++pParse->nMem;
int r2; int r2;
r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1); r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1);
if( NEVER(r1!=r2) ) sqlite3ReleaseTempReg(pParse, r1); if( r1!=r2 ) sqlite3ReleaseTempReg(pParse, r1);
pExpr->op2 = pExpr->op; pExpr->op2 = pExpr->op;
pExpr->op = TK_REGISTER; pExpr->op = TK_REGISTER;
pExpr->iTable = r2; pExpr->iTable = r2;
@@ -3795,6 +3787,7 @@ int sqlite3ExprCompare(Expr *pA, Expr *pB){
return pA->op==TK_COLLATE ? 1 : 2; return pA->op==TK_COLLATE ? 1 : 2;
} }
} }
if( (pA->flags&EP_Collate)!=(pB->flags&EP_Collate) ) return 1;
return 0; return 0;
} }

View File

@@ -511,12 +511,17 @@ static void fkScanChildren(
** expression to the parent key column defaults. */ ** expression to the parent key column defaults. */
if( pIdx ){ if( pIdx ){
Column *pCol; Column *pCol;
Expr *pNew;
Token s;
iCol = pIdx->aiColumn[i]; iCol = pIdx->aiColumn[i];
pCol = &pTab->aCol[iCol]; pCol = &pTab->aCol[iCol];
if( pTab->iPKey==iCol ) iCol = -1; if( pTab->iPKey==iCol ) iCol = -1;
pLeft->iTable = regData+iCol+1; pLeft->iTable = regData+iCol+1;
pLeft->affinity = pCol->affinity; pLeft->affinity = pCol->affinity;
// fix me. pLeft->pColl = sqlite3LocateCollSeq(pParse, pCol->zColl); s.z = pCol->zColl;
s.n = sqlite3Strlen30(s.z);
pNew = sqlite3ExprSetCollByToken(pParse, pLeft, &s);
if( pNew ) pLeft = pNew;
}else{ }else{
pLeft->iTable = regData; pLeft->iTable = regData;
pLeft->affinity = SQLITE_AFF_INTEGER; pLeft->affinity = SQLITE_AFF_INTEGER;

View File

@@ -114,6 +114,7 @@ static void resolveAlias(
pDup->flags2 |= EP2_MallocedToken; pDup->flags2 |= EP2_MallocedToken;
pDup->u.zToken = sqlite3DbStrDup(db, zToken); pDup->u.zToken = sqlite3DbStrDup(db, zToken);
} }
pDup->flags |= EP_Collate & pExpr->flags;
/* Before calling sqlite3ExprDelete(), set the EP_Static flag. This /* Before calling sqlite3ExprDelete(), set the EP_Static flag. This
** prevents ExprDelete() from deleting the Expr structure itself, ** prevents ExprDelete() from deleting the Expr structure itself,

View File

@@ -2337,6 +2337,7 @@ static int multiSelectOrderBy(
pColl = sqlite3ExprCollSeq(pParse, pTerm); pColl = sqlite3ExprCollSeq(pParse, pTerm);
}else{ }else{
pColl = multiSelectCollSeq(pParse, p, aPermute[i]); pColl = multiSelectCollSeq(pParse, p, aPermute[i]);
pTerm->flags |= EP_Collate;
} }
pKeyMerge->aColl[i] = pColl; pKeyMerge->aColl[i] = pColl;
pKeyMerge->aSortOrder[i] = pOrderBy->a[i].sortOrder; pKeyMerge->aSortOrder[i] = pOrderBy->a[i].sortOrder;

View File

@@ -665,7 +665,7 @@ static WhereTerm *findTerm(
*/ */
assert(pX->pLeft); assert(pX->pLeft);
pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight); pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight);
assert(pColl || pParse->nErr); if( pColl==0 ) pColl = pParse->db->pDfltColl;
for(j=0; pIdx->aiColumn[j]!=iColumn; j++){ for(j=0; pIdx->aiColumn[j]!=iColumn; j++){
if( NEVER(j>=pIdx->nColumn) ) return 0; if( NEVER(j>=pIdx->nColumn) ) return 0;