diff --git a/package.json b/package.json index 08757eff..fc4a88ba 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "pre-commit": "npx pretty-quick --staged" }, "dependencies": { - "dt-sql-parser": "4.0.2" + "dt-sql-parser": "4.1.0-beta.4" }, "peerDependencies": { "monaco-editor": ">=0.31.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d53512fd..1c3b1e83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: dt-sql-parser: - specifier: 4.0.2 - version: 4.0.2(antlr4ng-cli@1.0.7) + specifier: 4.1.0-beta.4 + version: 4.1.0-beta.4(antlr4ng-cli@1.0.7) devDependencies: '@commitlint/cli': specifier: ^17.7.2 @@ -714,8 +714,9 @@ packages: resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} engines: {node: '>=6'} - dt-sql-parser@4.0.2: - resolution: {integrity: sha512-8D/kfYLW+wgz7Cwf5K+OCtex7QHiCyIuI18pw0a5vjSXRKCpfQqNQeG7tU5vp4D0RQEZJiMBuKJPBYwoqWxoAA==} + dt-sql-parser@4.1.0-beta.4: + resolution: {integrity: sha512-L+Qsw+lv7enkMuhy0XXOm7H63gaajwX7X0RUGCNU8h5xw9Pj5DEWvLcKTS0R+YmO4FzVXOpEzH9e1KkqQaKFaQ==} + engines: {node: '>=18'} email-addresses@3.1.0: resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} @@ -2060,7 +2061,7 @@ snapshots: '@types/node': 20.5.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.5.4) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.5.4))(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.5.4))(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.5.4))(typescript@5.5.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -2576,7 +2577,7 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.5.4))(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4): + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.5.4))(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.5.4))(typescript@5.5.4): dependencies: '@types/node': 20.5.1 cosmiconfig: 8.3.6(typescript@5.5.4) @@ -2702,7 +2703,7 @@ snapshots: find-up: 3.0.0 minimatch: 3.1.2 - dt-sql-parser@4.0.2(antlr4ng-cli@1.0.7): + dt-sql-parser@4.1.0-beta.4(antlr4ng-cli@1.0.7): dependencies: antlr4-c3: 3.3.7(antlr4ng-cli@1.0.7) antlr4ng: 2.0.11(antlr4ng-cli@1.0.7) diff --git a/src/languages/flink/flink.ts b/src/languages/flink/flink.ts index 81b4f820..c3d0b5f2 100644 --- a/src/languages/flink/flink.ts +++ b/src/languages/flink/flink.ts @@ -292,10 +292,11 @@ export const language = { 'EXP', 'CEIL', 'CEILING', - 'FLOOR', 'SIN', 'SINH', + 'SQRT', 'COS', + 'MOD', 'TAN', 'TANH', 'COT', @@ -335,6 +336,7 @@ export const language = { 'CONCAT', 'CONCAT_WS', 'LPAD', + 'RIGHT', 'RPAD', 'FROM_BASE64', 'TO_BASE64', @@ -343,6 +345,7 @@ export const language = { 'DECODE', 'ENCODE', 'INSTR', + 'LEFT', 'LOCATE', 'PARSE_URL', 'REGEXP', @@ -375,15 +378,17 @@ export const language = { 'TO_TIMESTAMP_LTZ', 'TO_TIMESTAMP', 'CURRENT_WATERMARK', + 'OVERLAPS', // Conditional Functions 'COALESCE', + 'GREATEST', 'IF', 'IFNULL', 'IS_ALPHA', 'IS_DECIMAL', 'IS_DIGIT', - 'GREATEST', 'LEAST', + 'NULLIF', // Type Conversion Functions 'CAST', 'TRY_CAST', @@ -391,7 +396,12 @@ export const language = { // Collection Functions 'CARDINALITY', 'ELEMENT', + 'ARRAY', + 'MAP', 'ARRAY_CONTAINS', + // comparison function + 'EXISTS', + 'IN', // JSON Functions 'JSON_EXISTS', 'JSON_STRING', @@ -404,14 +414,15 @@ export const language = { // Grouping Functions 'GROUP_ID', 'GROUPING', + 'GROUPING_ID', // Hash Functions 'MD5', 'SHA1', + 'SHA2', 'SHA224', 'SHA256', 'SHA384', 'SHA512', - 'SHA2', // Aggregate Functions 'COUNT', 'AVG', @@ -459,7 +470,6 @@ export const language = { 'TIME', 'TIMESTAMP', 'TIMESTAMP_LTZ', - 'INTERVAL', 'ARRAY', 'MULTISET', 'MAP', @@ -467,6 +477,7 @@ export const language = { 'RAW', 'DEC', 'NUMERIC', + 'INT', 'INTERVAL' ], scopeKeywords: ['CASE', 'END', 'WHEN', 'THEN', 'ELSE'], @@ -483,6 +494,7 @@ export const language = { { include: '@complexIdentifiers' }, { include: '@scopes' }, { include: '@complexDataTypes' }, + { include: '@complexFunctions' }, [/[;,.]/, TokenClassConsts.DELIMITER], [/[\(\)\[\]\{\}]/, '@brackets'], [ @@ -550,6 +562,10 @@ export const language = { [/DOUBLE\s+PRECISION\b/i, { token: TokenClassConsts.TYPE }], [/WITHOUT\s+TIME\s+ZONE\b/i, { token: TokenClassConsts.TYPE }], [/WITH\s+LOCAL\s+TIME\s+ZONE\b/i, { token: TokenClassConsts.TYPE }] + ], + complexFunctions: [ + [/NOT\s+IN\b/i, { token: TokenClassConsts.PREDEFINED }], + [/IS\s+JSON\b/i, { token: TokenClassConsts.PREDEFINED }] ] } }; diff --git a/src/main.ts b/src/main.ts index f743ce30..45036c2a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,6 +13,9 @@ export type { Suggestions, TextSlice, ParseError, + StmtContext, EntityContext, - StmtContext + CommonEntityContext, + ColumnEntityContext, + FuncEntityContext } from 'dt-sql-parser';