Skip to content

Commit 25f884a

Browse files
fix filter usage for partial reading (#11835)
1 parent 3541f4a commit 25f884a

File tree

6 files changed

+18
-1
lines changed

6 files changed

+18
-1
lines changed

ydb/core/kqp/ut/olap/indexes_ut.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) {
2222
csController->SetOverridePeriodicWakeupActivationPeriod(TDuration::Seconds(1));
2323
csController->SetOverrideLagForCompactionBeforeTierings(TDuration::Seconds(1));
2424
csController->SetOverrideReduceMemoryIntervalLimit(1LLU << 30);
25+
csController->SetOverrideMemoryLimitForPortionReading(1e+10);
2526

2627
TLocalHelper(kikimr).CreateTestOlapTable();
2728
auto tableClient = kikimr.GetTableClient();
@@ -322,6 +323,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) {
322323
void Execute() const {
323324
auto csController = NYDBTest::TControllers::RegisterCSControllerGuard<NOlap::TWaitCompactionController>();
324325
csController->SetOverrideReduceMemoryIntervalLimit(1LLU << 30);
326+
csController->SetOverrideMemoryLimitForPortionReading(1e+10);
325327
TLocalHelper(*Kikimr).CreateTestOlapTable();
326328
auto tableClient = Kikimr->GetTableClient();
327329

ydb/core/protos/config.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,6 +1698,7 @@ message TColumnShardConfig {
16981698
optional uint32 SmallPortionDetectSizeLimit = 24 [default = 1048576]; // 1 << 20
16991699
optional bool ColumnChunksV0Usage = 25 [default = true];
17001700
optional bool ColumnChunksV1Usage = 26 [default = true];
1701+
optional uint64 MemoryLimitScanPortion = 27 [default = 100000000];
17011702
}
17021703

17031704
message TSchemeShardConfig {

ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetched_data.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class TFetchedData {
3636
return;
3737
}
3838
AFL_VERIFY(!DataAdded);
39+
UseFilter = value;
3940
}
4041

4142
bool HasPortionAccessor() const {

ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/fetching.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,8 @@ TConclusion<bool> TPortionAccessorFetchingStep::DoExecuteInplace(
289289

290290
TConclusion<bool> TDetectInMem::DoExecuteInplace(const std::shared_ptr<IDataSource>& source, const TFetchingScriptCursor& /*step*/) const {
291291
if (Columns.GetColumnsCount()) {
292-
source->SetSourceInMemory(source->GetColumnRawBytes(Columns.GetColumnIds()) < 1e+8);
292+
source->SetSourceInMemory(
293+
source->GetColumnRawBytes(Columns.GetColumnIds()) < NYDBTest::TControllers::GetColumnShardController()->GetMemoryLimitScanPortion());
293294
} else {
294295
source->SetSourceInMemory(true);
295296
}

ydb/core/tx/columnshard/hooks/abstract/abstract.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ class ICSController {
130130
virtual TDuration DoGetLagForCompactionBeforeTierings(const TDuration defaultValue) const {
131131
return defaultValue;
132132
}
133+
virtual ui64 DoGetMemoryLimitScanPortion(const ui64 defaultValue) const {
134+
return defaultValue;
135+
}
133136

134137
private:
135138
inline static const NKikimrConfig::TColumnShardConfig DefaultConfig = {};
@@ -146,6 +149,9 @@ class ICSController {
146149
const std::set<NOlap::TSnapshot>& /*snapshotsToSave*/, const std::set<NOlap::TSnapshot>& /*snapshotsToRemove*/) {
147150
}
148151

152+
ui64 GetMemoryLimitScanPortion() const {
153+
return DoGetMemoryLimitScanPortion(GetConfig().GetMemoryLimitScanPortion());
154+
}
149155
virtual bool CheckPortionForEvict(const NOlap::TPortionInfo& portion) const;
150156

151157
TDuration GetPingCheckPeriod() const {

ydb/core/tx/columnshard/hooks/testing/controller.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class TController: public TReadOnlyController {
2222
YDB_ACCESSOR_DEF(std::optional<TDuration>, OverrideCompactionActualizationLag);
2323
YDB_ACCESSOR_DEF(std::optional<TDuration>, OverrideTasksActualizationLag);
2424
YDB_ACCESSOR_DEF(std::optional<TDuration>, OverrideReadTimeoutClean);
25+
YDB_ACCESSOR(std::optional<ui64>, OverrideMemoryLimitForPortionReading, 100);
2526
EOptimizerCompactionWeightControl CompactionControl = EOptimizerCompactionWeightControl::Force;
2627

2728
YDB_ACCESSOR(std::optional<ui64>, OverrideReduceMemoryIntervalLimit, 1024);
@@ -130,6 +131,11 @@ class TController: public TReadOnlyController {
130131
THashSet<TString> SharingIds;
131132
protected:
132133
virtual ::NKikimr::NColumnShard::TBlobPutResult::TPtr OverrideBlobPutResultOnCompaction(const ::NKikimr::NColumnShard::TBlobPutResult::TPtr original, const NOlap::TWriteActionsCollection& actions) const override;
134+
135+
virtual ui64 DoGetMemoryLimitScanPortion(const ui64 defaultValue) const override {
136+
return OverrideMemoryLimitForPortionReading.value_or(defaultValue);
137+
}
138+
133139
virtual TDuration DoGetLagForCompactionBeforeTierings(const TDuration def) const override {
134140
return OverrideLagForCompactionBeforeTierings.value_or(def);
135141
}

0 commit comments

Comments
 (0)