Skip to content

Commit 487fcd6

Browse files
authored
Merge 79ee673 into ce94a36
2 parents ce94a36 + 79ee673 commit 487fcd6

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

ydb/core/tx/columnshard/engines/reader/abstract/constructor.cpp

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,31 @@ namespace NKikimr::NOlap::NReader {
88

99
NKikimr::TConclusionStatus IScannerConstructor::ParseProgram(const TVersionedIndex* vIndex, const NKikimrSchemeOp::EOlapProgramType programType,
1010
const TString& serializedProgram, TReadDescription& read, const NArrow::NSSA::IColumnResolver& columnResolver) const {
11-
std::set<TString> namesChecker;
12-
if (serializedProgram.empty()) {
13-
if (!read.ColumnIds.size()) {
14-
auto schema = vIndex->GetSchemaVerified(read.GetSnapshot());
15-
read.ColumnIds = std::vector<ui32>(schema->GetColumnIds().begin(), schema->GetColumnIds().end());
16-
}
17-
TProgramContainer container;
18-
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "overriden_columns")("ids", JoinSeq(",", read.ColumnIds));
19-
container.OverrideProcessingColumns(read.ColumnIds);
20-
read.SetProgram(std::move(container));
21-
return TConclusionStatus::Success();
22-
} else {
23-
TProgramContainer ssaProgram;
24-
auto statusInit = ssaProgram.Init(columnResolver, programType, serializedProgram);
25-
if (statusInit.IsFail()) {
26-
return TConclusionStatus::Fail(TStringBuilder() << "Can't parse SsaProgram: " << statusInit.GetErrorMessage());
27-
}
11+
try {
12+
std::set<TString> namesChecker;
13+
if (serializedProgram.empty()) {
14+
if (!read.ColumnIds.size()) {
15+
auto schema = vIndex->GetSchemaVerified(read.GetSnapshot());
16+
read.ColumnIds = std::vector<ui32>(schema->GetColumnIds().begin(), schema->GetColumnIds().end());
17+
}
18+
TProgramContainer container;
19+
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_SCAN)("event", "overriden_columns")("ids", JoinSeq(",", read.ColumnIds));
20+
container.OverrideProcessingColumns(read.ColumnIds);
21+
read.SetProgram(std::move(container));
22+
return TConclusionStatus::Success();
23+
} else {
24+
TProgramContainer ssaProgram;
25+
auto statusInit = ssaProgram.Init(columnResolver, programType, serializedProgram);
26+
if (statusInit.IsFail()) {
27+
return TConclusionStatus::Fail(TStringBuilder() << "Can't parse SsaProgram: " << statusInit.GetErrorMessage());
28+
}
2829

29-
read.SetProgram(std::move(ssaProgram));
30+
read.SetProgram(std::move(ssaProgram));
3031

31-
return TConclusionStatus::Success();
32+
return TConclusionStatus::Success();
33+
}
34+
} catch (...) {
35+
return TConclusionStatus::Fail(TStringBuilder() << "Can't parse program, exception thrown: " << CurrentExceptionMessage());
3236
}
3337
}
3438

0 commit comments

Comments
 (0)