[
https://issues.apache.org/jira/browse/DERBY-3296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-3296:
--------------------------------------
Attachment: d3296.diff
The problem here is that ColumnInfo uses DatabaseMetaData.getColumns() to find
all the columns in the table. Since the schema is not specified (null),
getColumns() returns the columns for all tables with the specified name in all
schemas. This works fine as long as there's only one table with that name, but
it breaks down when there's another table with the same name in another schema.
The solution is simple, just get the current schema from the connection object
if no schema is specified. The attached patch makes that change and adds a test
case. The tools tests run cleanly with the patch. I'll start the full
regression test suite now.
> Importing to table in default schema fails when another table with the same
> name exists in a different schema
> -------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-3296
> URL: https://issues.apache.org/jira/browse/DERBY-3296
> Project: Derby
> Issue Type: Bug
> Components: Tools
> Affects Versions: 10.4.1.3
> Environment: java version "1.5.0_14"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
> Java HotSpot(TM) Server VM (build 1.5.0_14-b03, mixed mode)
> Linux 2.4.21-40.ELsmp #1 SMP Thu Feb 2 22:14:12 EST 2006 i686 athlon i386
> GNU/Linux
> Reporter: Vemund Østgaard
> Attachments: d3296.diff
>
>
> I discovered this problem while trying to get suites.All to run on the
> phoneME advanced platform, but it is easy to reproduce also with Java SE.
> The problem is that importing a table fails if there exists a table with the
> same name in a different schema. The error is:
> ERROR 42X04: Column 'COLUMN2' 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 'COLUMN2' is not a column
> in the target table.
> If the table in the other schema is removed, the import command succeeds. If
> the import command is executed with an explicit schema name, instead of
> relying on "null" to give the default schema, the command also succeeds.
> I believe this is a bug.
> The following sequence of commands reproduces the problem:
> ij version 10.4
> ij> connect 'jdbc:derby:MyDbTest;create=true';
> ij> create table t1 (a int);
> 0 rows inserted/updated/deleted
> ij> insert into t1 values 1,2,3;
> 3 rows inserted/updated/deleted
> ij> call SYSCS_UTIL.SYSCS_EXPORT_TABLE(null, 'T1', 't1.txt', null, null,
> null);
> 0 rows inserted/updated/deleted
> ij> create schema iep;
> 0 rows inserted/updated/deleted
> ij> create table iep.t1 (b int);
> 0 rows inserted/updated/deleted
> ij> call SYSCS_UTIL.SYSCS_IMPORT_TABLE(null, 'T1', 't1.txt', null, null,
> null, 0);
> ERROR 38000: The exception 'java.sql.SQLException: Column 'COLUMN2' 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 'COLUMN2' is not a column in the target table.' was thrown
> while evaluating an expression.
> ERROR 42X04: Column 'COLUMN2' 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 'COLUMN2' is not a column
> in the target table.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.