Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for ticket #2141. (CVS 3552) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
70f5f3b85f30bbec0ddc59ba364e1229 |
User & Date: | drh 2007-01-04 01:20:29.000 |
Context
2007-01-04
| ||
14:36 | Reactivate disabled "alter2" tests. (CVS 3553) (check-in: 093467a099 user: drh tags: trunk) | |
01:20 | Fix for ticket #2141. (CVS 3552) (check-in: 70f5f3b85f user: drh tags: trunk) | |
01:20 | Add a comment to vdbe.c to explain the use of an uninitialized variable. (CVS 3551) (check-in: 1773eb7bad user: drh tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** ** $Id: expr.c,v 1.271 2007/01/04 01:20:29 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** Return the 'affinity' of the expression pExpr if any. ** |
︙ | ︙ | |||
2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 | NameContext *pNC = (NameContext *)pArg; Parse *pParse = pNC->pParse; SrcList *pSrcList = pNC->pSrcList; AggInfo *pAggInfo = pNC->pAggInfo; switch( pExpr->op ){ case TK_COLUMN: { /* Check to see if the column is in one of the tables in the FROM ** clause of the aggregate query */ if( pSrcList ){ struct SrcList_item *pItem = pSrcList->a; for(i=0; i<pSrcList->nSrc; i++, pItem++){ struct AggInfo_col *pCol; | > | 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 | NameContext *pNC = (NameContext *)pArg; Parse *pParse = pNC->pParse; SrcList *pSrcList = pNC->pSrcList; AggInfo *pAggInfo = pNC->pAggInfo; switch( pExpr->op ){ case TK_AGG_COLUMN: case TK_COLUMN: { /* Check to see if the column is in one of the tables in the FROM ** clause of the aggregate query */ if( pSrcList ){ struct SrcList_item *pItem = pSrcList->a; for(i=0; i<pSrcList->nSrc; i++, pItem++){ struct AggInfo_col *pCol; |
︙ | ︙ |
Added test/tkt2141.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | # 2007 January 03 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket #2141 has been # fixed. # # # $Id: tkt2141.test,v 1.1 2007/01/04 01:20:29 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt2141-1.1 { execsql { CREATE TABLE tab1 (t1_id integer PRIMARY KEY, t1_desc); INSERT INTO tab1 VALUES(1,'rec 1 tab 1'); CREATE TABLE tab2 (t2_id integer PRIMARY KEY, t2_id_t1, t2_desc); INSERT INTO tab2 VALUES(1,1,'rec 1 tab 2'); CREATE TABLE tab3 (t3_id integer PRIMARY KEY, t3_id_t2, t3_desc); INSERT INTO tab3 VALUES(1,1,'aa'); SELECT * FROM tab1 t1 LEFT JOIN tab2 t2 ON t1.t1_id = t2.t2_id_t1 WHERE t2.t2_id IN (SELECT t2_id FROM tab2, tab3 ON t2_id = t3_id_t2 WHERE t3_id IN (1,2) GROUP BY t2_id); } } {1 {rec 1 tab 1} 1 1 {rec 1 tab 2}} do_test tkt2141-1.2 { execsql { SELECT * FROM tab1 t1 LEFT JOIN tab2 t2 ON t1.t1_id = t2.t2_id_t1 WHERE t2.t2_id IN (SELECT t2_id FROM tab2, tab3 ON t2_id = t3_id_t2 WHERE t3_id IN (1,2)); } } {1 {rec 1 tab 1} 1 1 {rec 1 tab 2}} do_test tkt2141-1.3 { execsql { SELECT * FROM tab1 t1 LEFT JOIN tab2 t2 WHERE t2.t2_id IN (SELECT t2_id FROM tab2, tab3 ON t2_id = t3_id_t2 WHERE t3_id IN (1,2)); } } {1 {rec 1 tab 1} 1 1 {rec 1 tab 2}} finish_test |