in iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java [569:911]
private TSStatus executePlan(final ConfigPhysicalPlan plan) throws ConsensusException {
final String queryId = generatePseudoQueryId();
switch (plan.getType()) {
case CreateDatabase:
// Here we only reserve database name and substitute the sender's local information
// with the receiver's default configurations
final TDatabaseSchema schema = ((DatabaseSchemaPlan) plan).getSchema();
schema.setSchemaReplicationFactor(
ConfigNodeDescriptor.getInstance().getConf().getSchemaReplicationFactor());
schema.setDataReplicationFactor(
ConfigNodeDescriptor.getInstance().getConf().getDataReplicationFactor());
schema.setTimePartitionInterval(
CommonDescriptor.getInstance().getConfig().getTimePartitionInterval());
schema.setMinSchemaRegionGroupNum(
ConfigNodeDescriptor.getInstance()
.getConf()
.getDefaultSchemaRegionGroupNumPerDatabase());
schema.setMinDataRegionGroupNum(
ConfigNodeDescriptor.getInstance().getConf().getDefaultDataRegionGroupNumPerDatabase());
schema.setMaxSchemaRegionGroupNum(schema.getMinSchemaRegionGroupNum());
schema.setMaxDataRegionGroupNum(schema.getMinDataRegionGroupNum());
return configManager.getClusterSchemaManager().setDatabase((DatabaseSchemaPlan) plan, true);
case AlterDatabase:
return configManager
.getClusterSchemaManager()
.alterDatabase((DatabaseSchemaPlan) plan, true);
case DeleteDatabase:
return configManager.deleteDatabases(
new TDeleteDatabasesReq(
Collections.singletonList(((DeleteDatabasePlan) plan).getName()))
.setIsGeneratedByPipe(true)
.setIsTableModel(
PathUtils.isTableModelDatabase(((DeleteDatabasePlan) plan).getName())));
case ExtendSchemaTemplate:
return configManager
.getClusterSchemaManager()
.extendSchemaTemplate(((ExtendSchemaTemplatePlan) plan).getTemplateExtendInfo(), true);
case CommitSetSchemaTemplate:
return configManager.setSchemaTemplate(
new TSetSchemaTemplateReq(
queryId,
((CommitSetSchemaTemplatePlan) plan).getName(),
((CommitSetSchemaTemplatePlan) plan).getPath())
.setIsGeneratedByPipe(true));
case PipeUnsetTemplate:
return configManager.unsetSchemaTemplate(
new TUnsetSchemaTemplateReq(
queryId,
((PipeUnsetSchemaTemplatePlan) plan).getName(),
((PipeUnsetSchemaTemplatePlan) plan).getPath())
.setIsGeneratedByPipe(true));
case PipeDeleteTimeSeries:
return configManager.deleteTimeSeries(
new TDeleteTimeSeriesReq(
queryId, ((PipeDeleteTimeSeriesPlan) plan).getPatternTreeBytes())
.setIsGeneratedByPipe(true));
case PipeDeleteLogicalView:
return configManager.deleteLogicalView(
new TDeleteLogicalViewReq(
queryId, ((PipeDeleteLogicalViewPlan) plan).getPatternTreeBytes())
.setIsGeneratedByPipe(true));
case PipeDeactivateTemplate:
return configManager
.getProcedureManager()
.deactivateTemplate(
queryId, ((PipeDeactivateTemplatePlan) plan).getTemplateSetInfo(), true);
case UpdateTriggerStateInTable:
// TODO: Record complete message in trigger
return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
case DeleteTriggerInTable:
return configManager.dropTrigger(
new TDropTriggerReq(((DeleteTriggerInTablePlan) plan).getTriggerName())
.setIsGeneratedByPipe(true));
case SetTTL:
return ((SetTTLPlan) plan).getTTL() == TTLCache.NULL_TTL
? configManager.getTTLManager().unsetTTL((SetTTLPlan) plan, true)
: configManager.getTTLManager().setTTL((SetTTLPlan) plan, true);
case PipeCreateTableOrView:
return executeIdempotentCreateTableOrView((PipeCreateTableOrViewPlan) plan, queryId);
case AddTableColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((AddTableColumnPlan) plan).getDatabase(),
null,
((AddTableColumnPlan) plan).getTableName(),
queryId,
ProcedureType.ADD_TABLE_COLUMN_PROCEDURE,
new AddTableColumnProcedure(
((AddTableColumnPlan) plan).getDatabase(),
((AddTableColumnPlan) plan).getTableName(),
queryId,
((AddTableColumnPlan) plan).getColumnSchemaList(),
true));
case AddViewColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((AddTableViewColumnPlan) plan).getDatabase(),
null,
((AddTableViewColumnPlan) plan).getTableName(),
queryId,
ProcedureType.ADD_VIEW_COLUMN_PROCEDURE,
new AddViewColumnProcedure(
((AddTableViewColumnPlan) plan).getDatabase(),
((AddTableViewColumnPlan) plan).getTableName(),
queryId,
((AddTableViewColumnPlan) plan).getColumnSchemaList(),
true));
case SetTableProperties:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((SetTablePropertiesPlan) plan).getDatabase(),
null,
((SetTablePropertiesPlan) plan).getTableName(),
queryId,
ProcedureType.SET_TABLE_PROPERTIES_PROCEDURE,
new SetTablePropertiesProcedure(
((SetTablePropertiesPlan) plan).getDatabase(),
((SetTablePropertiesPlan) plan).getTableName(),
queryId,
((SetTablePropertiesPlan) plan).getProperties(),
true));
case SetViewProperties:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((SetViewPropertiesPlan) plan).getDatabase(),
null,
((SetViewPropertiesPlan) plan).getTableName(),
queryId,
ProcedureType.SET_VIEW_PROPERTIES_PROCEDURE,
new SetViewPropertiesProcedure(
((SetViewPropertiesPlan) plan).getDatabase(),
((SetViewPropertiesPlan) plan).getTableName(),
queryId,
((SetViewPropertiesPlan) plan).getProperties(),
true));
case CommitDeleteColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((CommitDeleteColumnPlan) plan).getDatabase(),
null,
((CommitDeleteColumnPlan) plan).getTableName(),
queryId,
ProcedureType.DROP_TABLE_COLUMN_PROCEDURE,
new DropTableColumnProcedure(
((CommitDeleteColumnPlan) plan).getDatabase(),
((CommitDeleteColumnPlan) plan).getTableName(),
queryId,
((CommitDeleteColumnPlan) plan).getColumnName(),
true));
case CommitDeleteViewColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((CommitDeleteViewColumnPlan) plan).getDatabase(),
null,
((CommitDeleteViewColumnPlan) plan).getTableName(),
queryId,
ProcedureType.DROP_VIEW_COLUMN_PROCEDURE,
new DropViewColumnProcedure(
((CommitDeleteViewColumnPlan) plan).getDatabase(),
((CommitDeleteViewColumnPlan) plan).getTableName(),
queryId,
((CommitDeleteViewColumnPlan) plan).getColumnName(),
true));
case RenameTableColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((RenameTableColumnPlan) plan).getDatabase(),
null,
((RenameTableColumnPlan) plan).getTableName(),
queryId,
ProcedureType.RENAME_TABLE_COLUMN_PROCEDURE,
new RenameTableColumnProcedure(
((RenameTableColumnPlan) plan).getDatabase(),
((RenameTableColumnPlan) plan).getTableName(),
queryId,
((RenameTableColumnPlan) plan).getOldName(),
((RenameTableColumnPlan) plan).getNewName(),
true));
case RenameViewColumn:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((RenameViewColumnPlan) plan).getDatabase(),
null,
((RenameViewColumnPlan) plan).getTableName(),
queryId,
ProcedureType.RENAME_VIEW_COLUMN_PROCEDURE,
new RenameViewColumnProcedure(
((RenameViewColumnPlan) plan).getDatabase(),
((RenameViewColumnPlan) plan).getTableName(),
queryId,
((RenameViewColumnPlan) plan).getOldName(),
((RenameViewColumnPlan) plan).getNewName(),
true));
case CommitDeleteTable:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((CommitDeleteTablePlan) plan).getDatabase(),
null,
((CommitDeleteTablePlan) plan).getTableName(),
queryId,
ProcedureType.DROP_TABLE_PROCEDURE,
new DropTableProcedure(
((CommitDeleteTablePlan) plan).getDatabase(),
((CommitDeleteTablePlan) plan).getTableName(),
queryId,
true));
case CommitDeleteView:
return configManager
.getProcedureManager()
.executeWithoutDuplicate(
((CommitDeleteViewPlan) plan).getDatabase(),
null,
((CommitDeleteViewPlan) plan).getTableName(),
queryId,
ProcedureType.DROP_VIEW_PROCEDURE,
new DropViewProcedure(
((CommitDeleteViewPlan) plan).getDatabase(),
((CommitDeleteViewPlan) plan).getTableName(),
queryId,
true));
case SetTableComment:
return configManager
.getClusterSchemaManager()
.setTableComment(
((SetTableCommentPlan) plan).getDatabase(),
((SetTableCommentPlan) plan).getTableName(),
((SetTableCommentPlan) plan).getComment(),
false,
true);
case SetViewComment:
return configManager
.getClusterSchemaManager()
.setTableComment(
((SetViewCommentPlan) plan).getDatabase(),
((SetViewCommentPlan) plan).getTableName(),
((SetViewCommentPlan) plan).getComment(),
true,
true);
case SetTableColumnComment:
return configManager
.getClusterSchemaManager()
.setTableColumnComment(
((SetTableColumnCommentPlan) plan).getDatabase(),
((SetTableColumnCommentPlan) plan).getTableName(),
((SetTableColumnCommentPlan) plan).getColumnName(),
((SetTableColumnCommentPlan) plan).getComment(),
true);
case PipeDeleteDevices:
return configManager
.getProcedureManager()
.deleteDevices(
new TDeleteTableDeviceReq(
((PipeDeleteDevicesPlan) plan).getDatabase(),
((PipeDeleteDevicesPlan) plan).getTableName(),
queryId,
ByteBuffer.wrap(((PipeDeleteDevicesPlan) plan).getPatternBytes()),
ByteBuffer.wrap(((PipeDeleteDevicesPlan) plan).getFilterBytes()),
ByteBuffer.wrap(((PipeDeleteDevicesPlan) plan).getModBytes())),
true)
.getStatus();
case RenameTable:
configManager
.getProcedureManager()
.executeWithoutDuplicate(
((RenameTablePlan) plan).getDatabase(),
null,
((RenameTablePlan) plan).getTableName(),
queryId,
ProcedureType.RENAME_TABLE_PROCEDURE,
new RenameTableProcedure(
((RenameTablePlan) plan).getDatabase(),
((RenameTablePlan) plan).getTableName(),
queryId,
((RenameTablePlan) plan).getNewName(),
true));
case RenameView:
configManager
.getProcedureManager()
.executeWithoutDuplicate(
((RenameViewPlan) plan).getDatabase(),
null,
((RenameViewPlan) plan).getTableName(),
queryId,
ProcedureType.RENAME_VIEW_PROCEDURE,
new RenameViewProcedure(
((RenameViewPlan) plan).getDatabase(),
((RenameViewPlan) plan).getTableName(),
queryId,
((RenameViewPlan) plan).getNewName(),
true));
case CreateUser:
case CreateUserWithRawPassword:
case CreateRole:
case DropUser:
case DropRole:
case GrantRole:
case GrantUser:
case GrantRoleToUser:
case RevokeUser:
case RevokeRole:
case RevokeRoleFromUser:
case UpdateUser:
case RCreateUser:
case RCreateRole:
case RDropUser:
case RDropRole:
case RGrantRoleAll:
case RGrantUserAll:
case RRevokeRoleAll:
case RRevokeUserAll:
case RGrantRoleAny:
case RGrantUserAny:
case RRevokeUserAny:
case RRevokeRoleAny:
case RGrantRoleDBPriv:
case RGrantUserDBPriv:
case RRevokeRoleDBPriv:
case RRevokeUserDBPriv:
case RGrantRoleTBPriv:
case RGrantUserTBPriv:
case RRevokeRoleTBPriv:
case RRevokeUserTBPriv:
case RGrantRoleSysPri:
case RGrantUserSysPri:
case RRevokeRoleSysPri:
case RRevokeUserSysPri:
case RGrantUserRole:
case RRevokeUserRole:
return configManager.getPermissionManager().operatePermission((AuthorPlan) plan, true);
case CreateSchemaTemplate:
default:
return configManager.getConsensusManager().write(new PipeEnrichedPlan(plan));
}
}