[ 
http://issues.apache.org/jira/browse/DERBY-1784?page=comments#action_12435152 ] 
            
Yip Ng commented on DERBY-1784:
-------------------------------

Thanks for taking the time to review the patch, Army.  Responses to your 
questions/comments:

1)  One would use getOrigTableName() for qualifying column names at bind phase 
only ( if the column name is qualified by the user)  There are alot of code in 
the compiler layer and I have spent quite some time to determine where the fix 
should go with minimal code impact.  I only applied the additonal logic at 
areas where the binding logic uses "exposedName" and it makes perfect sense to 
place the logic here since
the correlation name are handled in a similar manner.  Once the underlying 
table descriptor is determined and bound, the table name can be just thought of 
an alias to the table descriptor.  For other methods that still use the 
tableName member field, I left them AS IS because there are many places in the 
code that relies on its name to find the actual table descriptor, so changing 
those methods will certainly break the system.  If synonym is not involved, 
getOrigTableName() will return tableName anyway; thus, limiting the impact on 
the compiler subsystem.  I think it is a good idea to put additional comments 
to getOrigTableName(), I'll submit another follow up patch for that.

2)  Good catch, it looks like a refactor error on my part, I meant to do this:

if ( reference != null && reference.getTableName() != null)

I'll fix this also and resubmit the patch.



> When qualifying a column name with its synonym name in the select list, Derby 
> throws SQLSTATE 42X04.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1784
>                 URL: http://issues.apache.org/jira/browse/DERBY-1784
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.1.0, 10.3.0.0, 10.1.3.1
>         Environment: Any environment
>            Reporter: Yip Ng
>         Assigned To: Yip Ng
>         Attachments: derby1784-trunk-diff01.txt, derby1784-trunk-diff02.txt, 
> derby1784-trunk-diff03a.txt, derby1784-trunk-stat01.txt, 
> derby1784-trunk-stat02.txt, derby1784-trunk-stat03a.txt
>
>
> When qualifying a synonym with its name in the select list, Derby throws 
> SQLSTATE 42X04 but if there is no qualification of the column, then the 
> select statement executes successfully.
> ij version 10.3
> ij> connect 'jdbc:derby:wombat;create=true' user 'user1' as user1;
> WARNING 01J01: Database 'wombat' not created, connection made to existing 
> database instead.
> ij> create schema test1;
> 0 rows inserted/updated/deleted
> ij> create schema test2;
> 0 rows inserted/updated/deleted
> ij> create table test1.t1 ( id bigint not null );
> 0 rows inserted/updated/deleted
> ij> create synonym test2.t1 for test1.t1;
> 0 rows inserted/updated/deleted
> ij> set schema test1;
> 0 rows inserted/updated/deleted
> ij> select t1.id from t1;
> ID
> --------------------
> 0 rows selected
> ij> set schema test2;
> 0 rows inserted/updated/deleted
> ij> select t1.id from t1;
> ERROR 42X04: Column 'T1.ID' is either not in any table in the FROM list or 
> appears within a join specification and is outside the scope of the join 
> specification or appears in a HAVING clause and is not in the GROUP BY list. 
> If this is a CREATE or ALTER TABLE  statement then 'T1.ID' is not a column in 
> the target table
> ij> select id from t1;
> ID
> --------------------
> 0 rows selected
> ------------------ Java Information ------------------
> Java Version:    1.4.2_12
> Java Vendor:     Sun Microsystems Inc.
> Java home:       C:\Program Files\Java\j2re1.4.2_12
> Java classpath:  classes;.
> OS name:         Windows XP
> OS architecture: x86
> OS version:      5.1
> Java user name:  Yip
> Java user home:  C:\Documents and Settings\Yip
> Java user dir:   C:\work3\derby\trunk
> java.specification.name: Java Platform API Specification
> java.specification.version: 1.4
> --------- Derby Information --------
> JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
> [C:\work3\derby\trunk\classes] 10.3.0.0 alpha - (438358)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> Current Locale :  [English/United States [en_US]]
> Found support for locale: [de_DE]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [es]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [fr]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [it]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [ja_JP]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [ko_KR]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [pt_BR]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [zh_CN]
>          version: 10.3.0.0 alpha - (438358)
> Found support for locale: [zh_TW]
>          version: 10.3.0.0 alpha - (438358)
> ------------------------------------------------------

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to