in fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java [166:455]
public static void execute(Env env, DdlStmt ddlStmt) throws Exception {
checkDdlStmtSupported(ddlStmt);
if (ddlStmt instanceof CreateDbStmt) {
env.createDb((CreateDbStmt) ddlStmt);
} else if (ddlStmt instanceof DropDbStmt) {
env.dropDb((DropDbStmt) ddlStmt);
} else if (ddlStmt instanceof CreateFunctionStmt) {
env.createFunction((CreateFunctionStmt) ddlStmt);
} else if (ddlStmt instanceof DropFunctionStmt) {
env.dropFunction((DropFunctionStmt) ddlStmt);
} else if (ddlStmt instanceof CreateEncryptKeyStmt) {
EncryptKeyHelper.createEncryptKey((CreateEncryptKeyStmt) ddlStmt);
} else if (ddlStmt instanceof DropEncryptKeyStmt) {
EncryptKeyHelper.dropEncryptKey((DropEncryptKeyStmt) ddlStmt);
} else if (ddlStmt instanceof CreateTableStmt) {
env.createTable((CreateTableStmt) ddlStmt);
} else if (ddlStmt instanceof CreateTableLikeStmt) {
env.createTableLike((CreateTableLikeStmt) ddlStmt);
} else if (ddlStmt instanceof CreateTableAsSelectStmt) {
env.createTableAsSelect((CreateTableAsSelectStmt) ddlStmt);
} else if (ddlStmt instanceof DropTableStmt) {
env.dropTable((DropTableStmt) ddlStmt);
} else if (ddlStmt instanceof CreateMaterializedViewStmt) {
env.createMaterializedView((CreateMaterializedViewStmt) ddlStmt);
} else if (ddlStmt instanceof AlterTableStmt) {
env.alterTable((AlterTableStmt) ddlStmt);
} else if (ddlStmt instanceof AlterColumnStatsStmt) {
StatisticsRepository.alterColumnStatistics((AlterColumnStatsStmt) ddlStmt);
} else if (ddlStmt instanceof AlterViewStmt) {
env.alterView((AlterViewStmt) ddlStmt);
} else if (ddlStmt instanceof CancelAlterTableStmt) {
env.cancelAlter((CancelAlterTableStmt) ddlStmt);
} else if (ddlStmt instanceof CancelExportStmt) {
env.getExportMgr().cancelExportJob((CancelExportStmt) ddlStmt);
} else if (ddlStmt instanceof CancelLoadStmt) {
CancelLoadStmt cs = (CancelLoadStmt) ddlStmt;
// cancel all
try {
env.getJobManager().cancelLoadJob(cs);
} catch (JobException e) {
env.getLoadManager().cancelLoadJob(cs);
}
} else if (ddlStmt instanceof CreateRoutineLoadStmt) {
env.getRoutineLoadManager().createRoutineLoadJob((CreateRoutineLoadStmt) ddlStmt);
} else if (ddlStmt instanceof PauseRoutineLoadStmt) {
env.getRoutineLoadManager().pauseRoutineLoadJob((PauseRoutineLoadStmt) ddlStmt);
} else if (ddlStmt instanceof ResumeRoutineLoadStmt) {
env.getRoutineLoadManager().resumeRoutineLoadJob((ResumeRoutineLoadStmt) ddlStmt);
} else if (ddlStmt instanceof StopRoutineLoadStmt) {
env.getRoutineLoadManager().stopRoutineLoadJob((StopRoutineLoadStmt) ddlStmt);
} else if (ddlStmt instanceof AlterRoutineLoadStmt) {
env.getRoutineLoadManager().alterRoutineLoadJob((AlterRoutineLoadStmt) ddlStmt);
} else if (ddlStmt instanceof CreateJobStmt) {
try {
env.getJobManager().registerJob(((CreateJobStmt) ddlStmt).getJobInstance());
} catch (Exception e) {
throw new DdlException(e.getMessage());
}
} else if (ddlStmt instanceof AlterJobStatusStmt) {
AlterJobStatusStmt stmt = (AlterJobStatusStmt) ddlStmt;
try {
// drop job
if (stmt.isDrop()) {
env.getJobManager().unregisterJob(stmt.getJobName(), stmt.isIfExists());
return;
}
// alter job status
env.getJobManager().alterJobStatus(stmt.getJobName(), stmt.getJobStatus());
} catch (Exception e) {
throw new DdlException(e.getMessage());
}
} else if (ddlStmt instanceof CancelJobTaskStmt) {
CancelJobTaskStmt stmt = (CancelJobTaskStmt) ddlStmt;
try {
env.getJobManager().cancelTaskById(stmt.getJobName(), stmt.getTaskId());
} catch (Exception e) {
throw new DdlException(e.getMessage());
}
} else if (ddlStmt instanceof CreateUserStmt) {
CreateUserStmt stmt = (CreateUserStmt) ddlStmt;
env.getAuth().createUser(stmt);
} else if (ddlStmt instanceof DropUserStmt) {
DropUserStmt stmt = (DropUserStmt) ddlStmt;
env.getAuth().dropUser(stmt);
} else if (ddlStmt instanceof GrantStmt) {
GrantStmt stmt = (GrantStmt) ddlStmt;
env.getAuth().grant(stmt);
} else if (ddlStmt instanceof RevokeStmt) {
RevokeStmt stmt = (RevokeStmt) ddlStmt;
env.getAuth().revoke(stmt);
} else if (ddlStmt instanceof CreateRoleStmt) {
env.getAuth().createRole((CreateRoleStmt) ddlStmt);
} else if (ddlStmt instanceof AlterRoleStmt) {
env.getAuth().alterRole((AlterRoleStmt) ddlStmt);
} else if (ddlStmt instanceof DropRoleStmt) {
env.getAuth().dropRole((DropRoleStmt) ddlStmt);
} else if (ddlStmt instanceof SetUserPropertyStmt) {
env.getAuth().updateUserProperty((SetUserPropertyStmt) ddlStmt);
} else if (ddlStmt instanceof AlterSystemStmt) {
AlterSystemStmt stmt = (AlterSystemStmt) ddlStmt;
env.alterSystem(stmt);
} else if (ddlStmt instanceof CancelAlterSystemStmt) {
CancelAlterSystemStmt stmt = (CancelAlterSystemStmt) ddlStmt;
env.cancelAlterSystem(stmt);
} else if (ddlStmt instanceof AlterDatabaseQuotaStmt) {
env.alterDatabaseQuota((AlterDatabaseQuotaStmt) ddlStmt);
} else if (ddlStmt instanceof AlterDatabaseRename) {
env.renameDatabase((AlterDatabaseRename) ddlStmt);
} else if (ddlStmt instanceof RecoverDbStmt) {
env.recoverDatabase((RecoverDbStmt) ddlStmt);
} else if (ddlStmt instanceof RecoverTableStmt) {
env.recoverTable((RecoverTableStmt) ddlStmt);
} else if (ddlStmt instanceof RecoverPartitionStmt) {
env.recoverPartition((RecoverPartitionStmt) ddlStmt);
} else if (ddlStmt instanceof CreateViewStmt) {
env.createView((CreateViewStmt) ddlStmt);
} else if (ddlStmt instanceof BackupStmt) {
env.backup((BackupStmt) ddlStmt);
} else if (ddlStmt instanceof RestoreStmt) {
env.restore((RestoreStmt) ddlStmt);
} else if (ddlStmt instanceof CancelBackupStmt) {
env.cancelBackup((CancelBackupStmt) ddlStmt);
} else if (ddlStmt instanceof CreateRepositoryStmt) {
env.getBackupHandler().createRepository((CreateRepositoryStmt) ddlStmt);
} else if (ddlStmt instanceof DropRepositoryStmt) {
env.getBackupHandler().dropRepository((DropRepositoryStmt) ddlStmt);
} else if (ddlStmt instanceof SyncStmt) {
return;
} else if (ddlStmt instanceof TruncateTableStmt) {
env.truncateTable((TruncateTableStmt) ddlStmt);
} else if (ddlStmt instanceof AdminRepairTableStmt) {
env.getTabletChecker().repairTable((AdminRepairTableStmt) ddlStmt);
} else if (ddlStmt instanceof AdminCancelRepairTableStmt) {
env.getTabletChecker().cancelRepairTable((AdminCancelRepairTableStmt) ddlStmt);
} else if (ddlStmt instanceof AdminCompactTableStmt) {
env.compactTable((AdminCompactTableStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetConfigStmt) {
env.setConfig((AdminSetConfigStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetTableStatusStmt) {
env.setTableStatus((AdminSetTableStatusStmt) ddlStmt);
} else if (ddlStmt instanceof CreateFileStmt) {
env.getSmallFileMgr().createFile((CreateFileStmt) ddlStmt);
} else if (ddlStmt instanceof DropFileStmt) {
env.getSmallFileMgr().dropFile((DropFileStmt) ddlStmt);
} else if (ddlStmt instanceof InstallPluginStmt) {
env.installPlugin((InstallPluginStmt) ddlStmt);
} else if (ddlStmt instanceof UninstallPluginStmt) {
env.uninstallPlugin((UninstallPluginStmt) ddlStmt);
} else if (ddlStmt instanceof AdminCheckTabletsStmt) {
env.checkTablets((AdminCheckTabletsStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetReplicaStatusStmt) {
env.setReplicaStatus((AdminSetReplicaStatusStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetReplicaVersionStmt) {
env.setReplicaVersion((AdminSetReplicaVersionStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetPartitionVersionStmt) {
env.setPartitionVersion((AdminSetPartitionVersionStmt) ddlStmt);
} else if (ddlStmt instanceof CreateResourceStmt) {
env.getResourceMgr().createResource((CreateResourceStmt) ddlStmt);
} else if (ddlStmt instanceof DropResourceStmt) {
env.getResourceMgr().dropResource((DropResourceStmt) ddlStmt);
} else if (ddlStmt instanceof CreateWorkloadGroupStmt) {
env.getWorkloadGroupMgr().createWorkloadGroup((CreateWorkloadGroupStmt) ddlStmt);
} else if (ddlStmt instanceof DropWorkloadGroupStmt) {
env.getWorkloadGroupMgr().dropWorkloadGroup((DropWorkloadGroupStmt) ddlStmt);
} else if (ddlStmt instanceof CreateWorkloadSchedPolicyStmt) {
env.getWorkloadSchedPolicyMgr().createWorkloadSchedPolicy((CreateWorkloadSchedPolicyStmt) ddlStmt);
} else if (ddlStmt instanceof AlterWorkloadSchedPolicyStmt) {
env.getWorkloadSchedPolicyMgr().alterWorkloadSchedPolicy((AlterWorkloadSchedPolicyStmt) ddlStmt);
} else if (ddlStmt instanceof DropWorkloadSchedPolicyStmt) {
env.getWorkloadSchedPolicyMgr().dropWorkloadSchedPolicy((DropWorkloadSchedPolicyStmt) ddlStmt);
} else if (ddlStmt instanceof CreateDataSyncJobStmt) {
CreateDataSyncJobStmt createSyncJobStmt = (CreateDataSyncJobStmt) ddlStmt;
SyncJobManager syncJobMgr = env.getSyncJobManager();
if (!syncJobMgr.isJobNameExist(createSyncJobStmt.getDbName(), createSyncJobStmt.getJobName())) {
syncJobMgr.addDataSyncJob((CreateDataSyncJobStmt) ddlStmt);
} else {
throw new DdlException("The syncJob with jobName '" + createSyncJobStmt.getJobName() + "' in database ["
+ createSyncJobStmt.getDbName() + "] is already exists.");
}
} else if (ddlStmt instanceof ResumeSyncJobStmt) {
env.getSyncJobManager().resumeSyncJob((ResumeSyncJobStmt) ddlStmt);
} else if (ddlStmt instanceof PauseSyncJobStmt) {
env.getSyncJobManager().pauseSyncJob((PauseSyncJobStmt) ddlStmt);
} else if (ddlStmt instanceof StopSyncJobStmt) {
env.getSyncJobManager().stopSyncJob((StopSyncJobStmt) ddlStmt);
} else if (ddlStmt instanceof AdminCleanTrashStmt) {
env.cleanTrash((AdminCleanTrashStmt) ddlStmt);
} else if (ddlStmt instanceof AdminRebalanceDiskStmt) {
env.getTabletScheduler().rebalanceDisk((AdminRebalanceDiskStmt) ddlStmt);
} else if (ddlStmt instanceof AdminCancelRebalanceDiskStmt) {
env.getTabletScheduler().cancelRebalanceDisk((AdminCancelRebalanceDiskStmt) ddlStmt);
} else if (ddlStmt instanceof CreateSqlBlockRuleStmt) {
env.getSqlBlockRuleMgr().createSqlBlockRule((CreateSqlBlockRuleStmt) ddlStmt);
} else if (ddlStmt instanceof AlterSqlBlockRuleStmt) {
env.getSqlBlockRuleMgr().alterSqlBlockRule((AlterSqlBlockRuleStmt) ddlStmt);
} else if (ddlStmt instanceof DropSqlBlockRuleStmt) {
env.getSqlBlockRuleMgr().dropSqlBlockRule((DropSqlBlockRuleStmt) ddlStmt);
} else if (ddlStmt instanceof AlterDatabasePropertyStmt) {
env.alterDatabaseProperty((AlterDatabasePropertyStmt) ddlStmt);
} else if (ddlStmt instanceof RefreshTableStmt) {
env.getRefreshManager().handleRefreshTable((RefreshTableStmt) ddlStmt);
} else if (ddlStmt instanceof RefreshDbStmt) {
env.getRefreshManager().handleRefreshDb((RefreshDbStmt) ddlStmt);
} else if (ddlStmt instanceof AlterResourceStmt) {
env.getResourceMgr().alterResource((AlterResourceStmt) ddlStmt);
} else if (ddlStmt instanceof AlterColocateGroupStmt) {
env.getColocateTableIndex().alterColocateGroup((AlterColocateGroupStmt) ddlStmt);
} else if (ddlStmt instanceof AlterWorkloadGroupStmt) {
env.getWorkloadGroupMgr().alterWorkloadGroup((AlterWorkloadGroupStmt) ddlStmt);
} else if (ddlStmt instanceof CreatePolicyStmt) {
env.getPolicyMgr().createPolicy((CreatePolicyStmt) ddlStmt);
} else if (ddlStmt instanceof DropPolicyStmt) {
env.getPolicyMgr().dropPolicy((DropPolicyStmt) ddlStmt);
} else if (ddlStmt instanceof AlterPolicyStmt) {
env.getPolicyMgr().alterPolicy((AlterPolicyStmt) ddlStmt);
} else if (ddlStmt instanceof CreateCatalogStmt) {
env.getCatalogMgr().createCatalog((CreateCatalogStmt) ddlStmt);
} else if (ddlStmt instanceof DropCatalogStmt) {
env.getCatalogMgr().dropCatalog((DropCatalogStmt) ddlStmt);
} else if (ddlStmt instanceof AlterCatalogNameStmt) {
env.getCatalogMgr().alterCatalogName((AlterCatalogNameStmt) ddlStmt);
} else if (ddlStmt instanceof AlterCatalogCommentStmt) {
env.getCatalogMgr().alterCatalogComment((AlterCatalogCommentStmt) ddlStmt);
} else if (ddlStmt instanceof AlterCatalogPropertyStmt) {
env.getCatalogMgr().alterCatalogProps((AlterCatalogPropertyStmt) ddlStmt);
} else if (ddlStmt instanceof CleanLabelStmt) {
env.getLoadManager().cleanLabel(((CleanLabelStmt) ddlStmt).getDb(), ((CleanLabelStmt) ddlStmt).getLabel());
} else if (ddlStmt instanceof DropMaterializedViewStmt) {
env.dropMaterializedView((DropMaterializedViewStmt) ddlStmt);
} else if (ddlStmt instanceof RefreshCatalogStmt) {
env.getRefreshManager().handleRefreshCatalog((RefreshCatalogStmt) ddlStmt);
} else if (ddlStmt instanceof RefreshLdapStmt) {
env.getAuth().refreshLdap((RefreshLdapStmt) ddlStmt);
} else if (ddlStmt instanceof AlterUserStmt) {
env.getAuth().alterUser((AlterUserStmt) ddlStmt);
} else if (ddlStmt instanceof CancelCloudWarmUpStmt) {
if (Config.isCloudMode()) {
CancelCloudWarmUpStmt stmt = (CancelCloudWarmUpStmt) ddlStmt;
((CloudEnv) env).cancelCloudWarmUp(stmt);
}
} else if (ddlStmt instanceof CleanProfileStmt) {
ProfileManager.getInstance().cleanProfile();
} else if (ddlStmt instanceof DropStatsStmt) {
env.getAnalysisManager().dropStats((DropStatsStmt) ddlStmt);
} else if (ddlStmt instanceof DropCachedStatsStmt) {
env.getAnalysisManager().dropCachedStats((DropCachedStatsStmt) ddlStmt);
} else if (ddlStmt instanceof KillAnalysisJobStmt) {
env.getAnalysisManager().handleKillAnalyzeStmt((KillAnalysisJobStmt) ddlStmt);
} else if (ddlStmt instanceof CleanQueryStatsStmt) {
CleanQueryStatsStmt stmt = (CleanQueryStatsStmt) ddlStmt;
CleanQueryStatsInfo cleanQueryStatsInfo = null;
switch (stmt.getScope()) {
case ALL:
cleanQueryStatsInfo = new CleanQueryStatsInfo(
CleanQueryStatsStmt.Scope.ALL, env.getCurrentCatalog().getName(), null, null);
break;
case DB:
cleanQueryStatsInfo = new CleanQueryStatsInfo(CleanQueryStatsStmt.Scope.DB,
env.getCurrentCatalog().getName(), stmt.getDbName(), null);
break;
case TABLE:
cleanQueryStatsInfo = new CleanQueryStatsInfo(CleanQueryStatsStmt.Scope.TABLE,
env.getCurrentCatalog().getName(), stmt.getDbName(), stmt.getTableName().getTbl());
break;
default:
throw new DdlException("Unknown scope: " + stmt.getScope());
}
env.cleanQueryStats(cleanQueryStatsInfo);
} else if (ddlStmt instanceof DropAnalyzeJobStmt) {
DropAnalyzeJobStmt analyzeJobStmt = (DropAnalyzeJobStmt) ddlStmt;
Env.getCurrentEnv().getAnalysisManager().dropAnalyzeJob(analyzeJobStmt);
} else if (ddlStmt instanceof AlterRepositoryStmt) {
env.getBackupHandler().alterRepository((AlterRepositoryStmt) ddlStmt);
} else if (ddlStmt instanceof CreateStorageVaultStmt) {
env.getStorageVaultMgr().createStorageVaultResource((CreateStorageVaultStmt) ddlStmt);
} else if (ddlStmt instanceof CreateStageStmt) {
((CloudEnv) env).createStage((CreateStageStmt) ddlStmt);
} else if (ddlStmt instanceof DropStageStmt) {
((CloudEnv) env).dropStage((DropStageStmt) ddlStmt);
} else if (ddlStmt instanceof CopyStmt) {
executeCopyStmt(env, (CopyStmt) ddlStmt);
} else if (ddlStmt instanceof SetDefaultStorageVaultStmt) {
env.getStorageVaultMgr().setDefaultStorageVault((SetDefaultStorageVaultStmt) ddlStmt);
} else if (ddlStmt instanceof UnsetDefaultStorageVaultStmt) {
env.getStorageVaultMgr().unsetDefaultStorageVault();
} else {
LOG.warn("Unkown statement " + ddlStmt.getClass());
throw new DdlException("Unknown statement.");
}
}