Skip to content

Commit 11db962

Browse files
authored
[ydb-cli] saving plan & ast even on errors (#7874)
1 parent 1d4f8fb commit 11db962

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

ydb/public/lib/ydb_cli/commands/benchmark_utils.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,6 @@ class IQueryResultScanner {
162162
bool Scan(TIterator& it) {
163163
for (;;) {
164164
auto streamPart = it.ReadNext().GetValueSync();
165-
if (!streamPart.IsSuccess()) {
166-
if (!streamPart.EOS()) {
167-
OnError(streamPart.GetIssues().ToString());
168-
return false;
169-
}
170-
break;
171-
}
172165

173166
if constexpr (std::is_same_v<TIterator, NTable::TScanQueryPartIterator>) {
174167
if (streamPart.HasQueryStats()) {
@@ -185,6 +178,14 @@ class IQueryResultScanner {
185178
}
186179
}
187180

181+
if (!streamPart.IsSuccess()) {
182+
if (!streamPart.EOS()) {
183+
OnError(streamPart.GetIssues().ToString());
184+
return false;
185+
}
186+
break;
187+
}
188+
188189
if (streamPart.HasResultSet()) {
189190
auto result = streamPart.ExtractResultSet();
190191
auto columns = result.GetColumnsMeta();
@@ -302,7 +303,8 @@ TQueryBenchmarkResult Execute(const TString& query, NTable::TTableClient& client
302303
composite.AddScanner(scannerYson);
303304
composite.AddScanner(scannerCSV);
304305
if (!composite.Scan(it)) {
305-
return TQueryBenchmarkResult::Error(composite.GetErrorInfo());
306+
return TQueryBenchmarkResult::Error(
307+
composite.GetErrorInfo(), composite.GetQueryPlan(), composite.GetPlanAst());
306308
} else {
307309
return TQueryBenchmarkResult::Result(
308310
scannerYson->GetResult(),
@@ -329,7 +331,8 @@ TQueryBenchmarkResult Execute(const TString& query, NQuery::TQueryClient& client
329331
composite.AddScanner(scannerYson);
330332
composite.AddScanner(scannerCSV);
331333
if (!composite.Scan(it)) {
332-
return TQueryBenchmarkResult::Error(composite.GetErrorInfo());
334+
return TQueryBenchmarkResult::Error(
335+
composite.GetErrorInfo(), composite.GetQueryPlan(), composite.GetPlanAst());
333336
} else {
334337
return TQueryBenchmarkResult::Result(
335338
scannerYson->GetResult(),

ydb/public/lib/ydb_cli/commands/benchmark_utils.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,11 @@ class TQueryBenchmarkResult {
7474
result.PlanAst = planAst;
7575
return result;
7676
}
77-
static TQueryBenchmarkResult Error(const TString& error) {
77+
static TQueryBenchmarkResult Error(const TString& error, const TString& queryPlan, const TString& planAst) {
7878
TQueryBenchmarkResult result;
7979
result.ErrorInfo = error;
80+
result.QueryPlan = queryPlan;
81+
result.PlanAst = planAst;
8082
return result;
8183
}
8284
operator bool() const {

ydb/public/lib/ydb_cli/commands/ydb_benchmark.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace NYdb::NConsoleClient {
1010
TWorkloadCommandBenchmark::TWorkloadCommandBenchmark(NYdbWorkload::TWorkloadParams& params, const NYdbWorkload::IWorkloadQueryGenerator::TWorkloadType& workload)
1111
: TWorkloadCommandBase(workload.CommandName, params, NYdbWorkload::TWorkloadParams::ECommandType::Run, workload.Description, workload.Type)
1212
{
13-
13+
1414
}
1515

1616

@@ -333,11 +333,11 @@ bool TWorkloadCommandBenchmark::RunBench(TClient& client, NYdbWorkload::IWorkloa
333333
bool planSaved = false;
334334
for (ui32 i = 0; i < IterationsCount; ++i) {
335335
auto t1 = TInstant::Now();
336-
TQueryBenchmarkResult res = TQueryBenchmarkResult::Error("undefined");
336+
TQueryBenchmarkResult res = TQueryBenchmarkResult::Error("undefined", "undefined", "undefined");
337337
try {
338338
res = Execute(query, client);
339339
} catch (...) {
340-
res = TQueryBenchmarkResult::Error(CurrentExceptionMessage());
340+
res = TQueryBenchmarkResult::Error(CurrentExceptionMessage(), "", "");
341341
}
342342
auto duration = TInstant::Now() - t1;
343343

0 commit comments

Comments
 (0)