diff options
author | aidarsamer <aidarsamer@ydb.tech> | 2023-05-12 13:51:48 +0300 |
---|---|---|
committer | aidarsamer <aidarsamer@ydb.tech> | 2023-05-12 13:51:48 +0300 |
commit | 4b0c1d8a282c413e37ebc10491c640eb998a0661 (patch) | |
tree | e7c90cd088523460d8fe138b0089494c4ea844d2 | |
parent | c2bcd70fd53887e9507f247a1cba6ba0f02285b7 (diff) | |
download | ydb-4b0c1d8a282c413e37ebc10491c640eb998a0661.tar.gz |
Enable AnsiLike Pragma by default for all queries
-rw-r--r-- | ydb/core/kqp/host/kqp_host.cpp | 4 | ||||
-rw-r--r-- | ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 26 |
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); |