99
1010namespace 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+
5273std::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 ()) {
0 commit comments