- Notifications
You must be signed in to change notification settings - Fork1
Parsing utilities to validate and split SQL statements for CrateDB.
License
crate/cratedb-sqlparse
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Antlr4 is a parser generator for reading, processing and executing text, there are severaltarget languages (Java, Python, JavaScript, Dart) available. CrateDB uses the Java target.
The repository holds libraries/packages created from some of those available languages, sofar:Python andJavaScript. More might be added if needed in the future.
These libraries allow you to parse Crate's SQL dialect without sending it to a CrateDB instance.
Python:https://github.com/crate/cratedb-sqlparse/tree/main/cratedb_sqlparse_pyJavascript:https://github.com/crate/cratedb-sqlparse/tree/main/cratedb_sqlparse_js
You can install the package in both its Python and JavaScript variants.
pip install cratedb-sqlparse
npm install @cratedb/cratedb-sqlparse
fromcratedb_sqlparseimportsqlparsequery=""" SELECT * FROM SYS.SHARDS; INSERT INTO doc.tbl VALUES (1);"""statements=sqlparse(query)select_query=statements[0]print(select_query.query)# 'SELECT * FROM SYS.SHARDS'
All the implemented libraries can validate SQL, split queries and parse using antrl4's listeners.
Listeners are partially implemented, which means that we can only parse:
- Create table statements: table name, schema, and 'with' options
If more metadata is needed, it can be requested in a new issue.
New features should preferably be implemented in all available targets.
The target language has to be available in antlr4,seehttps://github.com/antlr/antlr4/blob/master/doc/targets.md.
Add the new target and paths to the build script, seesetup_grammar.py.
There are several features that would need to be implemented, like case-insensitive input stream, nativeexceptions as error listener, dollar-strings and any new one. See past commits to see how they wereimplemented in Python and Javascript, remember thatCrateDB'S SQLParser written in Java is the mostcomplete and the default reference.
The generated parser is not uploaded to the repository because it is huge.To use the package locally or to build a different version use the build script.Further information can be found in thedeveloper guide.
About
Parsing utilities to validate and split SQL statements for CrateDB.
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.