aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraidarsamer <aidarsamer@ydb.tech>2023-02-07 12:55:31 +0300
committeraidarsamer <aidarsamer@ydb.tech>2023-02-07 12:55:31 +0300
commitd4fa52ab178a43bfa1abbd220da2dbba048cda69 (patch)
tree68ba33a6695eb6236d7ded8dea1e7eb1fba8d6af
parent02d113168a3b5ec0f6ce872057cd39f1c6dc1300 (diff)
downloadydb-d4fa52ab178a43bfa1abbd220da2dbba048cda69.tar.gz
Enable block operations in KQP.
-rw-r--r--ydb/core/kqp/host/kqp_host.cpp11
-rw-r--r--ydb/core/kqp/host/kqp_runner.cpp1
-rw-r--r--ydb/core/kqp/ut/olap/kqp_olap_ut.cpp17
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