aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlucius <lucius@yandex-team.com>2025-03-13 14:27:23 +0300
committerlucius <lucius@yandex-team.com>2025-03-13 15:10:13 +0300
commitf32f9dee5085a51ac5ef9d05db59ca8e12c31921 (patch)
treece264c4375f96464e182fdbb744c06a9adb2a158
parentbb79ab4b211ffe4f1cf0c3c1d22ea1275187c18a (diff)
downloadydb-f32f9dee5085a51ac5ef9d05db59ca8e12c31921.tar.gz
YQL-19382 fix '=' in QL Filter
commit_hash:d70c7a6d4bc93af03d6bdcb1da1796f254052c36
-rw-r--r--yt/yql/providers/yt/gateway/native/yql_yt_native.cpp14
-rw-r--r--yt/yql/tests/sql/suites/ql_filter/integer_single_equals.cfg1
-rw-r--r--yt/yql/tests/sql/suites/ql_filter/integer_single_equals.sql5
3 files changed, 18 insertions, 2 deletions
diff --git a/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp b/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp
index ec1edd10d9..feeceb31e5 100644
--- a/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp
+++ b/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp
@@ -262,7 +262,7 @@ void GetIntegerConstraints(const TExprNode::TPtr& column, bool& isSigned, ui64&
}
}
-void QuoteColumnForQL(const TStringBuf columnName, TStringBuilder& result) {
+void QuoteColumnForQL(const TStringBuf& columnName, TStringBuilder& result) {
result << '`';
if (!columnName.Contains('`')) {
result << columnName;
@@ -278,6 +278,14 @@ void QuoteColumnForQL(const TStringBuf columnName, TStringBuilder& result) {
result << '`';
}
+void ConvertComparisonForQL(const TStringBuf& opName, TStringBuilder& result) {
+ if (opName == "==") {
+ result << '=';
+ } else {
+ result << opName;
+ }
+}
+
void GenerateInputQueryIntegerComparison(const TStringBuf& opName, const TExprNode::TPtr& intColumn, const TExprNode::TPtr& intValue, TStringBuilder& result) {
bool columnsIsSigned;
ui64 minValueAbs;
@@ -310,7 +318,9 @@ void GenerateInputQueryIntegerComparison(const TStringBuf& opName, const TExprNo
const auto columnName = intColumn->ChildPtr(1)->Content();
const auto valueStr = maybeInt.Cast().Literal().Value();
QuoteColumnForQL(columnName, result);
- result << " " << opName << " " << valueStr;
+ result << " ";
+ ConvertComparisonForQL(opName, result);
+ result << " " << valueStr;
}
}
diff --git a/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.cfg b/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.cfg
new file mode 100644
index 0000000000..d0ce4581d7
--- /dev/null
+++ b/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.cfg
@@ -0,0 +1 @@
+in Input integer.txt
diff --git a/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.sql b/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.sql
new file mode 100644
index 0000000000..de3063e888
--- /dev/null
+++ b/yt/yql/tests/sql/suites/ql_filter/integer_single_equals.sql
@@ -0,0 +1,5 @@
+pragma yt.UseQLFilter;
+
+select a
+from plato.Input
+where a = 1;