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

kezhenxu94 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new cdd4e7b  [Improvement-#7529][tools] Init DB schema from the full sql 
file. (#7530)
cdd4e7b is described below

commit cdd4e7bf03d0e4c0f486ed8d327151475167584e
Author: lgcareer <[email protected]>
AuthorDate: Thu Dec 23 00:19:58 2021 +0800

    [Improvement-#7529][tools] Init DB schema from the full sql file. (#7530)
---
 ...postgre.sql => dolphinscheduler_postgresql.sql} |  0
 .../tools/datasource/CreateDolphinScheduler.java   | 11 +++--
 .../tools/datasource/DolphinSchedulerManager.java  | 13 ++++--
 .../tools/datasource/dao/UpgradeDao.java           | 53 ++++------------------
 4 files changed, 26 insertions(+), 51 deletions(-)

diff --git 
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgre.sql 
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
similarity index 100%
rename from 
dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgre.sql
rename to 
dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
diff --git 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/CreateDolphinScheduler.java
 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/CreateDolphinScheduler.java
index d204f7a..204dc5c 100644
--- 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/CreateDolphinScheduler.java
+++ 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/CreateDolphinScheduler.java
@@ -42,10 +42,13 @@ public class CreateDolphinScheduler {
 
         @Override
         public void run(String... args) throws Exception {
-            dolphinSchedulerManager.initDolphinScheduler();
-            logger.info("init DolphinScheduler finished");
-            dolphinSchedulerManager.upgradeDolphinScheduler();
-            logger.info("upgrade DolphinScheduler finished");
+            if (dolphinSchedulerManager.schemaIsInitialized()) {
+                dolphinSchedulerManager.upgradeDolphinScheduler();
+                logger.info("upgrade DolphinScheduler finished");
+            } else {
+                dolphinSchedulerManager.initDolphinScheduler();
+                logger.info("init DolphinScheduler finished");
+            }
             logger.info("create DolphinScheduler success");
         }
     }
diff --git 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/DolphinSchedulerManager.java
 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/DolphinSchedulerManager.java
index 2788da8..7830220 100644
--- 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/DolphinSchedulerManager.java
+++ 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/DolphinSchedulerManager.java
@@ -55,21 +55,28 @@ public class DolphinSchedulerManager {
     }
 
     public void initDolphinScheduler() {
+        this.initDolphinSchedulerSchema();
+    }
+
+    /**
+     * whether schema is initialized
+     * @return true if schema is initialized
+     */
+    public boolean schemaIsInitialized() {
         // Determines whether the dolphinscheduler table structure has been 
init
         if (upgradeDao.isExistsTable("t_escheduler_version")
             || upgradeDao.isExistsTable("t_ds_version")
             || upgradeDao.isExistsTable("t_escheduler_queue")) {
             logger.info("The database has been initialized. Skip the 
initialization step");
-            return;
+            return true;
         }
-        this.initDolphinSchedulerSchema();
+        return false;
     }
 
     public void initDolphinSchedulerSchema() {
         logger.info("Start initializing the DolphinScheduler manager table 
structure");
         upgradeDao.initSchema();
     }
-
     public void upgradeDolphinScheduler() throws IOException {
         // Gets a list of all upgrades
         List<String> schemaList = SchemaUtils.getAllSchemaList();
diff --git 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/dao/UpgradeDao.java
 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/dao/UpgradeDao.java
index c337936..2978a62 100644
--- 
a/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/dao/UpgradeDao.java
+++ 
b/dolphinscheduler-tools/src/main/java/org/apache/dolphinscheduler/tools/datasource/dao/UpgradeDao.java
@@ -89,52 +89,17 @@ public abstract class UpgradeDao {
     public abstract DbType getDbType();
 
     public void initSchema() {
-        // Execute the dolphinscheduler DDL, it cannot be rolled back
-        runInitDDL();
-
-        // Execute the dolphinscheduler DML, it can be rolled back
-        runInitDML();
+        // Execute the dolphinscheduler full sql
+        runInitSql(getDbType());
     }
 
-    private void runInitDML() {
-        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + 
initSqlPath() + "/dolphinscheduler_dml.sql");
-        Connection conn = null;
-        try {
-            conn = dataSource.getConnection();
-            conn.setAutoCommit(false);
-
-            // Execute the dolphinscheduler_dml.sql script to import related 
data of dolphinscheduler
-            ScriptRunner initScriptRunner = new ScriptRunner(conn, false, 
true);
-            Reader initSqlReader = new 
InputStreamReader(mysqlSQLFilePath.getInputStream());
-            initScriptRunner.runScript(initSqlReader);
-
-            conn.commit();
-        } catch (IOException e) {
-            try {
-                conn.rollback();
-            } catch (SQLException e1) {
-                logger.error(e1.getMessage(), e1);
-            }
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException(e.getMessage(), e);
-        } catch (Exception e) {
-            try {
-                if (null != conn) {
-                    conn.rollback();
-                }
-            } catch (SQLException e1) {
-                logger.error(e1.getMessage(), e1);
-            }
-            logger.error(e.getMessage(), e);
-            throw new RuntimeException(e.getMessage(), e);
-        } finally {
-            ConnectionUtils.releaseResource(conn);
-        }
-
-    }
-
-    private void runInitDDL() {
-        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + 
initSqlPath() + "/dolphinscheduler_ddl.sql");
+    /**
+     * run init sql to init db schema
+     * @param dbType db type
+     */
+    private void runInitSql(DbType dbType) {
+        String sqlFile = 
String.format("dolphinscheduler_%s.sql",dbType.getDescp());
+        Resource mysqlSQLFilePath = new ClassPathResource("sql/" + sqlFile);
         try (Connection conn = dataSource.getConnection()) {
             // Execute the dolphinscheduler_ddl.sql script to create the table 
structure of dolphinscheduler
             ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);

Reply via email to