Crystrix commented on a change in pull request #12251: URL: https://github.com/apache/arrow/pull/12251#discussion_r791742401
########## File path: cpp/src/arrow/compute/kernels/hash_aggregate_test.cc ########## @@ -2811,5 +2811,98 @@ TEST(GroupBy, SmallChunkSizeSumOnly) { /*verbose=*/true); } +TEST(GroupBy, CountWithNullType) { + auto table = + TableFromJSON(schema({field("argument", null()), field("key", int64())}), {R"([ + [null, 1], + [null, 1] + ])", + R"([ + [null, 2], + [null, 3], + [null, null], + [null, 1], + [null, 2] + ])", + R"([ + [null, 2], + [null, null], + [null, 3] + ])"}); + + CountOptions all(CountOptions::ALL); + CountOptions only_valid(CountOptions::ONLY_VALID); + CountOptions only_null(CountOptions::ONLY_NULL); + + for (bool use_exec_plan : {false, true}) { + for (bool use_threads : {true, false}) { + SCOPED_TRACE(use_threads ? "parallel/merged" : "serial"); + ASSERT_OK_AND_ASSIGN(Datum aggregated_and_grouped, + GroupByTest( + { + table->GetColumnByName("argument"), + table->GetColumnByName("argument"), + table->GetColumnByName("argument"), + }, + {table->GetColumnByName("key")}, + { + {"hash_count", &all}, + {"hash_count", &only_valid}, + {"hash_count", &only_null}, + }, + use_threads, use_exec_plan)); + SortBy({"key_0"}, &aggregated_and_grouped); + + AssertDatumsEqual(ArrayFromJSON(struct_({ + field("hash_count", int64()), + field("hash_count", int64()), + field("hash_count", int64()), + field("key_0", int64()), + }), + R"([ + [3, 0, 3, 1], + [3, 0, 3, 2], + [2, 0, 2, 3], + [2, 0, 2, null] + ])"), + aggregated_and_grouped, + /*verbose=*/true); + } + } +} + +TEST(GroupBy, CountWithNullTypeEmptyTable) { Review comment: No, it's just to make sure this corner case can be correctly processed. -- 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