From 78aa6fa75eba124b91b200bfe76c67e94ee968a4 Mon Sep 17 00:00:00 2001 From: Nikolay Perfilov Date: Wed, 15 Oct 2025 21:01:03 +0300 Subject: Do not move rows type in BulkUpsert if rows were not moved (#26912) --- .../sdk/cpp/src/client/table/impl/table_client.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp b/ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp index 9c8f6e8b2fb..f72f3f00ce7 100644 --- a/ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp +++ b/ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp @@ -1032,16 +1032,17 @@ TAsyncBulkUpsertResult TTableClient::TImpl::BulkUpsert(const std::string& table, request->set_table(TStringType{table}); - if (rows.GetType().Impl_.use_count() == 1) { - request->mutable_rows()->mutable_type()->Swap(&rows.GetType().GetProto()); - } else { - *request->mutable_rows()->mutable_type() = rows.GetType().GetProto(); - } - + auto* mutable_rows = request->mutable_rows(); if (rows.Impl_.use_count() == 1) { - request->mutable_rows()->mutable_value()->Swap(&rows.GetProto()); + mutable_rows->mutable_value()->Swap(&rows.GetProto()); + if (rows.GetType().Impl_.use_count() == 1) { + mutable_rows->mutable_type()->Swap(&rows.GetType().GetProto()); + } else { + *mutable_rows->mutable_type() = rows.GetType().GetProto(); + } } else { - *request->mutable_rows()->mutable_value() = rows.GetProto(); + *mutable_rows->mutable_value() = rows.GetProto(); + *mutable_rows->mutable_type() = rows.GetType().GetProto(); } auto promise = NewPromise(); -- cgit v1.3