jorisvandenbossche commented on code in PR #14395:
URL: https://github.com/apache/arrow/pull/14395#discussion_r994425662
##########
cpp/src/arrow/compute/kernels/scalar_nested_test.cc:
##########
@@ -116,6 +117,64 @@ TEST(TestScalarNested, ListElementInvalid) {
Raises(StatusCode::Invalid));
}
+void CheckListSlice(std::shared_ptr<Array> input, std::shared_ptr<Array>
expected,
+ SliceOptions& args) {
+ ASSERT_OK_AND_ASSIGN(auto result, CallFunction("list_slice", {input},
&args));
+ ASSERT_EQ(result, expected);
+}
+
+TEST(TestScalarNested, ListSlice) {
+ const auto value_types = {float32(), int32()};
+ for (auto value_type : value_types) {
+ auto inputs = {ArrayFromJSON(list(value_type), "[[1, 2, 3], [4, 5], [6]]"),
+ ArrayFromJSON(fixed_size_list(value_type, 3),
+ "[[1, 2, 3], [4, 5, null], [6, null,
null]]")};
+ for (auto input : inputs) {
+ SliceOptions args(0, 2);
+ auto expected =
+ ArrayFromJSON(fixed_size_list(value_type, 2), "[[1, 2], [4, 5], [6,
null]]");
Review Comment:
I _think_ I would expect an output of `[[1, 2], [4, 5], [6]]` for the
variable sized list case. (like slicing a python list until after the end, eg
`[1, 2][:4] == [1, 2]`).
Since slicing a variable sized list still results in a variable sized list
type, we can make use of that and don't require to fill with nulls when the
list is shorter than the slice we asked for?
EDIT: I see that the code actually results in fixed size list, in which case
we indeed have to fill with nulls. But so it's also an option to return
variable sized lists.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]