Fokko commented on code in PR #36846:
URL: https://github.com/apache/arrow/pull/36846#discussion_r1295957962
##########
cpp/src/arrow/table_test.cc:
##########
@@ -520,6 +522,36 @@ TEST_F(ConcatenateTablesWithPromotionTest, Simple) {
AssertTablesEqualUnorderedFields(*expected, *result);
}
+TEST_F(ConcatenateTablesWithPromotionTest, Unify) {
+ auto t1 = TableFromJSON(schema({field("f0", int32())}), {"[[0], [1]]"});
+ auto t2 = TableFromJSON(schema({field("f0", int64())}), {"[[2], [3]]"});
+ auto t3 = TableFromJSON(schema({field("f0", null())}), {"[[null], [null]]"});
+
+ auto expected_int64 =
+ TableFromJSON(schema({field("f0", int64())}), {"[[0], [1], [2], [3]]"});
+ auto expected_null =
+ TableFromJSON(schema({field("f0", int32())}), {"[[0], [1], [null],
[null]]"});
+
+ ConcatenateTablesOptions options;
+ EXPECT_RAISES_WITH_MESSAGE_THAT(Invalid,
+ ::testing::HasSubstr("Schema at index 1 was
different"),
+ ConcatenateTables({t1, t2}, options));
+ EXPECT_RAISES_WITH_MESSAGE_THAT(Invalid,
+ ::testing::HasSubstr("Schema at index 1 was
different"),
+ ConcatenateTables({t1, t3}, options));
+
+ options.unify_schemas = true;
+ EXPECT_RAISES_WITH_MESSAGE_THAT(Invalid,
+ ::testing::HasSubstr("Field f0 has
incompatible types"),
+ ConcatenateTables({t1, t2}, options));
+ ASSERT_OK_AND_ASSIGN(auto actual, ConcatenateTables({t1, t3}, options));
+ AssertTablesEqual(*expected_null, *actual, /*same_chunk_layout=*/false);
+
+ options.field_merge_options.promote_numeric_width = true;
+ ASSERT_OK_AND_ASSIGN(actual, ConcatenateTables({t1, t2}, options));
+ AssertTablesEqual(*expected_int64, *actual, /*same_chunk_layout=*/false);
+}
Review Comment:
I wasn't sure what kind of tests you were looking for.
--
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]