aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony-Romanov <150126326+Tony-Romanov@users.noreply.github.com>2024-02-09 12:43:46 +0100
committerGitHub <noreply@github.com>2024-02-09 14:43:46 +0300
commit4e4acd3bda18997cdcc2a758293d0aa90a36bafd (patch)
tree12be1e8fd86d38a53bfb44dae6db80820ec40bcf
parent24479f49110ef282ddb4c8c9075b37d2d540894e (diff)
downloadydb-4e4acd3bda18997cdcc2a758293d0aa90a36bafd.tar.gz
Return back dq_arrow_helpers (#1762)
-rw-r--r--ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp b/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp
index d2f4ace50a..773b366857 100644
--- a/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp
+++ b/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp
@@ -9,7 +9,7 @@
#include <ydb/core/tx/schemeshard/olap/schema/schema.h>
#include <ydb/library/yql/core/yql_expr_optimize.h>
-#include <ydb/library/yql/public/udf/arrow/block_builder.h>
+#include <ydb/library/yql/dq/runtime/dq_arrow_helpers.h>
#include <ydb/library/actors/core/log.h>
@@ -63,14 +63,20 @@ std::pair<TString, TString> SerializeKqpTasksParametersForOlap(const TStageInfo&
}
const auto [type, value] = stageInfo.Meta.Tx.Params->GetParameterUnboxedValue(name);
- const auto builder = NUdf::MakeArrayBuilder(NMiniKQL::TTypeInfoHelper(), type, *arrow::default_memory_pool(), 1U, nullptr);
- builder->Add(value);
- const auto datum = builder->Build(true);
+ YQL_ENSURE(NYql::NArrow::IsArrowCompatible(type), "Incompatible parameter type. Can't convert to arrow");
- auto field = std::make_shared<arrow::Field>(name, datum.type());
+ std::unique_ptr<arrow::ArrayBuilder> builder = NYql::NArrow::MakeArrowBuilder(type);
+ NYql::NArrow::AppendElement(value, builder.get(), type);
+
+ std::shared_ptr<arrow::Array> array;
+ const auto status = builder->Finish(&array);
+
+ YQL_ENSURE(status.ok(), "Failed to build arrow array of variables.");
+
+ auto field = std::make_shared<arrow::Field>(name, array->type());
columns.emplace_back(std::move(field));
- data.emplace_back(datum.make_array());
+ data.emplace_back(std::move(array));
}
}