@@ -8,27 +8,31 @@ namespace NKikimr::NOlap::NReader {
8
8
9
9
NKikimr::TConclusionStatus IScannerConstructor::ParseProgram (const TVersionedIndex* vIndex, const NKikimrSchemeOp::EOlapProgramType programType,
10
10
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
+ }
28
29
29
- read.SetProgram (std::move (ssaProgram));
30
+ read.SetProgram (std::move (ssaProgram));
30
31
31
- return TConclusionStatus::Success ();
32
+ return TConclusionStatus::Success ();
33
+ }
34
+ } catch (...) {
35
+ return TConclusionStatus::Fail (TStringBuilder () << " Can't parse program, exception thrown: " << CurrentExceptionMessage ());
32
36
}
33
37
}
34
38
0 commit comments