From b38ff228674fc1cea47c6cb4a3237f3022e6aecc Mon Sep 17 00:00:00 2001 From: Semyon Yentsov Date: Mon, 28 Apr 2025 18:30:33 +0300 Subject: [PATCH] fix pk usage in writing v0 chunks --- .../blobs_action/transaction/tx_blobs_written.cpp | 5 +++-- .../tx/columnshard/engines/storage/granule/granule.cpp | 8 ++++---- ydb/core/tx/columnshard/engines/storage/granule/granule.h | 7 ++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_blobs_written.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_blobs_written.cpp index 5ea265943089..149775886a1d 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_blobs_written.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_blobs_written.cpp @@ -29,6 +29,7 @@ bool TTxBlobsWritingFinished::DoExecute(TTransactionContext& txc, const TActorCo } AFL_VERIFY(!!PackBehaviour); auto& granule = index.MutableGranuleVerified(Pack.GetPathId()); + const ui64 firstPKColumnId = Self->TablesManager.GetIndexInfo(*CommitSnapshot).GetPKFirstColumnId(); for (auto&& portion : Pack.MutablePortions()) { if (PackBehaviour == EOperationBehaviour::NoTxWrite) { static TAtomicCounter Counter = 0; @@ -39,9 +40,9 @@ bool TTxBlobsWritingFinished::DoExecute(TTransactionContext& txc, const TActorCo InsertWriteIds.emplace_back(portion.GetPortionInfoConstructor()->GetPortionConstructor().GetInsertWriteIdVerified()); portion.Finalize(Self, txc); if (PackBehaviour == EOperationBehaviour::NoTxWrite) { - granule.CommitImmediateOnExecute(txc, *CommitSnapshot, portion.GetPortionInfo()); + granule.CommitImmediateOnExecute(txc, *CommitSnapshot, portion.GetPortionInfo(), firstPKColumnId); } else { - granule.InsertPortionOnExecute(txc, portion.GetPortionInfo()); + granule.InsertPortionOnExecute(txc, portion.GetPortionInfo(), firstPKColumnId); } } diff --git a/ydb/core/tx/columnshard/engines/storage/granule/granule.cpp b/ydb/core/tx/columnshard/engines/storage/granule/granule.cpp index 64bae80ede1f..1e480aefa611 100644 --- a/ydb/core/tx/columnshard/engines/storage/granule/granule.cpp +++ b/ydb/core/tx/columnshard/engines/storage/granule/granule.cpp @@ -277,10 +277,10 @@ void TGranuleMeta::InsertPortionOnComplete(const TPortionDataAccessor& portion, DataAccessorsManager->AddPortion(portion); } -void TGranuleMeta::InsertPortionOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TPortionDataAccessor& portion) const { +void TGranuleMeta::InsertPortionOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TPortionDataAccessor& portion, const ui64 firstPKColumnId) const { AFL_VERIFY(!InsertedPortions.contains(portion.GetPortionInfo().GetInsertWriteIdVerified())); TDbWrapper wrapper(txc.DB, nullptr); - portion.SaveToDatabase(wrapper, 0, false); + portion.SaveToDatabase(wrapper, firstPKColumnId, false); } void TGranuleMeta::CommitPortionOnExecute( @@ -306,11 +306,11 @@ void TGranuleMeta::CommitPortionOnComplete(const TInsertWriteId insertWriteId, I } void TGranuleMeta::CommitImmediateOnExecute( - NTabletFlatExecutor::TTransactionContext& txc, const TSnapshot& snapshot, const TPortionDataAccessor& portion) const { + NTabletFlatExecutor::TTransactionContext& txc, const TSnapshot& snapshot, const TPortionDataAccessor& portion, const ui64 firstPKColumnId) const { AFL_VERIFY(!InsertedPortions.contains(portion.GetPortionInfo().GetInsertWriteIdVerified())); portion.MutablePortionInfo().SetCommitSnapshot(snapshot); TDbWrapper wrapper(txc.DB, nullptr); - portion.SaveToDatabase(wrapper, 0, false); + portion.SaveToDatabase(wrapper, firstPKColumnId, false); } void TGranuleMeta::CommitImmediateOnComplete(const std::shared_ptr /*portion*/, IColumnEngine& /*engine*/) { diff --git a/ydb/core/tx/columnshard/engines/storage/granule/granule.h b/ydb/core/tx/columnshard/engines/storage/granule/granule.h index 8e7811db6a66..c6c957e25bda 100644 --- a/ydb/core/tx/columnshard/engines/storage/granule/granule.h +++ b/ydb/core/tx/columnshard/engines/storage/granule/granule.h @@ -210,7 +210,8 @@ class TGranuleMeta: TNonCopyable { OnAfterChangePortion(innerPortion, nullptr); } - void InsertPortionOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TPortionDataAccessor& portion) const; + void InsertPortionOnExecute( + NTabletFlatExecutor::TTransactionContext& txc, const TPortionDataAccessor& portion, const ui64 firstPKColumnId) const; void InsertPortionOnComplete(const TPortionDataAccessor& portion, IColumnEngine& engine); void CommitPortionOnExecute( @@ -230,8 +231,8 @@ class TGranuleMeta: TNonCopyable { CommitPortionOnComplete(insertWriteId, engine); } - void CommitImmediateOnExecute( - NTabletFlatExecutor::TTransactionContext& txc, const TSnapshot& snapshot, const TPortionDataAccessor& portion) const; + void CommitImmediateOnExecute(NTabletFlatExecutor::TTransactionContext& txc, const TSnapshot& snapshot, const TPortionDataAccessor& portion, + const ui64 firstPKColumnId) const; void CommitImmediateOnComplete(const std::shared_ptr portion, IColumnEngine& engine); std::vector GetOptimizerTasksDescription() const {