From ef1d6be0273192811225badab19515d8854822e7 Mon Sep 17 00:00:00 2001 From: Denis Smirnov <sd@picodata.io> Date: Mon, 28 Nov 2022 16:17:21 +0700 Subject: [PATCH] feat(pest grammar): support double angle quotation marks --- sbroad-core/src/frontend/sql/ir/tests.rs | 18 ++++++++++++++++++ sbroad-core/src/frontend/sql/query.pest | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/sbroad-core/src/frontend/sql/ir/tests.rs b/sbroad-core/src/frontend/sql/ir/tests.rs index ca9f87804d..3009a16575 100644 --- a/sbroad-core/src/frontend/sql/ir/tests.rs +++ b/sbroad-core/src/frontend/sql/ir/tests.rs @@ -341,5 +341,23 @@ fn front_sql19() { assert_eq!(expected_explain, plan.as_explain().unwrap()); } +// Check double angle quotation marks in the strings +#[test] +fn front_sql20() { + let input = r#"SELECT "identification_number" FROM "hash_testing" + WHERE "product_code" = '«123»'"#; + + let plan = sql_to_optimized_ir(input, vec![]); + + let expected_explain = String::from( + r#"projection ("hash_testing"."identification_number" -> "identification_number") + selection ROW("hash_testing"."product_code") = ROW('«123»') + scan "hash_testing" +"#, + ); + + assert_eq!(expected_explain, plan.as_explain().unwrap()); +} + #[cfg(test)] mod params; diff --git a/sbroad-core/src/frontend/sql/query.pest b/sbroad-core/src/frontend/sql/query.pest index 16a433ab8b..ffc3f3e4d9 100644 --- a/sbroad-core/src/frontend/sql/query.pest +++ b/sbroad-core/src/frontend/sql/query.pest @@ -113,7 +113,7 @@ Punctuation = _{ | INITIAL_PUNCTUATION | "." | "?" | "!" | ":" | ";" | "," } -Other = _{ "\\" | "/" | "@" | "%" | "&" | "*" | "#" | "§" | WHITESPACE } +Other = _{ "\\" | "/" | "@" | "%" | "&" | "*" | "#" | "§" | "»" | WHITESPACE } Value = _{ Parameter | Row | True | False | Null | Decimal | Double | Unsigned | Integer | Concat | ConcatLeft } True = @{ ^"true" } -- GitLab