mroz45 opened a new issue, #45876: URL: https://github.com/apache/arrow/issues/45876
### Describe the bug, including details regarding any error messages, version, and platform. asof-join-node and sorted-merge-node use the NormalizeTime function, but in its current implementation, negative values are mapped to the highest uint64_t values. In the case of asof-join-node, where the column contains negative numbers at the beginning, they are converted into extremely large values, potentially causing an out-of-order error. The issue can be reproduced with the following code: ``` TEST(AsofJoinTest, NegativeStartTime) { auto l_schema = schema({field("time", int32()), field("key", int32()), field("l_value", int32())}); auto r_schema = schema({field("time", int32()), field("key", int32()), field("r_value", int32())}); ASSERT_OK_AND_ASSIGN(auto l_batches, MakeBatchesFromNumString(l_schema, {R"([[-1, -10, 1], [2, 1, 2], [10, 14, 3], [15, 16, 3]])"})); ASSERT_OK_AND_ASSIGN(auto r_batches, MakeBatchesFromNumString(r_schema, {R"([[-5, 1, 10], [5, 1, 20], [15, 1, 30], [18, 1, 30]])"})); Declaration l_src = {"source", SourceNodeOptions(l_schema, l_batches.gen(false, false))}; Declaration r_src = {"source", SourceNodeOptions(r_schema, r_batches.gen(false, false))}; arrow::acero::AsofJoinNodeOptions::Keys left_keys, right_keys; left_keys.on_key = arrow::FieldRef("time"); right_keys.on_key = arrow::FieldRef("time"); AsofJoinNodeOptions asof_join_opts({left_keys, right_keys}, 1); Declaration asofjoin = { "asofjoin", {std::move(l_src), std::move(r_src)}, std::move(asof_join_opts)}; ASSERT_OK_AND_ASSIGN(auto result, DeclarationToTable(asofjoin)); } ``` ### Component(s) C++ -- 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: issues-unsubscr...@arrow.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org