[
https://issues.apache.org/jira/browse/DERBY-3296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13243076#comment-13243076
]
Eric Vergnaud commented on DERBY-3296:
--------------------------------------
Hi,
this is broken again in 10.8.2.2 using EmbeddedDriver40 and Java 1.6 on MacOSX,
even when specifying the schema
I have a simple unit test running this code:
public void csvImport(String csvFilePath) throws SQLException {
final String sql = "CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE
('PANDORA','COUNTRIES','" + csvFilePath + "',NULL,NULL,'UTF-8',0)";
Connection cn = ds.getConnection();
try {
Statement st = cn.createStatement();
try {
st.execute(sql);
} finally {
st.close();
}
} finally {
cn.close();
}
}
which throws the following exception:
java.sql.SQLException: 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.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at pandora.CountryDAO.csvImport(CountryDAO.java:313)
at pandora.TestCountryDAO.testImport(TestCountryDAO.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: 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.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 36 more
Caused by: 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.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown
Source)
at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
Source)
at org.apache.derby.impl.load.Import.performImport(Unknown Source)
at org.apache.derby.impl.load.Import.importTable(Unknown Source)
at org.apache.derby.catalog.SystemProcedures.SYSCS_IMPORT_TABLE(Unknown
Source)
at
org.apache.derby.exe.acdf1940dax0136x67bdx26aex0000041f37b01.g0(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown
Source)
at
org.apache.derby.impl.sql.execute.CallStatementResultSet.open(Unknown Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
... 29 more
Caused by: 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.
at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
at
org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(Unknown Source)
at
org.apache.derby.impl.sql.compile.ResultColumn.bindExpression(Unknown Source)
at
org.apache.derby.impl.sql.compile.ResultColumnList.bindExpressions(Unknown
Source)
at org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(Unknown
Source)
at
org.apache.derby.impl.sql.compile.SelectNode.bindExpressionsWithTables(Unknown
Source)
at
org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressionsWithTables(Unknown
Source)
at
org.apache.derby.impl.sql.compile.DMLStatementNode.bindResultSetsWithTables(Unknown
Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown
Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
Source)
... 48 more
> 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
> Assignee: Knut Anders Hatlen
> Fix For: 10.5.2.0, 10.6.1.0
>
> Attachments: d3296-2.diff, 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.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira