Commit Graph

100 Commits

Author SHA1 Message Date
Hayden
c6615aecac
build: open ts strict check (#279)
* feat: no check lib dir

* feat: open strict check to src dir

* test: update test tsconfig.json

* feat: remove any type

* feat: do not export AbstractParseTreeVisitor

* feat: export StmtContextType as enum

* build: improve antlr4 script
2024-03-27 19:04:16 +08:00
Hayden
bb0fad1dbe
refactor: standard naming (#278)
* refactor: rename flinksql to flink

* refactor: rename pgsql to postgresql

* refactor: rename trinosql to trino

* refactor: replace all default exports with named export

* refactor: rename basicParser to basicSQL

* refactor: rename basic-parser-types to types

* refactor: replace arrow func with plain func
2024-03-27 10:33:25 +08:00
Hayden
a99721162b
feat: collect entity (#265)
* feat: add text and word utils

* feat: add entity collector class

* refactor: rename SyntaxContextType to EntityContextType

* refactor: improve EntityCollector

* feat: improve mysql parser grammar

* feat: add mysql entity collector

* test: mysql entity collector tests

* feat: remove useless method

* feat: improve spark grammar file

* feat: add spark entity collector

* test: spark entity collector unit tests

* feat: remove useless code

* feat: add queryStatement label

* feat: add crateDatabaseStmt

* feat: add trino entity collector

* feat: rename trinosql to trino

* test: trino collect entity unit tests

* test: fix spark test

* feat(impala): support impale entity collector (#256)

* Feat/collect entity hive (#263)

* feat(hive): support hive collect entity

* feat(hive): update tableAllColumns

* feat: replace antlr4ts with antlr4ng

* feat(pgsql): pgsql collect entity (#268)

* feat(pgsql): pgsql collect entity

* feat(pgsql): optimize some name

---------

Co-authored-by: zhaoge <>

* feat: get word text by token.text

* feat: supprt collect db/function and add splitListener (#270)

* feat: supprt collect db/function and add splitListner

* feat: remove SplitListener interface in baseParser to use SplitListener in root

* fix(mysql): fix show create xxx not celloct as createXXXEntity type

* test: fix pgsql unit tests

* Feat/error recover predicate (#274)

* feat: optimize pgsql grammar

* feat: add sql parser base

* feat: apply SQLParserBase

* feat: add geAllEntities method

* test: test collect table when missing column

* feat: compose collect and suggestion (#276)

* feat: mark stmt which contain caret

* test: correct name of getAllEntities

* test: remove misscolumn unit tests

* test: add suggestionWithEntity tests

* feat: flink collect entity (#277)

* feat: improve flink sql parser

* feat: support flink entity collector

* test: flink entity collect unit test

* feat: move combine entities to parent class

---------

Co-authored-by: 霜序 <976060700@qq.com>
Co-authored-by: XCynthia <942884029@qq.com>
2024-03-26 14:28:27 +08:00
Hayden
3f62ad0d32
feat: use SLL mode (#269)
* feat: use SLL(*) PredictionMode for better performance

* feat: optimize mysql grammar to fit SLL mode

* feat: optimize postgre grammmar to fit SLL mode

* feat: optimize spark grammar to fit SLL mode

* test: correct unit tests

* feat: optimize pgsql grammar
2024-03-19 11:27:23 +08:00
Hayden
195878da9b
feat: migrate to antlr4ng (#267)
* feat: replace antlr4ts with antlr4ng

* feat: switch caseInsensitive option on

* feat: recompile all g4 file

* feat:  update parser to fit antlr4ng

* test: update test to fit antlr4ng
2024-02-26 20:25:09 +08:00
JackWang032
5ce89cb421
feat(spark): support materialized view for spark sql (#262)
* feat(spark): support materialized view for spark sql

* fix(spark): code review update

* fix(spark): update spark  materilized view and zorder grammar

* test(spark): add syntaxSuggestion test of materialized view

---------

Co-authored-by: jialan <jialan@dtstack.com>
2024-02-26 17:25:19 +08:00
XCynthia
337885be8b
fix(pgsql): (issue #255) select from support view name (#257)
Co-authored-by: zhaoge <>
2024-02-05 16:24:14 +08:00
Hayden
1038a3a828
fix: trino validation (#248)
* fix: #246 program does not match standaloneClause

* test: patch unit tests
2024-01-16 11:14:03 +08:00
Hayden
8f72a5af60
Fix/export abstract visitor (#237)
* fix: #236 export AbstractParseTreeVisitor

* build: set isolatedModules true

* feat: import parser about from filters
2023-12-19 19:22:27 +08:00
Hayden
23f5aac113
Fix/split listener (#228)
* feat: improve FlinkSqlSplitListener

* feat: improve ImpalaSqlSplitListener

* feat: improve MysqlSplitListener

* fix: correct PgSqlSplitListener

* feat: improve TrinoSqlSplitListener

* test: add split listener unit test

* chore: ignore iml file

* feat: add pgsql missing rules

* test: fix pgsql unit tests
2023-12-08 18:33:16 +08:00
霜序
8c594cf0f2
fix(impala): update impala nonReserved and keywords use as functionName (#229) 2023-12-07 13:52:09 +08:00
霜序
484c881583
fix: add missing expression predicate to impala parser(#225)
* fix(impala): add select supprt is true/false/unknown and support more SEMICOLON

* fix(impala): not use emptyStatement replace SEMICOLON

* test(impala): add select unit test sql and test splitSQLByStatement
2023-11-30 19:56:07 +08:00
hayden
a98f7f938a feat: recomplie plsql parser 2023-11-29 10:48:10 +08:00
霜序
4be3640219
fix: add partitioned by sql unit test and compile impala (#221) 2023-11-29 10:02:16 +08:00
Hayden
4fbb85dfba
chore: clean comment (#220)
* build: add clean comment script

* chore: clean comment to hide sensitive information
2023-11-28 21:28:20 +08:00
Hayden
31a811d1bb
Feat column codeCompletion (#218)
* feat: flink support column suggestion

* feat: flink column suggestion unit test

* feat: hive support column suggestion

* feat: hive column suggestion unit test

* feat: trinosql support column suggestion

* feat: trino column suggest unit test

* feat: sparksql collect column suggesstion

* feat: spark column suggestion unit test

* feat: rebuild flinksql lib
2023-11-28 21:18:44 +08:00
琉易
3dadc0c4b5
feat: mysql auto complete (#219)
* refactor: mysql auto complete

* test: mysql auto complete

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
2023-11-28 21:17:18 +08:00
霜序
e203f1a48a
feat: support impala (#184)
* feat(impala): add impala sqlLexer

* feat(impala): add impala grammar

* feat(impala): add alter table sql

* feat(impala): update alter table sql

* feat(impala): add alter db sql

* feat(impala): add alter view sql

* feat(impala): add compute stats/comment statement and update partition_desc for alter table

* feat(impala): add drop statement sql

* feat(impala): add revoke and grant sql

* feat(impala): add create db/function/role/view sql

* feat(impala): add describe/explain/invalidata_metadata/load_data sql

* feat(impala): add refresh/set/shutdown sql

* feat(impala): add truncate_table/use/values sql

* fix(impala): update shutdown and invaliddate_metadata

* feat(impala): add show/update/upsert sql

* feat(impala): add create/insert sql

* feat(impala): add select and delete sql

* feat(impala): add impala tokens and fix todo

* feat(impala): update impalaparser and some test unit

* feat(impala): add syntax suggestion

* feat(impala): add syntax suggestion

* feat(impala): update test unit

* feat(impala): remove reference

* fix(impala): add statement for sqlname and collect tableName

* fix(impala): fix syntax suggestion unit test

* fix(impala): update syntax suggestion and collect column

* feat(impala): add collect column create
2023-11-28 21:11:07 +08:00
XCynthia
db05cb3e4f
feat: pgsql collect column name (#216)
* feat(pgsql: collect column name): pgsql: collect column name

* feat(pgsql): repair column name's unit test and sql

* feat(pgsql): pgsql: collect expression's column

* feat(update column's collect of some expression): pgsql: update column's collect of some expression

---------

Co-authored-by: zhaoge <>
2023-11-28 10:07:29 +08:00
琉易
428d851913
feat: #190 improve mysql grammer (#196)
* refactor: generic rename to mysql

* refactor: g4 with mysql syntax

* test: mysql syntax

* refactor: remove useless keywords

* refactor: remove nonReserved keywords

* refactor: lint specificFunction

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
2023-11-27 15:25:40 +08:00
琉易
6bbcb3c8d3
fix: #213 flinksql expression syntax (#215)
* fix: #213 use uid to replace SLASH_TEXT in dtFilePath rule

* test: #213 flinksql syntax expression

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
2023-11-23 20:59:21 +08:00
zhaoge
a5757a30b6 feat: pgsql: update routine's name 2023-11-20 09:41:12 +08:00
zhaoge
adeb26b7df feat: pgsql: optimize drop rule's content 2023-11-20 09:41:12 +08:00
zhaoge
4736a65e0c feat(pgsql: upgrade rules' name): pgsql: upgrade rules' name 2023-11-20 09:41:12 +08:00
XCynthia
cbb1279f9e
feat: support pgsql code completion (#205)
* feat: pgsql: complete sql, upgrade syntax file and complete autoImprove

* feat: pgsql: complete unit test

* feat: pgsql: update unit test for autocomplete

* feat(pgsql: update split's context type ): pgsql: update split's context type

* feat(pgsql: update schema, table, procedure, tablespace, function, view,database's rule name): pgsql

* feat: pgsql: update usualName's rule realize

* feat: pgsql:update funcName's using

---------

Co-authored-by: zhaoge <>
2023-11-15 15:34:42 +08:00
XCynthia
2e6d18e7dc
feat: improve pgsql grammar and add unit tests(#201)
* feat(pgsql: upgrade keywords and refresh them to parser file): pgsql

* feat(pgsql: check create table's syntax): pgsql

* feat(pgsql: check and update drop syntax): pgsql: check and update drop syntax

* feat: pgsql: check create's sql syntax and update g4 file

* feat: pgsql:complete other's sql and syntax except select, insert, drop

* feat: pgsql: update create, delete, insert, select, update and others' syntax

* test: pgsql: update alter's sql

* feat: pgsql: update syntax g4 file

* feat: pgsql: upgrade keywords to without '_P' in lexer and parser file

* docs: pgsql: update copyright and Reference of parser and lexer

---------

Co-authored-by: zhaoge <>
2023-11-09 11:53:40 +08:00
liuyi
56c410ebb1 fix: #197 keyword rename like value more 2023-11-02 15:07:01 +08:00
Hayden
21dcb3fdce
Improve/flink keywords (#195)
* refactor: improve flinksql keywords rule

* test: correct flink sql unit test
2023-10-30 17:57:27 +08:00
Hayden
91b7fd24c0
Feat/trino sql (#188)
* refactor: prefix trino lexer rule name with KW_

* test: add commentOtherLine function

* feat: optimize trino antlr grammar to adapt to c3

* feat: trinosqlParser supports codeCompletion and spliting

* test: trinoSql codeCompletion unit tests
2023-10-24 14:37:27 +08:00
琉易
0d9d3d65f3
test: accurate description (#183)
* test: accurate description

* refactor: optimize the use of tableName and viewName for

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
2023-10-18 10:53:43 +08:00
Hayden
7de192d486
chroe: devops (#180)
* ci: add dependencies about lint tool

* ci: replace eslint with prettier

* ci: add husky, cz and commitlint

* style: lint fix via prettier

* ci: add prettier and check-types to github workflow

'
2023-10-13 11:16:36 +08:00
琉易
4d1dfa676f
feat: support spark sql auto complete (#179)
* refactor: spark sql g4

* feat: support spark sql suggestion

* test: spark sql suggestion unit test

* test: hive spell check

* feat: spark sql keyword has multiple values

* test: KW_NOT KW_RLIKE split into two value

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
2023-10-12 17:08:21 +08:00
Hayden
53ead45ff5
Optimize/auto complete (#178)
* feat: optimize hive function name auto complete

* feat: optimize flink rules that c3 prefer to

* feat: optimize flink autoComplete

* test: flink auto complete unit tests
2023-10-11 17:15:06 +08:00
Hayden
c4030929b2
Feat/auto complete (#175)
* feat: update hive grammar to adapt to c3

* feat: support viewName, dbName, fnName autoComplete to hive

* test: add hive suggestion unit test

* test: optimze flink suggestion unit tests
2023-10-10 16:37:49 +08:00
Frank
d1c2920f80
Feat/spark sql auxiliary syntax (#165)
* feat: supplement SparkSQL add syntax unit test

* chore: recompile spark listener & visitor

---------

Co-authored-by: dilu <dilu@dtstack.com>
2023-10-09 09:49:22 +08:00
Frank
05da14d007
Feat/spark g4 (#168)
* feat: spark g4 test

* fix: fixed build lint

---------

Co-authored-by: liuyi <liuyi@dtstack.com>
Co-authored-by: dilu <dilu@dtstack.com>
2023-10-08 14:23:06 +08:00
XCynthia
2ec03f1770
feat: hive Authorization syntax and unit tests (#159)
Co-authored-by: zhaoge <>
2023-09-12 20:10:43 +08:00
XCynthia
97ab76af76
Feat check hive create syntax (#157)
* check and update abort and alter sql

* delete superfluous space

* update grammar lib after change alter parser

* update alter parser to be compatible

* check create sql

---------

Co-authored-by: zhaoge <>
2023-09-06 16:42:04 +08:00
Hayden
885b85e842
Test/hive dml (#155)
* feat: add showIndex parser rule

* test: uncomment show index test cases

* test: add unit tests about DML syntax to HiveSQL

* test: add unit tests about export and import syntax to HiveSQL

* refactor: recompile hive grammar

* test: correct description of HiveSQL unit tests
2023-09-06 15:15:04 +08:00
XCynthia
6dad62ddf4
check alter sql and syntax (#156)
* check and update abort and alter sql

* delete superfluous space

* update grammar lib after change alter parser

* update alter parser to be compatible

---------

Co-authored-by: zhaoge <>
2023-09-06 11:46:46 +08:00
Hayden
ded9f28e36
feat: improve hive keywords rule (#154) 2023-09-05 14:27:21 +08:00
Hayden
af1d71c576
Feat/hive ddl (#150)
* test: test cases about Alter Either Table or Partition

* feat: support alter protection and correct alter compact

* feat: improve keyword rules

* feat: recompile hive grammar
2023-08-30 17:58:20 +08:00
hayden
13b58b2dec feat: support DT_ADD_CONFIG_FILE syntax 2023-08-28 13:04:28 +08:00
hayden
82d097b034 fix: allow ROW and ROWS as function name 2023-08-28 12:48:18 +08:00
hayden
ebd9a1ed85 feat: hiveSQL support create/drop/alter index grammar 2023-07-07 14:52:59 +08:00
hayden
e97e0b2ef6 feat: recomplie hive sql grammar and fix parser about 2023-07-07 14:48:44 +08:00
Hayden
1b02ff5d75
feat: FlinkSQL supports auto complete (#115)
* feat: add antlr4-c3 dependencies

* feat: distinguish table, catalog and database from uid

* feat: move semicolon from sqlStatements to sqlStatement

* chore: move antlr4ts-cli to devDependencies

* feat: improve basic parser and support suggestions of token and syntax

* feat: implement suggest method in sql parsers

* test: flink sql suggestion test cases

* feat: optimize ts defination of suggestion

* feat: add split listener and optimize performance of auto-completion

* test: supplementary flink suggestion unit tests
2023-06-09 11:22:53 +08:00
Ziv
34f64e6bea
refactor: migrate antlr4 v4.12.0 to antlr4ts(4.9.0) (#106)
* build: ignore gen folder

* refactor: remove useless code

* fix: correct the Javascript usage in grammar

* refactor: move to antlr4ts

* fix: remove useless

* fix: update grammars for javascript target

* refactor: migrate to antlr4ts

* refactor: migrate to antlr4ts

* refactor: implements ParserErrorListener

* fix: rename the  start reserved word

* refactor: remove unused import

* refactor: migrate to antlr4ts

* test: update the expects of test cases

* refactor: migrate hive to antlr4ts

* refactor: update the incompatible syntax for antlr4ts

* refactor: migrate pgsql grammar to antlr4ts, increasing tests

* refactor: migrate the plsql to antlr4ts

* build: remove unused config

* build: migrate to antlr4ts

* build: migrate ts-jest to @swc/jest

* refactor: migrate to anltr4ts

* build: migrate ts-jest to @swc/jest
2023-05-30 14:44:03 +08:00
Hayden
793ff6ef0e
feat: replace fliePath with slashText to resolve conflict between filePath and arithmetic (#112) 2023-05-30 10:19:13 +08:00
wewoor
99ee6c0998 Merge branch 'master' of github.com:DTStack/dt-sql-parser 2023-05-25 10:53:40 +08:00