asuhan commented on a change in pull request #11793:
URL: https://github.com/apache/arrow/pull/11793#discussion_r759844871
##########
File path: cpp/src/arrow/compute/kernels/scalar_compare_test.cc
##########
@@ -1310,6 +1348,208 @@ TYPED_TEST(TestVarArgsCompareParametricTemporal,
MinElementWise) {
{this->array("[1, null, 3, 4]"), this->array("[2, 2, null,
2]")});
}
+TYPED_TEST(TestVarArgsCompareBinary, MinElementWise) {
+ this->AssertNullScalar(MinElementWise, {});
+ this->AssertNullScalar(MinElementWise, {this->scalar("null"),
this->scalar("null")});
+
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
{this->scalar(R"("0")")});
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
+ {this->scalar(R"("2")"), this->scalar(R"("0")"),
this->scalar(R"("1")")});
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
+ {this->scalar(R"("2")"), this->scalar(R"("0")"),
this->scalar(R"("1")"),
+ this->scalar("null")});
+ this->Assert(MinElementWise, this->scalar(R"("1")"),
+ {this->scalar("null"), this->scalar("null"),
this->scalar(R"("1")"),
+ this->scalar("null")});
+
+ this->Assert(MinElementWise, (this->array("[]")), {this->array("[]")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "3", null])"),
+ {this->array(R"(["1", "2", "3", null])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"),
this->scalar(R"("2")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"),
this->scalar(R"("2")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"),
this->scalar(R"("2")"),
+ this->scalar(R"("4")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"), this->scalar("null"),
+ this->scalar(R"("2")")});
+
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array(R"(["2", "2", "2",
"2"])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array(R"(["2", null, "2",
"2"])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"), this->array(R"(["2", "2", "2",
"2"])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "2", null, "6"])"),
+ {this->array(R"(["1", "2", null, null])"),
+ this->array(R"(["4", null, null, "6"])")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", null, "6"])"),
+ {this->array(R"(["4", null, null, "6"])"),
+ this->array(R"(["1", "2", null, null])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "3", "4"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array("[null, null, null,
null]")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "3", "4"])"),
+ {this->array("[null, null, null, null]"), this->array(R"(["1", "2", "3",
"4"])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar(R"("1")"), this->array(R"(["1", "2", "3",
"4"])")});
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar(R"("1")"), this->array("[null, null, null,
null]")});
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar("null"), this->array(R"(["1", "1", "1", "1"])")});
+ this->Assert(MinElementWise, this->array("[null, null, null, null]"),
+ {this->scalar("null"), this->array("[null, null, null,
null]")});
+
+ // Test null handling
+ this->element_wise_aggregate_options_.skip_nulls = false;
+ this->AssertNullScalar(MinElementWise, {this->scalar("null"),
this->scalar("null")});
+ this->AssertNullScalar(MinElementWise, {this->scalar(R"("0")"),
this->scalar("null")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", null, "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"),
this->scalar(R"("2")"),
+ this->scalar(R"("4")")});
+ this->Assert(MinElementWise, this->array("[null, null, null, null]"),
+ {this->array(R"(["1", null, "3", "4"])"), this->scalar("null"),
+ this->scalar(R"("2")")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", null, "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array(R"(["2", null, "2",
"2"])")});
+
+ this->Assert(MinElementWise, this->array("[null, null, null, null]"),
+ {this->scalar(R"("1")"), this->array("[null, null, null,
null]")});
+ this->Assert(MinElementWise, this->array("[null, null, null, null]"),
+ {this->scalar("null"), this->array(R"(["1", "1", "1", "1"])")});
+
+ this->Assert(MinElementWise, this->array(R"([null, null, null, "bb"])"),
+ {this->array(R"([null, "a", "bb", "cccc"])"),
+ this->array(R"(["gg", null, "h", "iii"])"),
+ this->array(R"(["foo", "bar", null, "bb"])")});
+}
+
+TYPED_TEST(TestVarArgsCompareFixedSizeBinary, MinElementWise) {
+ this->AssertNullScalar(MinElementWise, {});
+ this->AssertNullScalar(MinElementWise, {this->scalar("null"),
this->scalar("null")});
+
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
{this->scalar(R"("0")")});
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
+ {this->scalar(R"("2")"), this->scalar(R"("0")"),
this->scalar(R"("1")")});
+ this->Assert(MinElementWise, this->scalar(R"("0")"),
+ {this->scalar(R"("2")"), this->scalar(R"("0")"),
this->scalar(R"("1")"),
+ this->scalar("null")});
+ this->Assert(MinElementWise, this->scalar(R"("1")"),
+ {this->scalar("null"), this->scalar("null"),
this->scalar(R"("1")"),
+ this->scalar("null")});
+
+ this->Assert(MinElementWise, (this->array("[]")), {this->array("[]")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "3", null])"),
+ {this->array(R"(["1", "2", "3", null])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"),
this->scalar(R"("2")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"),
this->scalar(R"("2")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"),
this->scalar(R"("2")"),
+ this->scalar(R"("4")")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"), this->scalar("null"),
+ this->scalar(R"("2")")});
+
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array(R"(["2", "2", "2",
"2"])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array(R"(["2", null, "2",
"2"])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "2", "2"])"),
+ {this->array(R"(["1", null, "3", "4"])"), this->array(R"(["2", "2", "2",
"2"])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "2", null, "6"])"),
+ {this->array(R"(["1", "2", null, null])"),
+ this->array(R"(["4", null, null, "6"])")});
+ this->Assert(MinElementWise, this->array(R"(["1", "2", null, "6"])"),
+ {this->array(R"(["4", null, null, "6"])"),
+ this->array(R"(["1", "2", null, null])")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "3", "4"])"),
+ {this->array(R"(["1", "2", "3", "4"])"), this->array("[null, null, null,
null]")});
+ this->Assert(
+ MinElementWise, this->array(R"(["1", "2", "3", "4"])"),
+ {this->array("[null, null, null, null]"), this->array(R"(["1", "2", "3",
"4"])")});
+
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar(R"("1")"), this->array(R"(["1", "2", "3",
"4"])")});
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar(R"("1")"), this->array("[null, null, null,
null]")});
+ this->Assert(MinElementWise, this->array(R"(["1", "1", "1", "1"])"),
+ {this->scalar("null"), this->array(R"(["1", "1", "1", "1"])")});
+ this->Assert(MinElementWise, this->array("[null, null, null, null]"),
+ {this->scalar("null"), this->array("[null, null, null,
null]")});
+
+ this->Assert(MinElementWise,
+ this->array(R"(["abc", "abc", "abc", "abc", "abc"])",
/*byte_width=*/3),
+ {this->array(R"(["abc", "abc", "abd", null, "abc"])",
/*byte_width=*/3),
+ this->array(R"(["abc", "abd", "abc", "abc", null])",
/*byte_width=*/3)});
+ this->Assert(MinElementWise, this->scalar(R"("abc")", /*byte_width=*/3),
+ {this->scalar(R"("abe")", /*byte_width=*/3),
+ this->scalar(R"("abc")", /*byte_width=*/3),
+ this->scalar(R"("abd")", /*byte_width=*/3)});
+
+ this->Assert(MinElementWise,
+ this->array(R"(["abc", "abc", "abc", "abc", "abc"])",
/*byte_width=*/3),
+ {this->array(R"(["abc", "abc", "abd", null, "abc"])",
/*byte_width=*/3),
+ this->scalar(R"("abc")", /*byte_width=*/3)});
+ this->Assert(MinElementWise,
+ this->array(R"(["abc", "abc", "abc", "abc", "abc"])",
/*byte_width=*/3),
+ {this->array(R"(["abc", null, "abd", null, "abc"])",
/*byte_width=*/3),
+ this->scalar(R"("abc")", /*byte_width=*/3)});
+ this->Assert(MinElementWise,
+ this->array(R"(["abc", "abc", "abc", "abc", "abc"])",
/*byte_width=*/3),
+ {this->array(R"(["abc", null, "abd", null, "abc"])",
/*byte_width=*/3),
+ this->scalar(R"("abc")", /*byte_width=*/3),
+ this->scalar(R"("abd")", /*byte_width=*/3)});
+ this->Assert(MinElementWise,
+ this->array(R"(["abc", "abc", "abc", "abc", "abc"])",
/*byte_width=*/3),
+ {this->array(R"(["abc", null, "abd", null, "abc"])",
/*byte_width=*/3),
+ this->scalar("null", /*byte_width=*/3),
+ this->scalar(R"("abc")", /*byte_width=*/3)});
+
+ // Test null handling
+ this->element_wise_aggregate_options_.skip_nulls = false;
+ this->AssertNullScalar(MinElementWise, {this->scalar("null"),
this->scalar("null")});
+ this->AssertNullScalar(MinElementWise, {this->scalar(R"("0")"),
this->scalar("null")});
Review comment:
We can't do this for fixed binary size, it expects a string with the
same length as the byte width of the type or null.
--
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]