From 076b78b1fcc1179e7abc8c8c5b6f0efe3d409cc3 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Wed, 1 Apr 2026 10:53:57 -0700 Subject: [PATCH] Added missing keywords --- .../jdbc/internal/parser/javacc/ClickHouseSqlUtils.java | 6 +++++- .../src/test/java/com/clickhouse/jdbc/StatementSQLTest.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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 ba4b5f174..9b0e37b4c 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 @@ -60,7 +60,11 @@ private static Set initAllowedKeywordAliases() { "UNDROP", "UNFREEZE", "UNIQUE", "UNLOCK", "UNSET", "UNSIGNED", "UNTIL", "UPDATE", "URL", "USE", "USER", "VALID", "VALUES", "VARYING", "VIEW", "VISIBLE", "VOLUME", "WATCH", "WATERMARK", "WEEK", "WEEKS", "WHEN", "WITH_ITEMINDEX", "WK", "WORKER", "WORKLOAD", "WRITABLE", "WRITE", "WW", - "YEAR", "YEARS", "YY", "YYYY", "ZKPATH"); + "YEAR", "YEARS", "YY", "YYYY", "ZKPATH", + // Append 04/01/2026. + "CENTURY", "DECADE", "DOW", "DOY", "EPOCH", "ISODOW", "ISOYEAR", "MILLENNIUM", "NATURAL", "SOME", + "ZONE" + ); } private static Set buildKeywordSet(String... values) { diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementSQLTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementSQLTest.java index b6a464393..db38ca99e 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementSQLTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementSQLTest.java @@ -20,6 +20,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; /** * Integration test for prepared statement. Testing SQL with prepared statement is main focus of this test. @@ -139,10 +140,13 @@ public void testAllowedKeywordAliasesMatchSystemKeywords() throws Exception { Set missingFromAllowed = new TreeSet<>(nonReservedSystemKeywords); missingFromAllowed.removeAll(allowedAliases); + String missingFromAllowedQuoted = missingFromAllowed.stream() + .map(keyword -> "\"" + keyword + "\"") + .collect(Collectors.joining(", ", "[", "]")); Assert.assertTrue(missingFromAllowed.isEmpty(), "New keywords found in system.keywords (non-reserved) that must be added to " - + "ALLOWED_KEYWORD_ALIASES or reserved_keywords.txt: " + missingFromAllowed); + + "ALLOWED_KEYWORD_ALIASES or reserved_keywords.txt: " + missingFromAllowedQuoted); } private List loadKeywordsFromResource(String resourceName) throws Exception {