Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix the "alias.*" bug found by Bernie Cosell and reported on the newsgroup. (CVS 593) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f562d542304c0c1b18b0cee78b1ecc35 |
User & Date: | drh 2002-05-27 03:25:52.000 |
Context
2002-05-27
| ||
12:24 | A SELECT statement inside the body of a TRIGGER uses the SRT_Discard target to discard the query results. Such selects are intended to be used to call user-defined functions for their side-effects. They do not return results. (CVS 594) (check-in: f8041f3d4d user: drh tags: trunk) | |
03:25 | Fix the "alias.*" bug found by Bernie Cosell and reported on the newsgroup. (CVS 593) (check-in: f562d54230 user: drh tags: trunk) | |
01:04 | Bug fixes and additional test cases for the distinct-NULL patch. (CVS 592) (check-in: 0e268d0c0f user: drh tags: trunk) | |
Changes
Changes to src/select.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 C code routines that are called by the parser ** to handle SELECT statements 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 C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** ** $Id: select.c,v 1.87 2002/05/27 03:25:52 drh Exp $ */ #include "sqliteInt.h" /* ** Allocate a new Select structure and return a pointer to that ** structure. */ |
︙ | ︙ | |||
672 673 674 675 676 677 678 | } for(i=0; i<pTabList->nSrc; i++){ Table *pTab = pTabList->a[i].pTab; char *zTabName = pTabList->a[i].zAlias; if( zTabName==0 || zTabName[0]==0 ){ zTabName = pTab->zName; } | | | > | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 | } for(i=0; i<pTabList->nSrc; i++){ Table *pTab = pTabList->a[i].pTab; char *zTabName = pTabList->a[i].zAlias; if( zTabName==0 || zTabName[0]==0 ){ zTabName = pTab->zName; } if( pName && (zTabName==0 || zTabName[0]==0 || sqliteStrNICmp(pName->z, zTabName, pName->n)!=0 || zTabName[pName->n]!=0) ){ continue; } tableSeen = 1; for(j=0; j<pTab->nCol; j++){ Expr *pExpr, *pLeft, *pRight; char *zName = pTab->aCol[j].zName; |
︙ | ︙ |
Changes to test/select1.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2001 September 15 # # 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. The # focus of this file is testing the SELECT statement. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2001 September 15 # # 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. The # focus of this file is testing the SELECT statement. # # $Id: select1.test,v 1.28 2002/05/27 03:25:52 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Try to select on a non-existant table. # do_test select1-1.1 { |
︙ | ︙ | |||
623 624 625 626 627 628 629 630 631 632 633 634 635 636 | } } {t3.a 1 t3.b 2 tx.max(a) 3 tx.max(b) 4} do_test select1-11.15 { execsql2 { SELECT y.*, t3.* FROM t3, (SELECT max(a), max(b) FROM t4) AS y } } {y.max(a) 3 y.max(b) 4 t3.a 1 t3.b 2} # Tests of SELECT statements without a FROM clause. # do_test select1-12.1 { execsql2 { SELECT 1+2+3 } | > > > > > | 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 | } } {t3.a 1 t3.b 2 tx.max(a) 3 tx.max(b) 4} do_test select1-11.15 { execsql2 { SELECT y.*, t3.* FROM t3, (SELECT max(a), max(b) FROM t4) AS y } } {y.max(a) 3 y.max(b) 4 t3.a 1 t3.b 2} do_test select1-11.16 { execsql2 { SELECT y.* FROM t3 as y, t4 as z } } {y.a 1 y.b 2} # Tests of SELECT statements without a FROM clause. # do_test select1-12.1 { execsql2 { SELECT 1+2+3 } |
︙ | ︙ |