This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch enhance_system_database_auto_create
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 378ac1c4e8958ae64107e230195466f3d09a2d26
Author: OneSizeFitQuorum <[email protected]>
AuthorDate: Thu Jul 18 15:16:13 2024 +0800

    fix
    
    Signed-off-by: OneSizeFitQuorum <[email protected]>
---
 .../plan/analyze/cache/partition/PartitionCache.java | 20 ++++++++++++++++----
 .../service/metrics/IoTDBInternalLocalReporter.java  |  1 +
 .../metrics/reporter/iotdb/IoTDBSessionReporter.java |  2 +-
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
index 8fc726015c7..37b9ec9a14f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
@@ -238,10 +238,14 @@ public class PartitionCache {
         // Try to get database needed to be created from missed device
         Set<String> storageGroupNamesNeedCreated = new HashSet<>();
         for (String devicePath : result.getMissedDevices()) {
-          PartialPath storageGroupNameNeedCreated =
-              MetaUtils.getStorageGroupPathByLevel(
-                  new PartialPath(devicePath), 
config.getDefaultStorageGroupLevel());
-          
storageGroupNamesNeedCreated.add(storageGroupNameNeedCreated.getFullPath());
+          if (devicePath.startsWith(SchemaConstant.SYSTEM_DATABASE)) {
+            storageGroupNamesNeedCreated.add(SchemaConstant.SYSTEM_DATABASE);
+          } else {
+            PartialPath storageGroupNameNeedCreated =
+                MetaUtils.getStorageGroupPathByLevel(
+                    new PartialPath(devicePath), 
config.getDefaultStorageGroupLevel());
+            
storageGroupNamesNeedCreated.add(storageGroupNameNeedCreated.getFullPath());
+          }
         }
 
         // Try to create databases one by one until done or one database fail
@@ -265,6 +269,14 @@ public class PartitionCache {
           }
           TDatabaseSchema storageGroupSchema = new TDatabaseSchema();
           storageGroupSchema.setName(storageGroupName);
+          if (SchemaConstant.SYSTEM_DATABASE.equals(storageGroupName)) {
+            storageGroupSchema.setSchemaReplicationFactor(1);
+            storageGroupSchema.setDataReplicationFactor(1);
+            storageGroupSchema.setMinSchemaRegionGroupNum(1);
+            storageGroupSchema.setMaxSchemaRegionGroupNum(1);
+            storageGroupSchema.setMaxDataRegionGroupNum(1);
+            storageGroupSchema.setMaxDataRegionGroupNum(1);
+          }
           TSStatus tsStatus = client.setDatabase(storageGroupSchema);
           if (TSStatusCode.SUCCESS_STATUS.getStatusCode() == 
tsStatus.getCode()) {
             successFullyCreatedStorageGroup.add(storageGroupName);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
index 5f581f271ea..f33624fb0b2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
@@ -102,6 +102,7 @@ public class IoTDBInternalLocalReporter extends 
IoTDBInternalReporter {
         databaseSchema.setMaxSchemaRegionGroupNum(1);
         databaseSchema.setMinSchemaRegionGroupNum(1);
         databaseSchema.setMaxDataRegionGroupNum(1);
+        databaseSchema.setMinDataRegionGroupNum(1);
         TSStatus tsStatus = client.setDatabase(databaseSchema);
         if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) 
{
           LOGGER.error("IoTDBSessionReporter checkOrCreateDatabase failed.");
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
index c5d431d1960..968fa4cc476 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
@@ -75,7 +75,7 @@ public class IoTDBSessionReporter extends IoTDBReporter {
       if (!result.hasNext()) {
         try (SessionDataSetWrapper result2 =
             this.sessionPool.executeQueryStatement(
-                "CREATE "
+                "CREATE DATABASE "
                     + metricConfig.getInternalDatabase()
                     + " WITH SCHEMA_REPLICATION_FACTOR=1, 
DATA_REPLICATION_FACTOR=1, SCHEMA_REGION_GROUP_NUM=1, 
DATA_REGION_GROUP_NUM=1")) {
           if (!result2.hasNext()) {

Reply via email to