SQLite
Check-in [3d0e00c731]
Not logged in
Overview
SHA1 Hash:3d0e00c731c39af91bad74c6d74853375bac356e
Date: 2012-12-19 15:53:51
User: drh
Comment:Proposed fix for ticket [a7b7803e8d1e8699cd8a].
Tags And Properties
Changes
hide diffs unified diffs patch

Changes to src/where.c

399 memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm); 399 memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm); 400 if( pOld!=pWC->aStatic ){ 400 if( pOld!=pWC->aStatic ){ 401 sqlite3DbFree(db, pOld); 401 sqlite3DbFree(db, pOld); 402 } 402 } 403 pWC->nSlot = sqlite3DbMallocSize(db, pWC->a)/sizeof(pWC->a[0]); 403 pWC->nSlot = sqlite3DbMallocSize(db, pWC->a)/sizeof(pWC->a[0]); 404 } 404 } 405 pTerm = &pWC->a[idx = pWC->nTerm++]; 405 pTerm = &pWC->a[idx = pWC->nTerm++]; 406 pTerm->pExpr = p; | 406 pTerm->pExpr = sqlite3ExprSkipCollate(p); 407 pTerm->wtFlags = wtFlags; 407 pTerm->wtFlags = wtFlags; 408 pTerm->pWC = pWC; 408 pTerm->pWC = pWC; 409 pTerm->iParent = -1; 409 pTerm->iParent = -1; 410 return idx; 410 return idx; 411 } 411 } 412 412 413 /* 413 /* ................................................................................................................................................................................ 1184 sqlite3 *db = pParse->db; /* Database connection */ 1184 sqlite3 *db = pParse->db; /* Database connection */ 1185 1185 1186 if( db->mallocFailed ){ 1186 if( db->mallocFailed ){ 1187 return; 1187 return; 1188 } 1188 } 1189 pTerm = &pWC->a[idxTerm]; 1189 pTerm = &pWC->a[idxTerm]; 1190 pMaskSet = pWC->pMaskSet; 1190 pMaskSet = pWC->pMaskSet; 1191 pExpr = sqlite3ExprSkipCollate(pTerm->pExpr); | 1191 pExpr = pTerm->pExpr; > 1192 assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE ); 1192 prereqLeft = exprTableUsage(pMaskSet, pExpr->pLeft); 1193 prereqLeft = exprTableUsage(pMaskSet, pExpr->pLeft); 1193 op = pExpr->op; 1194 op = pExpr->op; 1194 if( op==TK_IN ){ 1195 if( op==TK_IN ){ 1195 assert( pExpr->pRight==0 ); 1196 assert( pExpr->pRight==0 ); 1196 if( ExprHasProperty(pExpr, EP_xIsSelect) ){ 1197 if( ExprHasProperty(pExpr, EP_xIsSelect) ){ 1197 pTerm->prereqRight = exprSelectTableUsage(pMaskSet, pExpr->x.pSelect); 1198 pTerm->prereqRight = exprSelectTableUsage(pMaskSet, pExpr->x.pSelect); 1198 }else{ 1199 }else{

Added test/tkt-a7b7803e.test

> 1 # 2012 December 19 > 2 # > 3 # The author disclaims copyright to this source code. In place of > 4 # a legal notice, here is a blessing: > 5 # > 6 # May you do good and not evil. > 7 # May you find forgiveness for yourself and forgive others. > 8 # May you share freely, never taking more than you give. > 9 # > 10 #*********************************************************************** > 11 # This file implements regression tests for SQLite library. Specifically, > 12 # it tests that ticket [a7b7803e8d1e8699cd8a460a38133b98892d2e17] has > 13 # been fixed. > 14 # > 15 > 16 set testdir [file dirname $argv0] > 17 source $testdir/tester.tcl > 18 source $testdir/lock_common.tcl > 19 source $testdir/malloc_common.tcl > 20 > 21 do_test tkt-a7b7803e.1 { > 22 db eval { > 23 CREATE TABLE t1(a); > 24 SELECT (t1.a==0) AS x > 25 FROM t1 > 26 WHERE a=0 OR x; > 27 } > 28 } {} > 29 finish_test