Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Naming the join columns in the result set of a natural join does not result in an "ambiguous column name" error. Ticket #1217. (CVS 2494) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
265fb6079c0a4b7a93f063939436db49 |
User & Date: | drh 2005-06-06 16:59:24.000 |
Context
2005-06-06
| ||
17:11 | Avoid ambiguous column name errors when the column name is in the USING clause of a join. Ticket #743. (CVS 2495) (check-in: 6a51bdeeff user: drh tags: trunk) | |
16:59 | Naming the join columns in the result set of a natural join does not result in an "ambiguous column name" error. Ticket #1217. (CVS 2494) (check-in: 265fb6079c user: drh tags: trunk) | |
16:34 | Honor the full_column_names pragma on * results. Ticket #1263. (CVS 2493) (check-in: 0d57f851ae 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.203 2005/06/06 16:59:24 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** Return the 'affinity' of the expression pExpr if any. ** |
︙ | ︙ | |||
821 822 823 824 825 826 827 828 829 830 831 832 833 834 | pExpr->iTable = pItem->iCursor; pMatch = pItem; pExpr->iDb = pTab->iDb; /* Substitute the rowid (column -1) for the INTEGER PRIMARY KEY */ pExpr->iColumn = j==pTab->iPKey ? -1 : j; pExpr->affinity = pTab->aCol[j].affinity; pExpr->pColl = pTab->aCol[j].pColl; break; } } } } #ifndef SQLITE_OMIT_TRIGGER | > > > > > > | 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | pExpr->iTable = pItem->iCursor; pMatch = pItem; pExpr->iDb = pTab->iDb; /* Substitute the rowid (column -1) for the INTEGER PRIMARY KEY */ pExpr->iColumn = j==pTab->iPKey ? -1 : j; pExpr->affinity = pTab->aCol[j].affinity; pExpr->pColl = pTab->aCol[j].pColl; if( pItem->jointype & JT_NATURAL ){ /* If this match occurred in the left table of a natural join, ** then skip the right table to avoid a duplicate match */ pItem++; i++; } break; } } } } #ifndef SQLITE_OMIT_TRIGGER |
︙ | ︙ |
Changes to test/join.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for joins, including outer joins. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for joins, including outer joins. # # $Id: join.test,v 1.19 2005/06/06 16:59:24 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test join-1.1 { execsql { CREATE TABLE t1(a,b,c); |
︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 | } } {b 2 c 3 d 4 a 1 b 3 c 4 d 5 a 2} do_test join-1.3.3 { execsql2 { SELECT * FROM t2 NATURAL JOIN t1 AS y; } } {b 2 c 3 d 4 a 1 b 3 c 4 d 5 a 2} do_test join-1.4.1 { execsql2 { SELECT * FROM t1 INNER JOIN t2 USING(b,c); } } {a 1 b 2 c 3 d 4 a 2 b 3 c 4 d 5} do_test join-1.4.2 { execsql2 { | > > > > > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | } } {b 2 c 3 d 4 a 1 b 3 c 4 d 5 a 2} do_test join-1.3.3 { execsql2 { SELECT * FROM t2 NATURAL JOIN t1 AS y; } } {b 2 c 3 d 4 a 1 b 3 c 4 d 5 a 2} do_test join-1.3.4 { execsql { SELECT b FROM t1 NATURAL JOIN t2; } } {2 3} do_test join-1.4.1 { execsql2 { SELECT * FROM t1 INNER JOIN t2 USING(b,c); } } {a 1 b 2 c 3 d 4 a 2 b 3 c 4 d 5} do_test join-1.4.2 { execsql2 { |
︙ | ︙ |