@@ -254,7 +254,8 @@ class TYqlPlugin
254
254
TString impersonationUser,
255
255
TString queryText,
256
256
TYsonString settings,
257
- std::vector<TQueryFile> files)
257
+ std::vector<TQueryFile> files,
258
+ int executeMode)
258
259
{
259
260
auto program = ProgramFactory_->Create (" -memory-" , queryText);
260
261
{
@@ -313,8 +314,45 @@ class TYqlPlugin
313
314
ActiveQueriesProgress_[queryId].Compiled = true ;
314
315
}
315
316
317
+ NYql::NEmbedded::EExecuteMode executeModeEnum;
318
+
319
+ // Transforming NYT::NYqlClient::EExecuteMode (yt/yt/ytlib/yql_client/public.h)
320
+ // to NYql::EExecuteMode
321
+ switch (executeMode) {
322
+ case 0 :
323
+ executeModeEnum = NYql::NEmbedded::EExecuteMode::Validate;
324
+ break ;
325
+ case 1 :
326
+ executeModeEnum = NYql::NEmbedded::EExecuteMode::Optimize;
327
+ break ;
328
+ case 2 :
329
+ executeModeEnum = NYql::NEmbedded::EExecuteMode::Run;
330
+ break ;
331
+ case 3 :
332
+ executeModeEnum = NYql::NEmbedded::EExecuteMode::Lineage;
333
+ break ;
334
+ default :
335
+ return TQueryResult{
336
+ .YsonError = MessageToYtErrorYson (Format (" Unknown execution mode: %v" , executeMode)),
337
+ };
338
+ }
339
+
316
340
NYql::TProgram::TStatus status = NYql::TProgram::TStatus::Error;
317
- status = program->RunWithConfig (impersonationUser, pipelineConfigurator);
341
+ switch (executeModeEnum) {
342
+ case NYql::NEmbedded::EExecuteMode::Run:
343
+ status = program->RunWithConfig (impersonationUser, pipelineConfigurator);
344
+ break ;
345
+ case NYql::NEmbedded::EExecuteMode::Optimize:
346
+ status = program->OptimizeWithConfig (impersonationUser, pipelineConfigurator);
347
+ break ;
348
+ case NYql::NEmbedded::EExecuteMode::Validate:
349
+ status = program->Validate (impersonationUser, nullptr );
350
+ break ;
351
+ case NYql::NEmbedded::EExecuteMode::Lineage:
352
+ return TQueryResult{
353
+ .YsonError = MessageToYtErrorYson (" Lineage execution mode is not supported" ),
354
+ };
355
+ }
318
356
319
357
if (status == NYql::TProgram::TStatus::Error) {
320
358
return TQueryResult{
@@ -354,10 +392,11 @@ class TYqlPlugin
354
392
TString impersonationUser,
355
393
TString queryText,
356
394
TYsonString settings,
357
- std::vector<TQueryFile> files) noexcept override
395
+ std::vector<TQueryFile> files,
396
+ int executeMode) noexcept override
358
397
{
359
398
try {
360
- return GuardedRun (queryId, impersonationUser, queryText, settings, files);
399
+ return GuardedRun (queryId, impersonationUser, queryText, settings, files, executeMode );
361
400
} catch (const std::exception & ex) {
362
401
{
363
402
auto guard = WriterGuard (ProgressSpinLock);
0 commit comments