@@ -376,6 +376,176 @@ impl Statement {
376376 _ => format ! ( "{}" , self ) ,
377377 }
378378 }
379+
380+ pub fn allowed_in_multi_statement ( & self ) -> bool {
381+ match self {
382+ Statement :: Query ( ..)
383+ | Statement :: Explain { .. }
384+ | Statement :: ExplainAnalyze { .. }
385+ | Statement :: CopyIntoTable ( ..)
386+ | Statement :: CopyIntoLocation ( ..)
387+ | Statement :: Call ( ..)
388+ | Statement :: ShowSettings { .. }
389+ | Statement :: ShowProcessList { .. }
390+ | Statement :: ShowMetrics { .. }
391+ | Statement :: ShowEngines { .. }
392+ | Statement :: ShowFunctions { .. }
393+ | Statement :: ShowUserFunctions { .. }
394+ | Statement :: ShowTableFunctions { .. }
395+ | Statement :: ShowIndexes { .. }
396+ | Statement :: ShowLocks ( ..)
397+ | Statement :: SetPriority { .. }
398+ | Statement :: System ( ..)
399+ | Statement :: KillStmt { .. }
400+ | Statement :: SetStmt { .. }
401+ | Statement :: UnSetStmt { .. }
402+ | Statement :: ShowVariables { .. }
403+ | Statement :: SetRole { .. }
404+ | Statement :: SetSecondaryRoles { .. }
405+ | Statement :: Insert ( ..)
406+ | Statement :: InsertMultiTable ( ..)
407+ | Statement :: Replace ( ..)
408+ | Statement :: MergeInto ( ..)
409+ | Statement :: Delete ( ..)
410+ | Statement :: Update ( ..)
411+ | Statement :: ShowCatalogs ( ..)
412+ | Statement :: ShowCreateCatalog ( ..)
413+ | Statement :: ShowDatabases ( ..)
414+ | Statement :: ShowDropDatabases ( ..)
415+ | Statement :: ShowCreateDatabase ( ..)
416+ | Statement :: UseDatabase { .. }
417+ | Statement :: ShowTables ( ..)
418+ | Statement :: ShowCreateTable ( ..)
419+ | Statement :: DescribeTable ( ..)
420+ | Statement :: ShowTablesStatus ( ..)
421+ | Statement :: ShowDropTables ( ..)
422+ | Statement :: OptimizeTable ( ..)
423+ | Statement :: VacuumTable ( ..)
424+ | Statement :: VacuumDropTable ( ..)
425+ | Statement :: VacuumTemporaryFiles ( ..)
426+ | Statement :: AnalyzeTable ( ..)
427+ | Statement :: ExistsTable ( ..)
428+ | Statement :: ShowCreateDictionary ( ..)
429+ | Statement :: ShowDictionaries ( ..)
430+ | Statement :: ShowColumns ( ..)
431+ | Statement :: ShowViews ( ..)
432+ | Statement :: DescribeView ( ..)
433+ | Statement :: ShowStreams ( ..)
434+ | Statement :: DescribeStream ( ..)
435+ | Statement :: RefreshIndex ( ..)
436+ | Statement :: RefreshInvertedIndex ( ..)
437+ | Statement :: RefreshVirtualColumn ( ..)
438+ | Statement :: ShowVirtualColumns ( ..)
439+ | Statement :: ShowUsers
440+ | Statement :: DescribeUser { .. }
441+ | Statement :: ShowRoles
442+ | Statement :: ShowGrants { .. }
443+ | Statement :: ShowObjectPrivileges ( ..)
444+ | Statement :: ShowStages
445+ | Statement :: DescribeStage { .. }
446+ | Statement :: RemoveStage { .. }
447+ | Statement :: ListStage { .. }
448+ | Statement :: DescribeConnection ( ..)
449+ | Statement :: ShowConnections ( ..)
450+ | Statement :: ShowFileFormats
451+ | Statement :: Presign ( ..)
452+ | Statement :: DescDatamaskPolicy ( ..)
453+ | Statement :: DescNetworkPolicy ( ..)
454+ | Statement :: ShowNetworkPolicies
455+ | Statement :: DescPasswordPolicy ( ..)
456+ | Statement :: ShowPasswordPolicies { .. }
457+ | Statement :: ExecuteTask ( ..)
458+ | Statement :: DescribeTask ( ..)
459+ | Statement :: ShowTasks ( ..)
460+ | Statement :: DescribePipe ( ..)
461+ | Statement :: Begin
462+ | Statement :: Commit
463+ | Statement :: Abort
464+ | Statement :: DescribeNotification ( ..)
465+ | Statement :: ExecuteImmediate ( ..)
466+ | Statement :: ShowProcedures { .. }
467+ | Statement :: DescProcedure ( ..)
468+ | Statement :: CallProcedure ( ..) => true ,
469+
470+ Statement :: CreateDatabase ( ..)
471+ | Statement :: CreateTable ( ..)
472+ | Statement :: CreateView ( ..)
473+ | Statement :: CreateIndex ( ..)
474+ | Statement :: CreateStage ( ..)
475+ | Statement :: CreateSequence ( ..)
476+ | Statement :: CreateDictionary ( ..)
477+ | Statement :: CreateConnection ( ..)
478+ | Statement :: CreatePipe ( ..)
479+ | Statement :: AlterTable ( ..)
480+ | Statement :: AlterView ( ..)
481+ | Statement :: AlterUser ( ..)
482+ | Statement :: AlterDatabase ( ..)
483+ | Statement :: DropDatabase ( ..)
484+ | Statement :: DropTable ( ..)
485+ | Statement :: DropView ( ..)
486+ | Statement :: DropIndex ( ..)
487+ | Statement :: DropSequence ( ..)
488+ | Statement :: DropDictionary ( ..)
489+ | Statement :: TruncateTable ( ..)
490+ | Statement :: AttachTable ( ..)
491+ | Statement :: RenameTable ( ..)
492+ | Statement :: CreateCatalog ( ..)
493+ | Statement :: DropCatalog ( ..)
494+ | Statement :: UndropDatabase ( ..)
495+ | Statement :: UndropTable ( ..)
496+ | Statement :: RenameDictionary ( ..)
497+ | Statement :: CreateStream ( ..)
498+ | Statement :: DropStream ( ..)
499+ | Statement :: CreateInvertedIndex ( ..)
500+ | Statement :: DropInvertedIndex ( ..)
501+ | Statement :: CreateVirtualColumn ( ..)
502+ | Statement :: AlterVirtualColumn ( ..)
503+ | Statement :: DropVirtualColumn ( ..)
504+ | Statement :: CreateUser ( ..)
505+ | Statement :: DropUser { .. }
506+ | Statement :: CreateRole { .. }
507+ | Statement :: DropRole { .. }
508+ | Statement :: Grant ( ..)
509+ | Statement :: Revoke ( ..)
510+ | Statement :: CreateUDF ( ..)
511+ | Statement :: DropUDF { .. }
512+ | Statement :: AlterUDF ( ..)
513+ | Statement :: DropStage { .. }
514+ | Statement :: DropConnection ( ..)
515+ | Statement :: CreateFileFormat { .. }
516+ | Statement :: DropFileFormat { .. }
517+ | Statement :: CreateDatamaskPolicy ( ..)
518+ | Statement :: DropDatamaskPolicy ( ..)
519+ | Statement :: CreateNetworkPolicy ( ..)
520+ | Statement :: AlterNetworkPolicy ( ..)
521+ | Statement :: DropNetworkPolicy ( ..)
522+ | Statement :: CreatePasswordPolicy ( ..)
523+ | Statement :: AlterPasswordPolicy ( ..)
524+ | Statement :: DropPasswordPolicy ( ..)
525+ | Statement :: CreateTask ( ..)
526+ | Statement :: AlterTask ( ..)
527+ | Statement :: DropTask ( ..)
528+ | Statement :: CreateDynamicTable ( ..)
529+ | Statement :: DropPipe ( ..)
530+ | Statement :: AlterPipe ( ..)
531+ | Statement :: CreateNotification ( ..)
532+ | Statement :: AlterNotification ( ..)
533+ | Statement :: DropNotification ( ..)
534+ | Statement :: CreateProcedure ( ..)
535+ | Statement :: DropProcedure ( ..) => false ,
536+
537+ Statement :: StatementWithSettings { stmt, settings : _ } => {
538+ stmt. allowed_in_multi_statement ( )
539+ }
540+ }
541+ }
542+
543+ pub fn is_transaction_command ( & self ) -> bool {
544+ matches ! (
545+ self ,
546+ Statement :: Commit | Statement :: Abort | Statement :: Begin
547+ )
548+ }
379549}
380550
381551impl Display for Statement {
0 commit comments