Skip to content

Commit 7498e0f

Browse files
Merge aa32743 into 2dbf832
2 parents 2dbf832 + aa32743 commit 7498e0f

31 files changed

+685
-216
lines changed

ydb/core/tx/columnshard/columnshard_schema.h

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -901,57 +901,94 @@ struct Schema : NIceDb::Schema {
901901
}
902902

903903
namespace NKikimr::NOlap {
904+
class TPortionLoadContext {
905+
private:
906+
YDB_READONLY(ui64, PathId, 0);
907+
YDB_READONLY(ui64, PortionId, 0);
908+
YDB_READONLY_DEF(NKikimrTxColumnShard::TIndexPortionMeta, MetaProto);
909+
910+
public:
911+
template <class TSource>
912+
TPortionLoadContext(const TSource& rowset) {
913+
PathId = rowset.template GetValue<NColumnShard::Schema::IndexPortions::PathId>();
914+
PortionId = rowset.template GetValue<NColumnShard::Schema::IndexPortions::PortionId>();
915+
const TString metadata = rowset.template GetValue<NColumnShard::Schema::IndexPortions::Metadata>();
916+
AFL_VERIFY(MetaProto.ParseFromArray(metadata.data(), metadata.size()))("event", "cannot parse metadata as protobuf");
917+
}
918+
};
919+
904920
class TColumnChunkLoadContext {
905921
private:
906922
YDB_READONLY_DEF(TBlobRange, BlobRange);
907923
TChunkAddress Address;
924+
YDB_READONLY(ui64, PathId, 0);
925+
YDB_READONLY(ui64, PortionId, 0);
908926
YDB_READONLY_DEF(NKikimrTxColumnShard::TIndexColumnMeta, MetaProto);
927+
YDB_READONLY(TSnapshot, RemoveSnapshot, TSnapshot::Zero());
928+
YDB_READONLY(TSnapshot, MinSnapshotDeprecated, TSnapshot::Zero());
929+
909930
public:
910931
const TChunkAddress& GetAddress() const {
911932
return Address;
912933
}
913934

914-
TColumnChunkLoadContext(const TChunkAddress& address, const TBlobRange& bRange, const NKikimrTxColumnShard::TIndexColumnMeta& metaProto)
935+
TColumnChunkLoadContext(const ui64 pathId, const ui64 portionId, const TChunkAddress& address, const TBlobRange& bRange,
936+
const NKikimrTxColumnShard::TIndexColumnMeta& metaProto)
915937
: BlobRange(bRange)
916938
, Address(address)
917-
, MetaProto(metaProto)
918-
{
919-
939+
, PathId(pathId)
940+
, PortionId(portionId)
941+
, MetaProto(metaProto) {
920942
}
921943

922944
template <class TSource>
923945
TColumnChunkLoadContext(const TSource& rowset, const IBlobGroupSelector* dsGroupSelector)
924-
: Address(rowset.template GetValue<NColumnShard::Schema::IndexColumns::ColumnIdx>(), rowset.template GetValue<NColumnShard::Schema::IndexColumns::Chunk>()) {
946+
: Address(rowset.template GetValue<NColumnShard::Schema::IndexColumns::ColumnIdx>(),
947+
rowset.template GetValue<NColumnShard::Schema::IndexColumns::Chunk>())
948+
, RemoveSnapshot(rowset.template GetValue<NColumnShard::Schema::IndexColumns::XPlanStep>(),
949+
rowset.template GetValue<NColumnShard::Schema::IndexColumns::XTxId>())
950+
, MinSnapshotDeprecated(rowset.template GetValue<NColumnShard::Schema::IndexColumns::PlanStep>(),
951+
rowset.template GetValue<NColumnShard::Schema::IndexColumns::TxId>())
952+
{
925953
AFL_VERIFY(Address.GetColumnId())("event", "incorrect address")("address", Address.DebugString());
926954
TString strBlobId = rowset.template GetValue<NColumnShard::Schema::IndexColumns::Blob>();
927955
Y_ABORT_UNLESS(strBlobId.size() == sizeof(TLogoBlobID), "Size %" PRISZT " doesn't match TLogoBlobID", strBlobId.size());
928956
TLogoBlobID logoBlobId((const ui64*)strBlobId.data());
929957
BlobRange.BlobId = NOlap::TUnifiedBlobId(dsGroupSelector->GetGroup(logoBlobId), logoBlobId);
930958
BlobRange.Offset = rowset.template GetValue<NColumnShard::Schema::IndexColumns::Offset>();
931959
BlobRange.Size = rowset.template GetValue<NColumnShard::Schema::IndexColumns::Size>();
960+
PathId = rowset.template GetValue<NColumnShard::Schema::IndexColumns::PathId>();
961+
PortionId = rowset.template GetValue<NColumnShard::Schema::IndexColumns::Portion>();
932962
AFL_VERIFY(BlobRange.BlobId.IsValid() && BlobRange.Size)("event", "incorrect blob")("blob", BlobRange.ToString());
933963

934964
const TString metadata = rowset.template GetValue<NColumnShard::Schema::IndexColumns::Metadata>();
935965
AFL_VERIFY(MetaProto.ParseFromArray(metadata.data(), metadata.size()))("event", "cannot parse metadata as protobuf");
936966
}
937-
938-
const NKikimrTxColumnShard::TIndexPortionMeta* GetPortionMeta() const {
939-
if (MetaProto.HasPortionMeta()) {
940-
return &MetaProto.GetPortionMeta();
941-
} else {
942-
return nullptr;
943-
}
944-
}
945967
};
946968

947969
class TIndexChunkLoadContext {
948970
private:
949971
YDB_READONLY_DEF(std::optional<TBlobRange>, BlobRange);
950972
YDB_READONLY_DEF(std::optional<TString>, BlobData);
973+
YDB_READONLY(ui64, PathId, 0);
974+
YDB_READONLY(ui64, PortionId, 0);
951975
TChunkAddress Address;
952976
const ui32 RecordsCount;
953977
const ui32 RawBytes;
954978
public:
979+
ui32 GetRawBytes() const {
980+
return RawBytes;
981+
}
982+
983+
ui32 GetDataSize() const {
984+
if (BlobRange) {
985+
return BlobRange->GetSize();
986+
} else {
987+
AFL_VERIFY(!!BlobData);
988+
return BlobData->size();
989+
}
990+
}
991+
955992
TIndexChunk BuildIndexChunk(const TBlobRangeLink16::TLinkId blobLinkId) const {
956993
AFL_VERIFY(BlobRange);
957994
return TIndexChunk(Address.GetColumnId(), Address.GetChunkIdx(), RecordsCount, RawBytes, BlobRange->BuildLink(blobLinkId));
@@ -964,7 +1001,9 @@ class TIndexChunkLoadContext {
9641001

9651002
template <class TSource>
9661003
TIndexChunkLoadContext(const TSource& rowset, const IBlobGroupSelector* dsGroupSelector)
967-
: Address(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::IndexId>(), rowset.template GetValue<NColumnShard::Schema::IndexIndexes::ChunkIdx>())
1004+
: PathId(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::PathId>())
1005+
, PortionId(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::PortionId>())
1006+
, Address(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::IndexId>(), rowset.template GetValue<NColumnShard::Schema::IndexIndexes::ChunkIdx>())
9681007
, RecordsCount(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::RecordsCount>())
9691008
, RawBytes(rowset.template GetValue<NColumnShard::Schema::IndexIndexes::RawBytes>())
9701009
{

ydb/core/tx/columnshard/common/blob.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,14 @@ struct TBlobRange {
189189
ui32 Offset;
190190
ui32 Size;
191191

192+
ui32 GetSize() const {
193+
return Size;
194+
}
195+
196+
ui32 GetOffset() const {
197+
return Offset;
198+
}
199+
192200
TString GetData(const TString& blobData) const;
193201

194202
bool operator<(const TBlobRange& br) const {

ydb/core/tx/columnshard/data_sharing/destination/session/destination.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ NKikimr::TConclusionStatus TDestinationSession::DataReceived(
2020
AFL_VERIFY(it != PathIds.end())("path_id_undefined", i.first);
2121
for (auto&& portion : i.second.DetachPortions()) {
2222
portion.MutablePortionInfo().SetPathId(it->second);
23-
index.AppendPortion(portion.GetPortionInfo());
23+
index.AppendPortion(portion.MutablePortionInfoPtr());
2424
}
2525
}
2626
return TConclusionStatus::Success();

ydb/core/tx/columnshard/engines/changes/with_appended.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void TChangesWithAppend::DoWriteIndexOnComplete(NColumnShard::TColumnShard* self
111111
context.EngineLogs.AddCleanupPortion(i);
112112
}
113113
for (auto& portionBuilder : AppendedPortions) {
114-
context.EngineLogs.AppendPortion(portionBuilder.GetPortionResult().GetPortionInfo());
114+
context.EngineLogs.AppendPortion(portionBuilder.GetPortionResult().MutablePortionInfoPtr());
115115
}
116116
}
117117
}

0 commit comments

Comments
 (0)