diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 index 64b99c264..e988bbde4 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 @@ -11,6 +11,7 @@ lexer grammar ClickHouseLexer; +ABI : A B I; ACCESS : A C C E S S; ADD : A D D; ADMIN : A D M I N; @@ -23,6 +24,7 @@ AND : A N D; ANTI : A N T I; ANY : A N Y; ARBITRARY : A R B I T R A R Y ; +ARGUMENTS : A R G U M E N T S; ARRAY : A R R A Y; AS : A S; ASCENDING : A S C | A S C E N D I N G; @@ -94,6 +96,7 @@ DNS : D N S ; DOUBLE_SHA1_HASH : D O U B L E '_' S H A '1' '_' H A S H; DOUBLE_SHA1_PASSWORD : D O U B L E '_' S H A '1' '_' P A S S W O R D; DROP : D R O P; +DRY : D R Y; ELSE : E L S E; EMBEDDED : E M B E D D E D ; ENABLED : E N A B L E D; @@ -171,6 +174,7 @@ KEYED : K E Y E D; KEY : K E Y; KEYS : K E Y S; KILL : K I L L; +LANGUAGE : L A N G U A G E; LAST : L A S T; LAYOUT : L A Y O U T; LDAP : L D A P; @@ -282,6 +286,7 @@ RESOURCE : R E S O U R C E ; RESTART : R E S T A R T; RESTORE : R E S T O R E ; RESTRICTIVE : R E S T R I C T I V E; +RETURNS : R E T U R N S; REVOKE : R E V O K E; RIGHT : R I G H T; ROLE : R O L E; @@ -289,6 +294,7 @@ ROLES : R O L E S ; ROLLUP : R O L L U P; ROW : R O W; ROWS : R O W S; +RUN : R U N; S3 : S '3'; SAMPLE : S A M P L E; SCHEMA : S C H E M A; diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 index cda734421..5af82fd12 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 @@ -1217,7 +1217,8 @@ interval ; keyword - : ACCESS + : ABI + | ACCESS | ADD | ADMIN | AFTER @@ -1227,6 +1228,7 @@ keyword | AND | ANTI | ANY + | ARGUMENTS | ARRAY | AS | ASCENDING @@ -1289,6 +1291,7 @@ keyword | DOUBLE_SHA1_HASH | DOUBLE_SHA1_PASSWORD | DROP + | DRY | ELSE | ENABLED | END @@ -1357,6 +1360,7 @@ keyword | KEYED | KEYS | KILL + | LANGUAGE | LAST | LAYOUT | LDAP @@ -1438,6 +1442,7 @@ keyword | RESOURCE | RESTORE | RESTRICTIVE + | RETURNS | REVOKE | RIGHT | ROLE @@ -1445,6 +1450,7 @@ keyword | ROLLUP | ROW | ROWS + | RUN | S3 | SAMPLE | SCRAM_SHA256_HASH @@ -1525,13 +1531,15 @@ keyword ; keywordForAlias - : ACCESS + : ABI + | ACCESS | ADD | ADMIN | AFTER | ALIAS | ALTER | AND + | ARGUMENTS | ASCENDING | AST | ASYNC @@ -1587,6 +1595,7 @@ keywordForAlias | DOUBLE_SHA1_HASH | DOUBLE_SHA1_PASSWORD | DROP + | DRY | ENABLED | END | ENGINE @@ -1637,6 +1646,7 @@ keywordForAlias | KEYED | KEYS | KILL + | LANGUAGE | LAST | LAYOUT | LDAP @@ -1703,12 +1713,14 @@ keywordForAlias | RESOURCE | RESTORE | RESTRICTIVE + | RETURNS | REVOKE | ROLE | ROLES | ROLLUP | ROW | ROWS + | RUN | S3 | SCRAM_SHA256_HASH | SCRAM_SHA256_PASSWORD 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 08494889d..ba4b5f174 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 @@ -11,8 +11,8 @@ public final class ClickHouseSqlUtils { private static Set initAllowedKeywordAliases() { return buildKeywordSet( - "ACCESS", "ACTION", "ADD", "ADMIN", "AFTER", "ALGORITHM", "ALIAS", "ALLOWED_LATENESS", "ALTER", - "AND", "APPEND", "APPLY", "ASC", "ASCENDING", "ASSUME", "AST", "ASYNC", "ATTACH", + "ABI", "ACCESS", "ACTION", "ADD", "ADMIN", "AFTER", "ALGORITHM", "ALIAS", "ALLOWED_LATENESS", "ALTER", + "AND", "APPEND", "APPLY", "ARGUMENTS", "ASC", "ASCENDING", "ASSUME", "AST", "ASYNC", "ATTACH", "AUTHENTICATION", "AUTO_INCREMENT", "AZURE", "BACKUP", "BAGEXPANSION", "BASE_BACKUP", "BCRYPT_HASH", "BCRYPT_PASSWORD", "BEGIN", "BIDIRECTIONAL", "BOTH", "BY", "CACHE", "CACHES", "CASCADE", "CASE", "CAST", "CHANGE", "CHANGEABLE_IN_READONLY", "CHANGED", "CHAR", "CHARACTER", @@ -22,7 +22,7 @@ private static Set initAllowedKeywordAliases() { "D", "DATA", "DATABASE", "DATABASES", "DATE", "DAY", "DAYS", "DD", "DDL", "DEALLOCATE", "DEDUPLICATE", "DEFAULT", "DEFINER", "DELAY", "DELETE", "DELETED", "DEPENDS", "DESC", "DESCENDING", "DESCRIBE", "DETACH", "DETACHED", "DICTIONARIES", "DICTIONARY", "DISK", "DISTINCT", - "DIV", "DOUBLE_SHA1_HASH", "DOUBLE_SHA1_PASSWORD", "DROP", "EMPTY", "ENABLED", "END", "ENFORCED", + "DIV", "DOUBLE_SHA1_HASH", "DOUBLE_SHA1_PASSWORD", "DROP", "DRY", "EMPTY", "ENABLED", "END", "ENFORCED", "ENGINE", "ENGINES", "EPHEMERAL", "ESTIMATE", "EVENT", "EVENTS", "EVERY", "EXCHANGE", "EXECUTE", "EXISTS", "EXPLAIN", "EXPRESSION", "EXTENDED", "EXTERNAL", "FAKE", "FALSE", "FETCH", "FIELDS", "FILE", "FILES", "FILESYSTEM", "FILL", "FILTER", "FIRST", "FOLLOWING", "FOR", "FORCE", "FOREIGN", @@ -31,7 +31,7 @@ private static Set initAllowedKeywordAliases() { "HOURS", "HTTP", "ID", "IDENTIFIED", "IF", "IGNORE", "IMPLICIT", "IN", "INDEX", "INDEXES", "INDICES", "INFILE", "INHERIT", "INJECTIVE", "INSERT", "INTERPOLATE", "INTERVAL", "INVISIBLE", "INVOKER", "IP", "IS", "IS_OBJECT_ID", "JWT", "KERBEROS", "KEY", "KEYED", "KEYS", "KILL", "KIND", - "LARGE", "LAST", "LAYOUT", "LDAP", "LEADING", "LESS", "LEVEL", "LIFETIME", "LIGHTWEIGHT", + "LANGUAGE", "LARGE", "LAST", "LAYOUT", "LDAP", "LEADING", "LESS", "LEVEL", "LIFETIME", "LIGHTWEIGHT", "LIMITS", "LINEAR", "LIST", "LIVE", "LOCAL", "M", "MASK", "MASKING", "MASTER", "MATCH", "MATERIALIZE", "MATERIALIZED", "MAX", "MCS", "MEMORY", "MERGES", "METHODS", "METRICS", "MI", "MICROSECOND", "MICROSECONDS", "MILLISECOND", "MILLISECONDS", "MIN", "MINUTE", "MINUTES", "MM", @@ -45,8 +45,8 @@ private static Set initAllowedKeywordAliases() { "PROTOBUF", "PULL", "Q", "QQ", "QUARTER", "QUARTERS", "QUERY", "QUOTA", "RANDOMIZE", "RANDOMIZED", "RANGE", "READ", "READONLY", "REALM", "RECOMPRESS", "RECURSIVE", "REFERENCES", "REFRESH", "REGEXP", "REMOVE", "RENAME", "REPLACE", "REPLICATED", "RESET", "RESOURCE", "RESPECT", - "RESTORE", "RESTRICT", "RESTRICTIVE", "RESUME", "REVOKE", "REWRITE", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "S", "S3", "SALT", "SAN", "SCHEME", "SCRAM_SHA256_HASH", + "RESTORE", "RESTRICT", "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITE", "ROLE", "ROLES", + "ROLLBACK", "ROLLUP", "ROW", "ROWS", "RUN", "S", "S3", "SALT", "SAN", "SCHEME", "SCRAM_SHA256_HASH", "SCRAM_SHA256_PASSWORD", "SECOND", "SECONDS", "SECURITY", "SELECT", "SEQUENTIAL", "SERVER", "SET", "SETS", "SETTING", "SHA256_HASH", "SHA256_PASSWORD", "SHARD", "SHOW", "SIGNED", "SIMPLE", "SKIP", "SNAPSHOT", "SOURCE", "SPATIAL", "SQL", "SQL_TSI_DAY", "SQL_TSI_HOUR", diff --git a/jdbc-v2/src/test/resources/allowed_keyword_tablenames.txt b/jdbc-v2/src/test/resources/allowed_keyword_tablenames.txt index 101145dfc..201e55024 100644 --- a/jdbc-v2/src/test/resources/allowed_keyword_tablenames.txt +++ b/jdbc-v2/src/test/resources/allowed_keyword_tablenames.txt @@ -1,3 +1,4 @@ +ABI ACCESS ACTION ADD @@ -13,6 +14,7 @@ ANTI ANY APPEND APPLY +ARGUMENTS ARRAY AS ASC @@ -96,6 +98,7 @@ DIV DOUBLE_SHA1_HASH DOUBLE_SHA1_PASSWORD DROP +DRY ELSE EMPTY ENABLED @@ -186,6 +189,7 @@ KEYED KEYS KILL KIND +LANGUAGE LARGE LAST LAYOUT @@ -309,6 +313,7 @@ RESTORE RESTRICT RESTRICTIVE RESUME +RETURNS REVOKE REWRITE RIGHT @@ -318,6 +323,7 @@ ROLLBACK ROLLUP ROW ROWS +RUN S3 SALT SAMPLE diff --git a/jdbc-v2/src/test/resources/sql-keywords.txt b/jdbc-v2/src/test/resources/sql-keywords.txt index 26a46d9aa..170497d95 100644 --- a/jdbc-v2/src/test/resources/sql-keywords.txt +++ b/jdbc-v2/src/test/resources/sql-keywords.txt @@ -2,6 +2,7 @@ # Source: https://clickhouse.joesstuff.co.uk/keywords.html # Individual keywords extracted and deduplicated from system.keywords table +ABI ACCESS ACTION ADD @@ -17,6 +18,7 @@ ANTI ANY APPEND APPLY +ARGUMENTS ARRAY AS ASC @@ -105,6 +107,7 @@ DIV DOUBLE_SHA1_HASH DOUBLE_SHA1_PASSWORD DROP +DRY ELSE EMPTY ENABLED @@ -198,6 +201,7 @@ KEYED KEYS KILL KIND +LANGUAGE LARGE LAST LAYOUT @@ -334,6 +338,7 @@ RESTORE RESTRICT RESTRICTIVE RESUME +RETURNS REVOKE REWRITE RIGHT @@ -343,6 +348,7 @@ ROLLBACK ROLLUP ROW ROWS +RUN S S3 SALT