diff --git a/pom.xml b/pom.xml
index c05477a..04ad43f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
5.0.0-SNAPSHOT
4.0.2
- 2.7.1
+ 2.7.3
2.0.13
diff --git a/src/main/java/net/ucanaccess/converters/Persist2Jet.java b/src/main/java/net/ucanaccess/converters/Persist2Jet.java
index 51d276b..4c01b4e 100644
--- a/src/main/java/net/ucanaccess/converters/Persist2Jet.java
+++ b/src/main/java/net/ucanaccess/converters/Persist2Jet.java
@@ -644,16 +644,20 @@ public void createPrimaryKey(String tableName) throws IOException, SQLException
String ntn = escape4Hsqldb(tableName);
String tn = escape4Access(tableName);
Table t = db.getTable(tn);
- ResultSet pkrs = conn.getHSQLDBConnection().getMetaData().getPrimaryKeys(null, null, ntn.toUpperCase());
+ Metadata md = new Metadata(conn);
+
List cols = new ArrayList<>();
- IndexBuilder ib = new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME).withPrimaryKey();
- while (pkrs.next()) {
- String colName = pkrs.getString(COLUMN_NAME);
- Metadata mt = new Metadata(conn);
- colName = mt.getColumnName(ntn, colName);
- cols.add(colName);
+ try (Statement st = conn.getHSQLDBConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ ResultSet rs = st.executeQuery("SELECT * FROM INFORMATION_SCHEMA.SYSTEM_PRIMARYKEYS "
+ + "WHERE TABLE_NAME = '" + ntn.toUpperCase() + "' ORDER BY KEY_SEQ")) {
+ while (rs.next()) {
+ cols.add(md.getColumnName(ntn, rs.getString(COLUMN_NAME)));
+ }
}
- ib.withColumns(cols).addToTable(t);
+ new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME)
+ .withPrimaryKey()
+ .withColumns(cols)
+ .addToTable(t);
}
public void createForeignKey(String tableName, String referencedTable) throws IOException, SQLException {
diff --git a/src/test/java/net/ucanaccess/jdbc/AlterTableTest.java b/src/test/java/net/ucanaccess/jdbc/AlterTableTest.java
index c27598c..86f1a0b 100644
--- a/src/test/java/net/ucanaccess/jdbc/AlterTableTest.java
+++ b/src/test/java/net/ucanaccess/jdbc/AlterTableTest.java
@@ -141,10 +141,10 @@ void testCreatePk(AccessVersion _accessVersion) throws SQLException, IOException
init(_accessVersion);
try (UcanaccessStatement st = ucanaccess.createStatement()) {
- String tbl = "AAA n";
- st.execute("ALTER TABLE [" + tbl + "] ADD PRIMARY KEY (baaaa, a)");
+ st.execute("ALTER TABLE [AAA n] ADD PRIMARY KEY (baaaa, a)");
Database db = ucanaccess.getDbIO();
- assertThat(db.getTable(tbl).getPrimaryKeyIndex().getColumns().stream().map(Column::getName))
+ Table tbl = db.getTable("AAA n");
+ assertThat(tbl.getPrimaryKeyIndex().getColumns().stream().map(Column::getName))
.containsExactly("baaaa", "A");
st.execute("ALTER TABLE Sample ADD PRIMARY KEY (RegionId)");