Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,7 @@ private boolean registerDatabase(
false,
false);
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
&& result.status.code != TSStatusCode.DATABASE_ALREADY_EXISTS.getStatusCode()
&& result.status.code != TSStatusCode.DATABASE_CONFLICT.getStatusCode()) {
&& result.status.code != TSStatusCode.DATABASE_ALREADY_EXISTS.getStatusCode()) {
LOGGER.error(
DataNodePipeMessages.CREATE_DATABASE_ERROR_STATEMENT_RESULT_STATUS,
statement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.apache.iotdb.commons.pipe.sink.payload.thrift.request.PipeTransferFileSealReqV2;
import org.apache.iotdb.commons.pipe.sink.payload.thrift.request.PipeTransferSliceReq;
import org.apache.iotdb.commons.schema.column.ColumnHeaderConstant;
import org.apache.iotdb.commons.utils.PathUtils;
import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.conf.IoTDBConfig;
Expand Down Expand Up @@ -101,6 +102,7 @@
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.DatabaseSchemaStatement;
import org.apache.iotdb.db.queryengine.plan.statement.pipe.PipeEnrichedStatement;
import org.apache.iotdb.db.schemaengine.table.DataNodeTableCache;
import org.apache.iotdb.db.storageengine.load.active.ActiveLoadPathHelper;
Expand Down Expand Up @@ -622,11 +624,19 @@
return statement;
}

private TSStatus loadSchemaSnapShot(

Check failure on line 627 in iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Refactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.

See more on https://sonarcloud.io/project/issues?id=apache_iotdb&issues=AZ61hC_C7F7GSoap6XO8&open=AZ61hC_C7F7GSoap6XO8&pullRequest=17910
final Map<String, String> parameters, final List<String> fileAbsolutePaths)
throws IllegalPathException, IOException {
final PartialPath databasePath =
PartialPath.getQualifiedDatabasePartialPath(parameters.get(ColumnHeaderConstant.DATABASE));
final String databaseName = parameters.get(ColumnHeaderConstant.DATABASE);
final PartialPath databasePath = PartialPath.getQualifiedDatabasePartialPath(databaseName);

if (!PathUtils.isTableModelDatabase(databaseName)) {
final TSStatus createDatabaseStatus = createSchemaSnapshotDatabaseIfNecessary(databasePath);
if (createDatabaseStatus.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return createDatabaseStatus;
}
}

final SRStatementGenerator generator =
SchemaRegionSnapshotParser.translate2Statements(
Paths.get(fileAbsolutePaths.get(0)),
Expand Down Expand Up @@ -697,6 +707,33 @@
return PipeReceiverStatusHandler.getPriorStatus(results);
}

private TSStatus createSchemaSnapshotDatabaseIfNecessary(final PartialPath databasePath) {
final DatabaseSchemaStatement statement =
new DatabaseSchemaStatement(DatabaseSchemaStatement.DatabaseSchemaStatementType.CREATE);
statement.setDatabasePath(databasePath);

final TSStatus status = executeStatementAndClassifyExceptions(statement);
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return status;
}

if (status.getCode() == TSStatusCode.DATABASE_ALREADY_EXISTS.getStatusCode()) {
return Objects.equals(
status.getMessage(),
databasePath.getFullPath() + " has already been created as database")
? RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)
: new TSStatus(TSStatusCode.PIPE_RECEIVER_USER_CONFLICT_EXCEPTION.getStatusCode())
.setMessage(status.getMessage());
}

if (status.getCode() == TSStatusCode.DATABASE_CONFLICT.getStatusCode()) {
return new TSStatus(TSStatusCode.PIPE_RECEIVER_USER_CONFLICT_EXCEPTION.getStatusCode())
.setMessage(status.getMessage());
}

return status;
}

private TPipeTransferResp handleTransferSchemaPlan(final PipeTransferPlanNodeReq req) {
// We may be able to skip the alter logical view's exception parsing because
// the "AlterLogicalViewNode" is itself idempotent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@
import org.apache.iotdb.db.queryengine.plan.relational.sql.rewrite.StatementRewriteFactory;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.pipe.PipeEnrichedStatement;
import org.apache.iotdb.db.utils.SetThreadName;

import org.apache.thrift.TBase;
Expand Down Expand Up @@ -399,13 +400,19 @@ private IQueryExecution createQueryExecutionForTreeModel(
long startTime) {
queryContext.setTimeOut(timeOut);
queryContext.setStartTime(startTime);
if (statement instanceof IConfigStatement) {
queryContext.setQueryType(((IConfigStatement) statement).getQueryType());
final Statement configStatement =
statement instanceof PipeEnrichedStatement
&& ((PipeEnrichedStatement) statement).getInnerStatement()
instanceof IConfigStatement
? ((PipeEnrichedStatement) statement).getInnerStatement()
: statement;
if (configStatement instanceof IConfigStatement) {
queryContext.setQueryType(((IConfigStatement) configStatement).getQueryType());
return new ConfigExecution(
queryContext,
statement.getType(),
configStatement.getType(),
executor,
statement.accept(new TreeConfigTaskVisitor(), queryContext));
configStatement.accept(new TreeConfigTaskVisitor(), queryContext));
}
TreeModelPlanner treeModelPlanner =
new TreeModelPlanner(
Expand Down
Loading