aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Avdonkin <aavdonkin@yandex.ru>2024-11-28 12:08:43 +0300
committerGitHub <noreply@github.com>2024-11-28 12:08:43 +0300
commit4da928050f32fee823b85fd6d6ee322ce4187892 (patch)
treeb1670299a686b1d4afb6d8a7501f3114ae8a9040
parent31e0e4623992fbd723f2a304f98dd0d5bbb34ebe (diff)
downloadydb-4da928050f32fee823b85fd6d6ee322ce4187892.tar.gz
Write last record with the same key from batch (#12048)
-rw-r--r--ydb/core/formats/arrow/permutations.cpp8
-rw-r--r--ydb/core/kqp/ut/olap/kqp_olap_ut.cpp2
2 files changed, 7 insertions, 3 deletions
diff --git a/ydb/core/formats/arrow/permutations.cpp b/ydb/core/formats/arrow/permutations.cpp
index 7e68cc91f26..47e8037b860 100644
--- a/ydb/core/formats/arrow/permutations.cpp
+++ b/ydb/core/formats/arrow/permutations.cpp
@@ -41,10 +41,14 @@ std::shared_ptr<arrow::UInt64Array> MakeSortPermutation(const std::vector<std::s
}
if (haveNulls) {
- std::sort(points.begin(), points.end());
+ std::sort(points.begin(), points.end(), [](const TRawReplaceKey& a, const TRawReplaceKey& b) {
+ auto cmp = a <=> b;
+ return cmp == std::partial_ordering::equivalent ? a.GetPosition() > b.GetPosition() : cmp == std::partial_ordering::less;
+ });
} else {
std::sort(points.begin(), points.end(), [](const TRawReplaceKey& a, const TRawReplaceKey& b) {
- return a.CompareNotNull(b) == std::partial_ordering::less;
+ auto cmp = a.CompareNotNull(b);
+ return cmp == std::partial_ordering::equivalent ? a.GetPosition() > b.GetPosition() : cmp == std::partial_ordering::less;
});
}
diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
index b43132cb9a6..93e1d345b92 100644
--- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
+++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
@@ -2443,7 +2443,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// Cout << "Wait indexation..." << Endl;
// Sleep(TDuration::Seconds(2));
// }
- testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=2", "[[2;\"test_res_2\";#;[\"val1\"]]]");
+ testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=2", "[[2;\"test_res_2\";#;[\"val2\"]]]");
}
Y_UNIT_TEST(BulkUpsertUpdate) {