aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraidarsamer <aidarsamer@ydb.tech>2023-05-12 13:51:48 +0300
committeraidarsamer <aidarsamer@ydb.tech>2023-05-12 13:51:48 +0300
commit4b0c1d8a282c413e37ebc10491c640eb998a0661 (patch)
treee7c90cd088523460d8fe138b0089494c4ea844d2
parentc2bcd70fd53887e9507f247a1cba6ba0f02285b7 (diff)
downloadydb-4b0c1d8a282c413e37ebc10491c640eb998a0661.tar.gz
Enable AnsiLike Pragma by default for all queries
-rw-r--r--ydb/core/kqp/host/kqp_host.cpp4
-rw-r--r--ydb/core/kqp/ut/olap/kqp_olap_ut.cpp26
2 files changed, 28 insertions, 2 deletions
diff --git a/ydb/core/kqp/host/kqp_host.cpp b/ydb/core/kqp/host/kqp_host.cpp
index 3e3cec7e91..d1ffbe79c9 100644
--- a/ydb/core/kqp/host/kqp_host.cpp
+++ b/ydb/core/kqp/host/kqp_host.cpp
@@ -1093,13 +1093,13 @@ private:
}
settings.EndOfQueryCommit = sqlAutoCommit;
settings.Flags.insert("FlexibleTypes");
+ settings.Flags.insert("AnsiLike");
if (SessionCtx->Query().Type == EKikimrQueryType::Scan
|| SessionCtx->Query().Type == EKikimrQueryType::YqlScript
|| SessionCtx->Query().Type == EKikimrQueryType::YqlScriptStreaming)
{
- // We enable EmitAggApply and AnsiLike for filter and aggregate pushdowns to Column Shards
+ // We enable EmitAggApply for filter and aggregate pushdowns to Column Shards
settings.Flags.insert("EmitAggApply");
- settings.Flags.insert("AnsiLike");
} else {
settings.Flags.insert("DisableEmitStartsWith");
}
diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
index 7ac9cee7c1..3bd25b69ec 100644
--- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
+++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
@@ -1547,6 +1547,32 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TStringBuilder() << "Predicate pushed down. Query: " << query);
}
+ Y_UNIT_TEST(PredicatePushdown_LikeNotPushedDownIfAnsiLikeDisabled) {
+ auto settings = TKikimrSettings()
+ .SetWithSampleTables(false);
+ TKikimrRunner kikimr(settings);
+
+ TStreamExecScanQuerySettings scanSettings;
+ scanSettings.Explain(true);
+
+ TTableWithNullsHelper(kikimr).CreateTableWithNulls();
+ WriteTestDataForTableWithNulls(kikimr, "/Root/tableWithNulls");
+ EnableDebugLogging(kikimr);
+
+ auto tableClient = kikimr.GetTableClient();
+ auto query = R"(
+ PRAGMA DisableAnsiLike;
+ SELECT id, resource_id FROM `/Root/tableWithNulls` WHERE resource_id LIKE "%5%"
+ )";
+ auto it = tableClient.StreamExecuteScanQuery(query, scanSettings).GetValueSync();
+ UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString());
+
+ auto result = CollectStreamResult(it);
+ auto ast = result.QueryStats->Getquery_ast();
+ UNIT_ASSERT_C(ast.find("KqpOlapFilter") == std::string::npos,
+ TStringBuilder() << "Predicate pushed down. Query: " << query);
+ }
+
Y_UNIT_TEST(PredicatePushdown_MixStrictAndNotStrict) {
auto settings = TKikimrSettings()
.SetWithSampleTables(false);