diff options
author | aidarsamer <aidarsamer@ydb.tech> | 2023-02-07 12:55:31 +0300 |
---|---|---|
committer | aidarsamer <aidarsamer@ydb.tech> | 2023-02-07 12:55:31 +0300 |
commit | d4fa52ab178a43bfa1abbd220da2dbba048cda69 (patch) | |
tree | 68ba33a6695eb6236d7ded8dea1e7eb1fba8d6af | |
parent | 02d113168a3b5ec0f6ce872057cd39f1c6dc1300 (diff) | |
download | ydb-d4fa52ab178a43bfa1abbd220da2dbba048cda69.tar.gz |
Enable block operations in KQP.
-rw-r--r-- | ydb/core/kqp/host/kqp_host.cpp | 11 | ||||
-rw-r--r-- | ydb/core/kqp/host/kqp_runner.cpp | 1 | ||||
-rw-r--r-- | ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 17 |
3 files changed, 25 insertions, 4 deletions
diff --git a/ydb/core/kqp/host/kqp_host.cpp b/ydb/core/kqp/host/kqp_host.cpp index 17e2f55f5b..a6d39e32d1 100644 --- a/ydb/core/kqp/host/kqp_host.cpp +++ b/ydb/core/kqp/host/kqp_host.cpp @@ -10,6 +10,7 @@ #include <ydb/library/yql/core/services/yql_transform_pipeline.h> #include <ydb/library/yql/providers/result/provider/yql_result_provider.h> #include <ydb/library/yql/providers/config/yql_config_provider.h> +#include <ydb/library/yql/providers/common/arrow_resolve/yql_simple_arrow_resolver.h> #include <ydb/library/yql/providers/common/codec/yql_codec.h> #include <ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h> #include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h> @@ -922,6 +923,7 @@ public: TypesCtx->Modules = ModuleResolver; TypesCtx->UserDataStorage = MakeIntrusive<TUserDataStorage>(nullptr, TUserDataTable(), nullptr, nullptr); TypesCtx->JsonQueryReturnsJsonDocument = true; + TypesCtx->ArrowResolver = MakeSimpleArrowResolver(*FuncRegistry); // Result provider auto writerFactory = [] () { return MakeIntrusive<TKqpResultWriter>(); }; @@ -934,10 +936,11 @@ public: // Config provider const TGatewaysConfig* gatewaysConfig = nullptr; // TODO: can we get real gatewaysConfig here? auto allowSettings = [](TStringBuf settingName) { - return - settingName == "OrderedColumns" || - settingName == "DisableOrderedColumns" || - settingName == "Warning"; + return settingName == "OrderedColumns" + || settingName == "DisableOrderedColumns" + || settingName == "Warning" + || settingName == "UseBlocks" + ; }; auto configProvider = CreateConfigProvider(*TypesCtx, gatewaysConfig, {}, allowSettings); TypesCtx->AddDataSource(ConfigProviderName, configProvider); diff --git a/ydb/core/kqp/host/kqp_runner.cpp b/ydb/core/kqp/host/kqp_runner.cpp index 2248538931..3465051406 100644 --- a/ydb/core/kqp/host/kqp_runner.cpp +++ b/ydb/core/kqp/host/kqp_runner.cpp @@ -305,6 +305,7 @@ private: YQL_CLOG(TRACE, ProviderKqp) << "PhysicalPeepholeTransformer: " << TransformerStatsToYson(PhysicalPeepholeTransformer->GetStatistics()); YQL_CLOG(DEBUG, ProviderKqp) << "Physical KQL query: " << KqpExprToPrettyString(*builtQuery, ctx); + YQL_CLOG(DEBUG, ProviderKqp) << "Physical KQL query after peephole: " << KqpExprToPrettyString(*transformedQuery, ctx); auto& preparedQuery = *TransformCtx->QueryCtx->PreparingQuery; TKqpPhysicalQuery physicalQuery(transformedQuery); diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp index 0209be0035..35744a9e18 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp @@ -3830,6 +3830,23 @@ Y_UNIT_TEST_SUITE(KqpOlap) { TestTableWithNulls({ testCase }); } + + Y_UNIT_TEST(BlocksRead) { + TAggregationTestCase testCase; + testCase.SetQuery(R"( + PRAGMA UseBlocks; + PRAGMA Kikimr.OptEnableOlapPushdown = "false"; + + SELECT + id, resource_id + FROM `/Root/tableWithNulls` + WHERE + level = 5; + )") + .SetExpectedReply("[[5;#]]"); + + TestTableWithNulls({ testCase }); + } } } // namespace NKqp |