[ 
https://issues.apache.org/jira/browse/DERBY-4921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13569724#comment-13569724
 ] 

Dag H. Wanvik commented on DERBY-4921:
--------------------------------------

Quote from DERBY-2653: ""The driver will ignore the array if the SQL statement 
is not an INSERT statement, or an SQL statement able to return auto-generated 
keys (the list of such statements is vendor-specific)." 
https://issues.apache.org/jira/browse/DERBY-2653?focusedCommentId=12569412&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12569412
                
> Statement.executeUpdate(String sql, String[] columnNames)  throws ERROR  
> X0X0F.S exception with EmbeddedDriver
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4921
>                 URL: https://issues.apache.org/jira/browse/DERBY-4921
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.6.2.1
>            Reporter: Jarek Przygódzki
>
> Statement.executeUpdate(insertSql, int[] columnIndexes) and 
> Statement/executeUpdate(insertSql,Statement.RETURN_GENERATED_KEYS)  does 
> work, Statement.executeUpdate(String sql, String[] columnNames) doesn't.
> Test program
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.Statement;
> public class GetGeneratedKeysTest {
>       static String createTableSql = "CREATE TABLE tbl (id integer primary 
> key generated always as identity, name varchar(200))";
>       static String insertSql = "INSERT INTO tbl(name) values('value')";
>       static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
>       static String[] idColName = { "id" };
>       public static void main(String[] args) throws Exception {
>               Class.forName(driver);
>               Connection conn = DriverManager
>                               .getConnection("jdbc:derby:testDb;create=true");
>               conn.setAutoCommit(false);
>               Statement stmt = conn.createStatement();
>               ResultSet rs;
>               stmt.executeUpdate(createTableSql);
>               stmt.executeUpdate(insertSql, idColName);
>               rs = stmt.getGeneratedKeys();
>               if (rs.next()) {
>                       int id = rs.getInt(1);
>               }
>               conn.commit();
>       }
> }
> Result
> Exception in thread "main" java.sql.SQLException: Table 'TBL' does not have 
> an auto-generated column named 'id'.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:95)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:256)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:391)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2269)
>       at 
> org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1321)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:625)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:246)
>       at GetGeneratedKeysTest.main(GetGeneratedKeysTest.java:23)
> Caused by: java.sql.SQLException: Table 'TBL' does not have an auto-generated 
> column named 'id'.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:119)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
>       ... 9 more
> Caused by: ERROR X0X0F: Table 'TBL' does not have an auto-generated column 
> named 'id'.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:303)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.verifyAutoGeneratedColumnsNames(InsertResultSet.java:689)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:419)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1232)
>       ... 3 more

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to