diff options
author | lucius <lucius@yandex-team.com> | 2025-03-13 14:27:23 +0300 |
---|---|---|
committer | lucius <lucius@yandex-team.com> | 2025-03-13 15:10:13 +0300 |
commit | f32f9dee5085a51ac5ef9d05db59ca8e12c31921 (patch) | |
tree | ce264c4375f96464e182fdbb744c06a9adb2a158 | |
parent | bb79ab4b211ffe4f1cf0c3c1d22ea1275187c18a (diff) | |
download | ydb-f32f9dee5085a51ac5ef9d05db59ca8e12c31921.tar.gz |
YQL-19382 fix '=' in QL Filter
commit_hash:d70c7a6d4bc93af03d6bdcb1da1796f254052c36
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; |