diff options
| author | ivanmorozov333 <[email protected]> | 2024-11-25 12:27:39 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-11-25 12:27:39 +0300 |
| commit | afbc266232aa2f58d2c41dd93025b9094490b24b (patch) | |
| tree | 6c5bb69e8df7503a44de6fc99e5304bd15a5e37c | |
| parent | 71a7067d74978f3eba80566c1404a5b416b19228 (diff) | |
validate dangerouse construction (#11873)
| -rw-r--r-- | ydb/core/tx/columnshard/engines/scheme/indexes/abstract/program.cpp | 7 | ||||
| -rw-r--r-- | ydb/core/tx/program/program.h | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/program.cpp b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/program.cpp index 62ae9bd41a6..8b62f7890c3 100644 --- a/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/program.cpp +++ b/ydb/core/tx/columnshard/engines/scheme/indexes/abstract/program.cpp @@ -443,7 +443,12 @@ public: std::shared_ptr<TDataForIndexesCheckers> TDataForIndexesCheckers::Build(const TProgramContainer& program) { AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("program", program.DebugString()); - auto fStep = program.GetSteps().front(); + auto& steps = program.GetStepsVerified(); + if (!steps.size()) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "no_steps_in_program"); + return nullptr; + } + auto fStep = steps.front(); TNormalForm nForm; for (auto&& s : fStep->GetAssignes()) { if (!nForm.Add(s, program)) { diff --git a/ydb/core/tx/program/program.h b/ydb/core/tx/program/program.h index 3ab18eccc9d..41cd2a06db1 100644 --- a/ydb/core/tx/program/program.h +++ b/ydb/core/tx/program/program.h @@ -85,6 +85,11 @@ public: } } + const std::vector<std::shared_ptr<NSsa::TProgramStep>>& GetStepsVerified() const { + AFL_VERIFY(!!Program); + return Program->Steps; + } + template <class TDataContainer> inline arrow::Status ApplyProgram(std::shared_ptr<TDataContainer>& batch) const { if (Program) { |
