rok commented on code in PR #37533: URL: https://github.com/apache/arrow/pull/37533#discussion_r1434655309
########## cpp/src/arrow/extension/fixed_shape_tensor.cc: ########## @@ -293,40 +335,49 @@ const Result<std::shared_ptr<Tensor>> FixedShapeTensorArray::ToTensor() const { // To convert an array of n dimensional tensors to a n+1 dimensional tensor we // interpret the array's length as the first dimension the new tensor. - auto ext_arr = std::static_pointer_cast<FixedSizeListArray>(this->storage()); - auto ext_type = internal::checked_pointer_cast<FixedShapeTensorType>(this->type()); - ARROW_RETURN_IF(!is_fixed_width(*ext_arr->value_type()), - Status::Invalid(ext_arr->value_type()->ToString(), - " is not valid data type for a tensor")); - auto permutation = ext_type->permutation(); + const auto ext_type = + internal::checked_pointer_cast<FixedShapeTensorType>(this->type()); + const auto value_type = ext_type->value_type(); + ARROW_RETURN_IF( + !is_fixed_width(*value_type), + Status::Invalid(value_type->ToString(), " is not valid data type for a tensor")); - std::vector<std::string> dim_names; - if (!ext_type->dim_names().empty()) { - for (auto i : permutation) { - dim_names.emplace_back(ext_type->dim_names()[i]); + std::vector<int64_t> permutation = ext_type->permutation(); + if (permutation.empty()) { + for (int64_t i = 0; i < static_cast<int64_t>(ext_type->ndim()); i++) { + permutation.emplace_back(i); } - dim_names.insert(dim_names.begin(), 1, ""); - } else { - dim_names = {}; } + for (int64_t i = 0; i < static_cast<int64_t>(ext_type->ndim()); i++) { + permutation[i] += 1; Review Comment: `ext_type->permutation()` gives us permutation for a single row (range [0, ndim)). We want to create a tensor (ndim+1) from the whole array and we assume the first dimension will always have the greatest stride, so it will get permutation index 0 and remaining values from `ext_type->permutation()` need to be shifted to range [1, ndim+1). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org