Lukas Eder created DERBY-6948:
---------------------------------

             Summary: INSERT .. SELECT produces NULL for getGeneratedKeys()
                 Key: DERBY-6948
                 URL: https://issues.apache.org/jira/browse/DERBY-6948
             Project: Derby
          Issue Type: Bug
          Components: JDBC
    Affects Versions: 10.13.1.1
            Reporter: Lukas Eder


The following code:

{code}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.derby.jdbc.EmbeddedDataSource;

public class Derby {
    public static void main(String[] args) throws Exception {
        EmbeddedDataSource ds;

        ds = new EmbeddedDataSource();
        ds.setDatabaseName("memory:test;create=true");

        try (Connection con = ds.getConnection();
             Statement s = con.createStatement()) {

            s.execute(
                "CREATE TABLE test ("
              + "id INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,"
              + "name VARCHAR(255))");

            try (PreparedStatement ps = con.prepareStatement("insert into test 
(name) select 'a' from sysibm.sysdummy1", Statement.RETURN_GENERATED_KEYS)) {
                ps.executeUpdate();

                try (ResultSet rs = ps.getGeneratedKeys()) {
                    while (rs.next())
                        System.out.println("GEN_ID: " + rs.getObject(1));
                }
            }

            try (PreparedStatement ps = con.prepareStatement("insert into test 
(name) select 'a' from sysibm.sysdummy1", Statement.RETURN_GENERATED_KEYS)) {
                ps.executeUpdate();

                try (ResultSet rs = ps.getGeneratedKeys()) {
                    while (rs.next())
                        System.out.println("GEN_ID: " + rs.getObject(1));
                }
            }

            try (ResultSet rs = s.executeQuery("select id from test")) {
                while (rs.next())
                    System.out.println("    ID: " + rs.getObject(1));
            }
        }
    }
}
{code}

Produces this output:

{code}
GEN_ID: null
GEN_ID: null
    ID: 1
    ID: 2
    ID: 3
{code}

The expected output would be:


{code}
GEN_ID: 1
GEN_ID: 2
GEN_ID: 3
    ID: 1
    ID: 2
    ID: 3
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to