Description
JDBC getPrimaryKeys() method returns _KEY as column name rather than actual column name. This breaks apps that expect a valid column name as the primary key.
Trivially reproducible:
public static void main(String[] args) throws Exception { // Register JDBC driver. Class.forName("org.apache.ignite.IgniteJdbcThinDriver"); // Open JDBC connection. try (Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1/")) { // Create database tables. try (Statement stmt = conn.createStatement()) { stmt.executeUpdate("CREATE TABLE TESTER (" + " ID LONG PRIMARY KEY, NAME VARCHAR) " + " WITH \"template=replicated\""); } // Get database metadata DatabaseMetaData md = conn.getMetaData(); // Get primary keys ResultSet rs = md.getPrimaryKeys(conn.getCatalog(), "", "TESTER"); // while (rs.next()) { // Column 4 is COLUMN_NAME System.out.println("Primary key column is " + rs.getString(4)); } } }
Expected output is:
Primary key column is ID
Actual output is:
Primary key column is _KEY
Attachments
Issue Links
- is related to
-
IGNITE-9989 JDBC v2: getPrimaryKeys always returns constant COLUMN_NAME, KEY_SEQ, PK_NAME
- Resolved
- links to