From a52e5192f019fe2daabb6d7234f73929563fc01d Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Mon, 11 Jan 2021 23:48:12 +0800 Subject: [PATCH] feat: add sqlparser --- __database/sqlparser/Cargo.lock | 32 ++++++++++++++++++++++++++++++++ __database/sqlparser/Cargo.toml | 11 +++++++++++ __database/sqlparser/src/main.rs | 15 +++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 __database/sqlparser/Cargo.lock create mode 100644 __database/sqlparser/Cargo.toml create mode 100644 __database/sqlparser/src/main.rs diff --git a/__database/sqlparser/Cargo.lock b/__database/sqlparser/Cargo.lock new file mode 100644 index 0000000..46ad633 --- /dev/null +++ b/__database/sqlparser/Cargo.lock @@ -0,0 +1,32 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "log" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "sqlparser" +version = "0.1.0" +dependencies = [ + "sqlparser 0.7.0", +] + +[[package]] +name = "sqlparser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a3da41f3ddf62cbf92635ace62dd037fad9a91c6871c514fbd404e2059f27d" +dependencies = [ + "log", +] diff --git a/__database/sqlparser/Cargo.toml b/__database/sqlparser/Cargo.toml new file mode 100644 index 0000000..3cbcb5d --- /dev/null +++ b/__database/sqlparser/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "sqlparser" +version = "0.1.0" +authors = ["Hatter Jiang "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +sqlparser = "0.7.0" + diff --git a/__database/sqlparser/src/main.rs b/__database/sqlparser/src/main.rs new file mode 100644 index 0000000..855a88b --- /dev/null +++ b/__database/sqlparser/src/main.rs @@ -0,0 +1,15 @@ +use sqlparser::dialect::GenericDialect; +use sqlparser::parser::Parser; + +fn main() { + let sql = "SELECT a, b, 123, myfunc(b) \ + FROM table_1 \ + WHERE a > b AND b < 100 \ + ORDER BY a DESC, b"; + + let dialect = GenericDialect {}; // or AnsiDialect, or your own dialect ... + + let ast = Parser::parse_sql(&dialect, sql).unwrap(); + + println!("AST: {:#?}", ast); +}