From 3b133f5914124a0698718f84e4023cf0d57854f2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 29 Oct 2023 09:59:02 +0100 Subject: [PATCH] update sqlparser fixes: MySQL's `REGEXP` binary operator is not supported #107 and answers https://github.com/lovasoa/SQLpage/discussions/109 --- CHANGELOG.md | 1 + Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- src/webserver/database/sql.rs | 2 ++ 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05f58388..fcbccef4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - `sqlpage.variables('get')` returns a json object containing all url parameters. Inside `/my_page.sql?x=1&y=2`, it returns the string `'{"x":"1","y":"2"}'` - `sqlpage.variables('post')` returns a json object containg all variables passed through a form. This makes it much easier to handle a form with a variable number of fields. - Remove systematic casting in SQL of all parameters to `TEXT`. The supported databases understand the type of the parameters natively. + - Some advanced or database-specific SQL syntax that previously failed to parse inside SQLPage is now supported. See [updates in SQLParser](https://github.com/sqlparser-rs/sqlparser-rs/blob/main/CHANGELOG.md#added) ## 0.14.0 (2023-10-19) diff --git a/Cargo.lock b/Cargo.lock index 4b8f2037..4a4e10b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,9 +501,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -837,9 +837,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e56284f00d94c1bc7fd3c77027b4623c88c1f53d8d2394c6199f2921dea325" +checksum = "01cec0252c2afff729ee6f00e903d479fba81784c8e2bd77447673471fdfaea1" dependencies = [ "concurrent-queue", "parking", @@ -2313,9 +2313,9 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0272b7bb0a225320170c99901b4b5fb3a4384e255a7f2cc228f61e2ba3893e75" +checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" dependencies = [ "log", "sqlparser_derive", @@ -3030,18 +3030,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ba595b9f2772fbee2312de30eeb80ec773b4cb2f1e8098db024afadda6c06f" +checksum = "ede7d7c7970ca2215b8c1ccf4d4f354c4733201dfaaba72d44ae5b37472e4901" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772666c41fb6dceaf520b564b962d738a8e1a83b41bd48945f50837aed78bb1d" +checksum = "4b27b1bb92570f989aac0ab7e9cbfbacdd65973f7ee920d9f0e71ebac878fd0b" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 5b146817..9eb903fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ anyhow = "1" serde = "1" serde_json = { version = "1.0.82", features = ["preserve_order"] } lambda-web = { version = "0.2.1", features = ["actix4"], optional = true } -sqlparser = { version = "0.38.0", features = ["visitor"] } +sqlparser = { version = "0.39.0", features = ["visitor"] } async-stream = "0.3" async-trait = "0.1.61" async-recursion = "1.0.0" diff --git a/src/webserver/database/sql.rs b/src/webserver/database/sql.rs index f85f0c5a..1a688c3a 100644 --- a/src/webserver/database/sql.rs +++ b/src/webserver/database/sql.rs @@ -524,6 +524,8 @@ impl VisitorMut for ParameterExtractor { FunctionArg::Unnamed(FunctionArgExpr::Expr(right)), ], over: None, + filter: None, + null_treatment: None, distinct: false, special: false, order_by: vec![],