summaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/computation/mkql_block_trimmer.cpp
diff options
context:
space:
mode:
authoratarasov5 <[email protected]>2025-03-03 16:31:45 +0300
committeratarasov5 <[email protected]>2025-03-03 16:49:51 +0300
commit35c4c93230d28f35ca37296c064a1b8807146307 (patch)
tree42beb0c25393375f86a4e2af97a9d2db8427601b /yql/essentials/minikql/computation/mkql_block_trimmer.cpp
parentca1e2aef23c33eb024704bdf3568f131a2763eaa (diff)
YQL-18276: Block singular type implementation
commit_hash:1334e5c0fb5ff26fd40681059409f46cf49ec025
Diffstat (limited to 'yql/essentials/minikql/computation/mkql_block_trimmer.cpp')
-rw-r--r--yql/essentials/minikql/computation/mkql_block_trimmer.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/yql/essentials/minikql/computation/mkql_block_trimmer.cpp b/yql/essentials/minikql/computation/mkql_block_trimmer.cpp
index b53a3890a4b..0b53f914525 100644
--- a/yql/essentials/minikql/computation/mkql_block_trimmer.cpp
+++ b/yql/essentials/minikql/computation/mkql_block_trimmer.cpp
@@ -98,6 +98,17 @@ public:
}
};
+class TSingularBlockTrimmer: public TBlockTrimmerBase {
+public:
+ TSingularBlockTrimmer(arrow::MemoryPool* pool)
+ : TBlockTrimmerBase(pool) {
+ }
+
+ std::shared_ptr<arrow::ArrayData> Trim(const std::shared_ptr<arrow::ArrayData>& array) override {
+ return array;
+ }
+};
+
template<typename TStringType, bool Nullable>
class TStringBlockTrimmer : public TBlockTrimmerBase {
using TOffset = typename TStringType::offset_type;
@@ -217,6 +228,7 @@ struct TTrimmerTraits {
using TResource = TResourceBlockTrimmer<Nullable>;
template<typename TTzDate, bool Nullable>
using TTzDateReader = TTzDateBlockTrimmer<TTzDate, Nullable>;
+ using TSingular = TSingularBlockTrimmer;
constexpr static bool PassType = false;
@@ -237,6 +249,10 @@ struct TTrimmerTraits {
}
}
+ static TResult::TPtr MakeSingular(arrow::MemoryPool* pool) {
+ return std::make_unique<TSingular>(pool);
+ }
+
template<typename TTzDate>
static TResult::TPtr MakeTzDate(bool isOptional, arrow::MemoryPool* pool) {
if (isOptional) {