Skip to content

Commit d171a53

Browse files
authored
Make TsTable always store uppercase "INF" && Fixed the NPE bug when TTL is set to "INF" && Distinguish database model in alter database
1 parent 9466829 commit d171a53

File tree

6 files changed

+34
-19
lines changed

6 files changed

+34
-19
lines changed

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/database/DatabaseSchemaPlan.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ public class DatabaseSchemaPlan extends ConfigPhysicalPlan {
3333

3434
private TDatabaseSchema schema;
3535

36-
public DatabaseSchemaPlan(ConfigPhysicalPlanType planType) {
36+
public DatabaseSchemaPlan(final ConfigPhysicalPlanType planType) {
3737
super(planType);
3838
this.schema = new TDatabaseSchema();
3939
}
4040

41-
public DatabaseSchemaPlan(ConfigPhysicalPlanType planType, TDatabaseSchema schema) {
41+
public DatabaseSchemaPlan(final ConfigPhysicalPlanType planType, final TDatabaseSchema schema) {
4242
this(planType);
4343
this.schema = schema;
4444
}
@@ -48,25 +48,25 @@ public TDatabaseSchema getSchema() {
4848
}
4949

5050
@Override
51-
protected void serializeImpl(DataOutputStream stream) throws IOException {
51+
protected void serializeImpl(final DataOutputStream stream) throws IOException {
5252
stream.writeShort(getType().getPlanType());
5353
ThriftConfigNodeSerDeUtils.serializeTDatabaseSchema(schema, stream);
5454
}
5555

5656
@Override
57-
protected void deserializeImpl(ByteBuffer buffer) throws IOException {
57+
protected void deserializeImpl(final ByteBuffer buffer) throws IOException {
5858
schema = ThriftConfigNodeSerDeUtils.deserializeTDatabaseSchema(buffer);
5959
}
6060

6161
@Override
62-
public boolean equals(Object o) {
62+
public boolean equals(final Object o) {
6363
if (this == o) {
6464
return true;
6565
}
6666
if (o == null || getClass() != o.getClass()) {
6767
return false;
6868
}
69-
DatabaseSchemaPlan that = (DatabaseSchemaPlan) o;
69+
final DatabaseSchemaPlan that = (DatabaseSchemaPlan) o;
7070
return schema.equals(that.schema);
7171
}
7272

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ public TSStatus setDatabase(
204204
}
205205

206206
/** Alter Database */
207-
public TSStatus alterDatabase(DatabaseSchemaPlan databaseSchemaPlan, boolean isGeneratedByPipe) {
207+
public TSStatus alterDatabase(
208+
final DatabaseSchemaPlan databaseSchemaPlan, final boolean isGeneratedByPipe) {
208209
TSStatus result;
209210
TDatabaseSchema databaseSchema = databaseSchemaPlan.getSchema();
210211

@@ -232,7 +233,7 @@ public TSStatus alterDatabase(DatabaseSchemaPlan databaseSchemaPlan, boolean isG
232233
}
233234
if (databaseSchema.isSetMinDataRegionGroupNum()) {
234235
// Validate alter DataRegionGroupNum
235-
int minDataRegionGroupNum =
236+
final int minDataRegionGroupNum =
236237
getMinRegionGroupNum(databaseSchema.getName(), TConsensusGroupType.DataRegion);
237238
if (databaseSchema.getMinDataRegionGroupNum() <= minDataRegionGroupNum) {
238239
result = new TSStatus(TSStatusCode.DATABASE_CONFIG_ERROR.getStatusCode());
@@ -259,7 +260,7 @@ public TSStatus alterDatabase(DatabaseSchemaPlan databaseSchemaPlan, boolean isG
259260
databaseSchemaPlan.getSchema().getDataReplicationFactor(),
260261
databaseSchemaPlan.getSchema().getSchemaReplicationFactor());
261262
return result;
262-
} catch (ConsensusException e) {
263+
} catch (final ConsensusException e) {
263264
LOGGER.warn(CONSENSUS_WRITE_ERROR, e);
264265
result = new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode());
265266
result.setMessage(e.getMessage());

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import org.apache.iotdb.confignode.exception.DatabaseNotExistsException;
8080
import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
8181
import org.apache.iotdb.confignode.rpc.thrift.TTableInfo;
82+
import org.apache.iotdb.db.exception.metadata.DatabaseModelException;
8283
import org.apache.iotdb.db.exception.metadata.SchemaQuotaExceededException;
8384
import org.apache.iotdb.db.schemaengine.template.Template;
8485
import org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUtil;
@@ -200,6 +201,18 @@ public TSStatus alterDatabase(final DatabaseSchemaPlan plan) {
200201

201202
final TDatabaseSchema currentSchema =
202203
mTree.getDatabaseNodeByDatabasePath(partialPathName).getAsMNode().getDatabaseSchema();
204+
205+
// Model conflict detection
206+
if (alterSchema.isIsTableModel() && !currentSchema.isIsTableModel()) {
207+
final DatabaseModelException exception =
208+
new DatabaseModelException(currentSchema.getName(), false);
209+
return RpcUtils.getStatus(exception.getErrorCode(), exception.getMessage());
210+
} else if (!alterSchema.isIsTableModel() && currentSchema.isIsTableModel()) {
211+
final DatabaseModelException exception =
212+
new DatabaseModelException(currentSchema.getName(), true);
213+
return RpcUtils.getStatus(exception.getErrorCode(), exception.getMessage());
214+
}
215+
203216
// TODO: Support alter other fields
204217
if (alterSchema.isSetMinSchemaRegionGroupNum()) {
205218
currentSchema.setMinSchemaRegionGroupNum(alterSchema.getMinSchemaRegionGroupNum());

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ public TSStatus setDatabase(final TDatabaseSchema databaseSchema) {
476476
}
477477

478478
@Override
479-
public TSStatus alterDatabase(TDatabaseSchema databaseSchema) {
479+
public TSStatus alterDatabase(final TDatabaseSchema databaseSchema) {
480480
TSStatus errorResp = null;
481481

482482
// TODO: Support alter the following fields
@@ -517,9 +517,9 @@ public TSStatus alterDatabase(TDatabaseSchema databaseSchema) {
517517
return errorResp;
518518
}
519519

520-
DatabaseSchemaPlan alterPlan =
520+
final DatabaseSchemaPlan alterPlan =
521521
new DatabaseSchemaPlan(ConfigPhysicalPlanType.AlterDatabase, databaseSchema);
522-
TSStatus resp = configManager.alterDatabase(alterPlan);
522+
final TSStatus resp = configManager.alterDatabase(alterPlan);
523523

524524
// Print log to record the ConfigNode that performs the set SetDatabaseRequest
525525
LOGGER.info("Execute AlterDatabase: {} with result: {}", databaseSchema, resp);

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ private Map<String, String> convertPropertiesToMap(
464464
throw new SemanticException(
465465
"ttl value must be 'INF' or a long literal, but now is: " + value);
466466
}
467-
map.put(key, strValue.get());
467+
map.put(key, strValue.get().toUpperCase(Locale.ENGLISH));
468468
continue;
469469
}
470470
// TODO: support validation for other properties

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -389,15 +389,16 @@ public SettableFuture<ConfigTaskResult> setDatabase(
389389

390390
@Override
391391
public SettableFuture<ConfigTaskResult> alterDatabase(
392-
DatabaseSchemaStatement databaseSchemaStatement) {
393-
SettableFuture<ConfigTaskResult> future = SettableFuture.create();
392+
final DatabaseSchemaStatement databaseSchemaStatement) {
393+
final SettableFuture<ConfigTaskResult> future = SettableFuture.create();
394394
// Construct request using statement
395-
TDatabaseSchema databaseSchema =
395+
final TDatabaseSchema databaseSchema =
396396
DatabaseSchemaTask.constructDatabaseSchema(databaseSchemaStatement);
397-
try (ConfigNodeClient configNodeClient =
397+
databaseSchema.setIsTableModel(false);
398+
try (final ConfigNodeClient configNodeClient =
398399
CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
399400
// Send request to some API server
400-
TSStatus tsStatus = configNodeClient.alterDatabase(databaseSchema);
401+
final TSStatus tsStatus = configNodeClient.alterDatabase(databaseSchema);
401402
// Get response or throw exception
402403
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) {
403404
if (databaseSchemaStatement.getEnablePrintExceptionLog()) {
@@ -410,7 +411,7 @@ public SettableFuture<ConfigTaskResult> alterDatabase(
410411
} else {
411412
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS));
412413
}
413-
} catch (ClientManagerException | TException e) {
414+
} catch (final ClientManagerException | TException e) {
414415
future.setException(e);
415416
}
416417
return future;

0 commit comments

Comments
 (0)