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:
20
manifest
20
manifest
@@ -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.
|
||||
D 2012-12-06T21:16:43.401
|
||||
C Veryquick\snow\srow\sto\scompletion\swithout\ssegfaulting\sor\sasserting.\s\sBut\sthere\nare\sstill\slots\sof\serrors.
|
||||
D 2012-12-07T14:02:14.202
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in 690d441a758cbffd13e814dc2724a721a6ebd400
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
@@ -130,9 +130,9 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
|
||||
F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e
|
||||
F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4
|
||||
F src/delete.c 9b8d308979114991e5dc7cee958316e07186941d
|
||||
F src/expr.c 696c9e664a3d0405fb83ed206500809519f9c1a7
|
||||
F src/expr.c f4bb756c02bb5cd1b020f3c9f760961506c18f3c
|
||||
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
|
||||
F src/fkey.c ca70996e72b307d58718e4d1f11668ff76d5f2d4
|
||||
F src/fkey.c 0ef356ae0c6f5ccbef14f9fdc8eaf890188148f2
|
||||
F src/func.c 8147799b048065a1590805be464d05b4913e652c
|
||||
F src/global.c e59ecd2c553ad0d4bfbc84ca71231336f8993a7a
|
||||
F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
|
||||
@@ -172,9 +172,9 @@ F src/pragma.c 015723c48072781d2740e310ab04dc92956b76d1
|
||||
F src/prepare.c 931ad0d852a0df48f79adcba6ce79ca5f475625c
|
||||
F src/printf.c 4a9f882f1c1787a8b494a2987765acf9d97ac21f
|
||||
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
||||
F src/resolve.c 6faf0f337ef89f7f9f6142d766793a87074612dc
|
||||
F src/resolve.c c05083cb7f72090c238af7082b52e678b6b6f12a
|
||||
F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
|
||||
F src/select.c da1af4c2f1ff4d280aa68eb58b714e9b7d0fc1c3
|
||||
F src/select.c eb3ded8d6ffcbab20dc3e65ba6a6dc13a01e7fbf
|
||||
F src/shell.c e392dd1ccbb77cc1d75a8367a89b473c24bea019
|
||||
F src/sqlite.h.in 4e71a210f383b6d060bd3fdf81d850f0f8c4eca3
|
||||
F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0
|
||||
@@ -250,7 +250,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
|
||||
F src/wal.c f5c7b5027d0ed0e9bc9afeb4a3a8dfea762ec7d2
|
||||
F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
|
||||
F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b
|
||||
F src/where.c 1c7ff5ad06fe23d9d46008a23f9118926bb4fcb7
|
||||
F src/where.c e415f9834292ad93033fe3956b22030462744ce1
|
||||
F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823
|
||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
|
||||
@@ -1025,7 +1025,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
|
||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
||||
P cc6e0785df3c2342376351e19ba7dba7b8d2f6a3
|
||||
R a2a449d5f80e428bd0ee765a55dfac68
|
||||
P fd011cb22f2d899d94ec7ce22641d7a8f5e19972
|
||||
R ba9600466f631bd82f758c001af1c41a
|
||||
U drh
|
||||
Z 434d5050577e1426f5ec867bc43f759c
|
||||
Z 54f2a394eca4714e815d413b6b9d3ddf
|
||||
|
||||
@@ -1 +1 @@
|
||||
fd011cb22f2d899d94ec7ce22641d7a8f5e19972
|
||||
7fafab12e4c0c832c421975f8329c3214403d281
|
||||
13
src/expr.c
13
src/expr.c
@@ -106,7 +106,7 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
|
||||
break;
|
||||
}
|
||||
if( p->flags & EP_Collate ){
|
||||
if( p->pLeft->flags & EP_Collate ){
|
||||
if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){
|
||||
p = p->pLeft;
|
||||
}else{
|
||||
p = p->pRight;
|
||||
@@ -114,14 +114,6 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
#if 0
|
||||
else if( p->flags & EP_TokenOnly ){
|
||||
break;
|
||||
}else{
|
||||
pColl = sqlite3ExprCollSeq(pParse, p->pLeft);
|
||||
p = p->pRight;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if( sqlite3CheckCollSeq(pParse, pColl) ){
|
||||
pColl = 0;
|
||||
@@ -3355,7 +3347,7 @@ static int evalConstExpr(Walker *pWalker, Expr *pExpr){
|
||||
int r1 = ++pParse->nMem;
|
||||
int r2;
|
||||
r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1);
|
||||
if( NEVER(r1!=r2) ) sqlite3ReleaseTempReg(pParse, r1);
|
||||
if( r1!=r2 ) sqlite3ReleaseTempReg(pParse, r1);
|
||||
pExpr->op2 = pExpr->op;
|
||||
pExpr->op = TK_REGISTER;
|
||||
pExpr->iTable = r2;
|
||||
@@ -3795,6 +3787,7 @@ int sqlite3ExprCompare(Expr *pA, Expr *pB){
|
||||
return pA->op==TK_COLLATE ? 1 : 2;
|
||||
}
|
||||
}
|
||||
if( (pA->flags&EP_Collate)!=(pB->flags&EP_Collate) ) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -511,12 +511,17 @@ static void fkScanChildren(
|
||||
** expression to the parent key column defaults. */
|
||||
if( pIdx ){
|
||||
Column *pCol;
|
||||
Expr *pNew;
|
||||
Token s;
|
||||
iCol = pIdx->aiColumn[i];
|
||||
pCol = &pTab->aCol[iCol];
|
||||
if( pTab->iPKey==iCol ) iCol = -1;
|
||||
pLeft->iTable = regData+iCol+1;
|
||||
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{
|
||||
pLeft->iTable = regData;
|
||||
pLeft->affinity = SQLITE_AFF_INTEGER;
|
||||
|
||||
@@ -114,6 +114,7 @@ static void resolveAlias(
|
||||
pDup->flags2 |= EP2_MallocedToken;
|
||||
pDup->u.zToken = sqlite3DbStrDup(db, zToken);
|
||||
}
|
||||
pDup->flags |= EP_Collate & pExpr->flags;
|
||||
|
||||
/* Before calling sqlite3ExprDelete(), set the EP_Static flag. This
|
||||
** prevents ExprDelete() from deleting the Expr structure itself,
|
||||
|
||||
@@ -2337,6 +2337,7 @@ static int multiSelectOrderBy(
|
||||
pColl = sqlite3ExprCollSeq(pParse, pTerm);
|
||||
}else{
|
||||
pColl = multiSelectCollSeq(pParse, p, aPermute[i]);
|
||||
pTerm->flags |= EP_Collate;
|
||||
}
|
||||
pKeyMerge->aColl[i] = pColl;
|
||||
pKeyMerge->aSortOrder[i] = pOrderBy->a[i].sortOrder;
|
||||
|
||||
@@ -665,7 +665,7 @@ static WhereTerm *findTerm(
|
||||
*/
|
||||
assert(pX->pLeft);
|
||||
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++){
|
||||
if( NEVER(j>=pIdx->nColumn) ) return 0;
|
||||
|
||||
Reference in New Issue
Block a user