diff --git a/history/latest/3265.md b/history/latest/3265.md new file mode 100644 index 000000000..b0baa5f98 --- /dev/null +++ b/history/latest/3265.md @@ -0,0 +1,5 @@ +- **[jdbc-v2]** Added the `RETURNING` and `SHARED` keywords and the `Elasticsearch` table engine from ClickHouse 26.11 + (HEAD) to the driver's keyword and engine lists, so the keyword and table-engine checks pass against ClickHouse HEAD. + `DatabaseMetaData#getTables` now reports a table with the `Elasticsearch` engine as `REMOTE TABLE` (it was reported + as `TABLE`), like the other external-storage engines. Both SQL parsers already accept `RETURNING` and `SHARED` as + aliases. (https://github.com/ClickHouse/clickhouse-java/issues/3265) diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java index 4a36f74a9..94e1fb2a2 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java @@ -81,7 +81,9 @@ private static Set initAllowedKeywordAliases() { // Appended 10/05/2026 "LATERAL", "SIMILAR", // Appended 10/17/2026 - "RANGES" + "RANGES", + // Appended 10/29/2026 + "RETURNING", "SHARED" ); } diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataImpl.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataImpl.java index f6e046b01..1a9663a47 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataImpl.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataImpl.java @@ -924,6 +924,9 @@ public ResultSet getProcedureColumns(String catalog, String schemaPattern, Strin // Obfuscate (appended 10/17/2026) map.put("Obfuscate", TableType.TABLE.getTypeName()); + // Remote engines (appended 10/29/2026) + map.put("Elasticsearch", TableType.REMOTE_TABLE.getTypeName()); + // Special map.put("TimeSeries", TableType.TABLE.getTypeName()); map.put("Null", TableType.TABLE.getTypeName());