summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Perfilov <[email protected]>2025-10-15 21:01:03 +0300
committerGitHub <[email protected]>2025-10-15 18:01:03 +0000
commit78aa6fa75eba124b91b200bfe76c67e94ee968a4 (patch)
tree5aa2edd7f064c7b313555e7eb1b143bee17d88eb
parent37977bbfea8ec787e661c9765aab16c1630519eb (diff)
Do not move rows type in BulkUpsert if rows were not moved (#26912)
-rw-r--r--ydb/public/sdk/cpp/src/client/table/impl/table_client.cpp17
1 files 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<TBulkUpsertResult>();