Skip to content

Commit 08cf2e8

Browse files
Merge c8913b7 into 05ec5d8
2 parents 05ec5d8 + c8913b7 commit 08cf2e8

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,9 +894,11 @@ EFetchResult ProcessSpilledData(TComputationContext&, NUdf::TUnboxedValue*const*
894894

895895
LeftPacker->TuplesBatchPacked = 0;
896896
LeftPacker->TablePtr->ClearBucket(NextBucketToJoin); // Clear content of returned bucket
897+
LeftPacker->TablePtr->ShrinkBucket(NextBucketToJoin);
897898

898899
RightPacker->TuplesBatchPacked = 0;
899900
RightPacker->TablePtr->ClearBucket(NextBucketToJoin); // Clear content of returned bucket
901+
RightPacker->TablePtr->ShrinkBucket(NextBucketToJoin);
900902

901903
JoinedTablePtr->Clear();
902904
JoinedTablePtr->ResetIterator();

ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,18 @@ void TTable::ClearBucket(ui64 bucket) {
11281128
tbs.StringValuesTotalSize = 0;
11291129
}
11301130

1131+
void TTable::ShrinkBucket(ui64 bucket) {
1132+
TTableBucket & tb = TableBuckets[bucket];
1133+
tb.KeyIntVals.shrink_to_fit();
1134+
tb.DataIntVals.shrink_to_fit();
1135+
tb.StringsOffsets.shrink_to_fit();
1136+
tb.StringsValues.shrink_to_fit();
1137+
tb.InterfaceValues.shrink_to_fit();
1138+
tb.InterfaceOffsets.shrink_to_fit();
1139+
tb.JoinIds.shrink_to_fit();
1140+
tb.RightIds.shrink_to_fit();
1141+
}
1142+
11311143
void TTable::InitializeBucketSpillers(ISpiller::TPtr spiller) {
11321144
for (size_t i = 0; i < NumberOfBuckets; ++i) {
11331145
TableBucketsSpillers.emplace_back(spiller, 5_MB);

ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,9 @@ class TTable {
320320
// Clears all the data related to a single bucket
321321
void ClearBucket(ui64 bucket);
322322

323+
// Forces bucket to release the space used for underlying containers.
324+
void ShrinkBucket(ui64 bucket);
325+
323326
// Clears table content
324327
void Clear();
325328

0 commit comments

Comments
 (0)