Skip to content

Commit ea59201

Browse files
fixes
1 parent a86f731 commit ea59201

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

ydb/core/formats/arrow/hash/calcer.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99

1010
namespace NKikimr::NArrow::NHash {
1111

12-
void TXX64::AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer& hashCalcer) {
12+
namespace {
13+
template <class TStreamCalcer>
14+
void AppendFieldImpl(const std::shared_ptr<arrow::Scalar>& scalar, TStreamCalcer& hashCalcer) {
1315
AFL_VERIFY(scalar);
1416
NArrow::SwitchType(scalar->type->id(), [&](const auto& type) {
1517
using TWrap = std::decay_t<decltype(type)>;
@@ -28,7 +30,8 @@ void TXX64::AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TSt
2830
});
2931
}
3032

31-
void TXX64::AppendField(const std::shared_ptr<arrow::Array>& array, const int row, NArrow::NHash::NXX64::TStreamStringHashCalcer& hashCalcer) {
33+
template <class TStreamCalcer>
34+
void AppendFieldImpl(const std::shared_ptr<arrow::Array>& array, const int row, TStreamCalcer& hashCalcer) {
3235
NArrow::SwitchType(array->type_id(), [&](const auto& type) {
3336
using TWrap = std::decay_t<decltype(type)>;
3437
using T = typename TWrap::T;
@@ -49,6 +52,24 @@ void TXX64::AppendField(const std::shared_ptr<arrow::Array>& array, const int ro
4952
});
5053
}
5154

55+
} // namespace
56+
57+
void TXX64::AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer& hashCalcer) {
58+
AppendFieldImpl(scalar, hashCalcer);
59+
}
60+
61+
void TXX64::AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer_H3& hashCalcer) {
62+
AppendFieldImpl(scalar, hashCalcer);
63+
}
64+
65+
void TXX64::AppendField(const std::shared_ptr<arrow::Array>& array, const int row, NArrow::NHash::NXX64::TStreamStringHashCalcer& hashCalcer) {
66+
AppendFieldImpl(array, row, hashCalcer);
67+
}
68+
69+
void TXX64::AppendField(const std::shared_ptr<arrow::Array>& array, const int row, NArrow::NHash::NXX64::TStreamStringHashCalcer_H3& hashCalcer) {
70+
AppendFieldImpl(array, row, hashCalcer);
71+
}
72+
5273
std::optional<std::vector<ui64>> TXX64::Execute(const std::shared_ptr<arrow::RecordBatch>& batch) const {
5374
std::vector<std::shared_ptr<arrow::Array>> columns = GetColumns(batch);
5475
if (columns.empty()) {

ydb/core/formats/arrow/hash/calcer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ class TXX64 {
6767

6868
static void AppendField(const std::shared_ptr<arrow::Array>& array, const int row, NXX64::TStreamStringHashCalcer& hashCalcer);
6969
static void AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer& hashCalcer);
70+
static void AppendField(const std::shared_ptr<arrow::Array>& array, const int row, NXX64::TStreamStringHashCalcer_H3& hashCalcer);
71+
static void AppendField(const std::shared_ptr<arrow::Scalar>& scalar, NXX64::TStreamStringHashCalcer_H3& hashCalcer);
7072
static ui64 CalcHash(const std::shared_ptr<arrow::Scalar>& scalar);
7173
std::optional<std::vector<ui64>> Execute(const std::shared_ptr<arrow::RecordBatch>& batch) const;
7274

0 commit comments

Comments
 (0)