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

kirs 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 ad33d43  [Improvement][Dao] SQL optimization - limit one piece of data 
#5061 (#6940)
ad33d43 is described below

commit ad33d434987863b4ee7b3f8ed89d7e59734687c0
Author: LinKai <[email protected]>
AuthorDate: Mon Nov 22 20:27:29 2021 +0800

    [Improvement][Dao] SQL optimization - limit one piece of data #5061 (#6940)
    
    * [Feature][unittest] Recover UT in AlertPluginManagerTest.java #6619
    
    * use throws exception instead of try-catch to catch exceptions in 
AlertPluginManagerTest.java
    
    * change the assert result from assertNull to assertNotNull
    
    * [Improvement][Dao] SQL optimization - limit one piece of data #5069
    
    * Improve the code to A rate
    
    Co-authored-by: linkai <[email protected]>
---
 .../dolphinscheduler/alert/plugin/EmailAlertPluginTest.java      | 5 ++---
 .../src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java | 9 ++-------
 .../apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java   | 2 +-
 .../apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml    | 1 +
 .../org/apache/dolphinscheduler/dao/mapper/PluginDefineTest.java | 8 ++++----
 5 files changed, 10 insertions(+), 15 deletions(-)

diff --git 
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/test/java/org/apache/dolphinscheduler/alert/plugin/EmailAlertPluginTest.java
 
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/test/java/org/apache/dolphinscheduler/alert/plugin/EmailAlertPluginTest.java
index 406e096..1159cf6 100644
--- 
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/test/java/org/apache/dolphinscheduler/alert/plugin/EmailAlertPluginTest.java
+++ 
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/test/java/org/apache/dolphinscheduler/alert/plugin/EmailAlertPluginTest.java
@@ -116,11 +116,10 @@ public class EmailAlertPluginTest {
         alertPluginInstance.setCreateTime(new Date());
         alertPluginInstance.setInstanceName("test email alert");
 
-        List<PluginDefine> pluginDefineList = 
pluginDao.getPluginDefineMapper().queryByNameAndType("Email", "alert");
-        if (pluginDefineList == null || pluginDefineList.size() == 0) {
+        PluginDefine pluginDefine = 
pluginDao.getPluginDefineMapper().queryByNameAndType("Email", "alert");
+        if (pluginDefine == null) {
             throw new RuntimeException("no alert plugin be load");
         }
-        PluginDefine pluginDefine = pluginDefineList.get(0);
         alertPluginInstance.setPluginDefineId(pluginDefine.getId());
         alertPluginInstance.setPluginInstanceParams(getEmailAlertParams());
         alertDao.getAlertPluginInstanceMapper().insert(alertPluginInstance);
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
index eb762c5..71498a0 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/PluginDao.java
@@ -22,10 +22,6 @@ import static java.util.Objects.requireNonNull;
 import org.apache.dolphinscheduler.dao.entity.PluginDefine;
 import org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper;
 
-import org.apache.commons.collections.CollectionUtils;
-
-import java.util.List;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -63,14 +59,13 @@ public class PluginDao {
         requireNonNull(pluginDefine.getPluginName(), "pluginName is null");
         requireNonNull(pluginDefine.getPluginType(), "pluginType is null");
 
-        List<PluginDefine> pluginDefineList = 
pluginDefineMapper.queryByNameAndType(pluginDefine.getPluginName(), 
pluginDefine.getPluginType());
-        if (CollectionUtils.isEmpty(pluginDefineList)) {
+        PluginDefine currPluginDefine = 
pluginDefineMapper.queryByNameAndType(pluginDefine.getPluginName(), 
pluginDefine.getPluginType());
+        if (currPluginDefine == null) {
             if (pluginDefineMapper.insert(pluginDefine) == 1 && 
pluginDefine.getId() > 0) {
                 return pluginDefine.getId();
             }
             throw new IllegalStateException("Failed to insert plugin 
definition");
         }
-        PluginDefine currPluginDefine = pluginDefineList.get(0);
         if 
(!currPluginDefine.getPluginParams().equals(pluginDefine.getPluginParams())) {
             currPluginDefine.setUpdateTime(pluginDefine.getUpdateTime());
             currPluginDefine.setPluginParams(pluginDefine.getPluginParams());
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
index 1ce7670..65ad0f9 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.java
@@ -64,5 +64,5 @@ public interface PluginDefineMapper extends 
BaseMapper<PluginDefine> {
      * @param pluginType
      * @return
      */
-    List<PluginDefine> queryByNameAndType(@Param("pluginName") String 
pluginName, @Param("pluginType") String pluginType);
+    PluginDefine queryByNameAndType(@Param("pluginName") String pluginName, 
@Param("pluginType") String pluginType);
 }
diff --git 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
index 329d2f1..f61b9d1 100644
--- 
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
+++ 
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/PluginDefineMapper.xml
@@ -38,6 +38,7 @@
         select *
         from t_ds_plugin_define
         where plugin_name = #{pluginName} and plugin_type = #{pluginType}
+        limit 1
     </select>
 
     <select id="queryDetailById" 
resultType="org.apache.dolphinscheduler.dao.entity.PluginDefine">
diff --git 
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineTest.java
 
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineTest.java
index 040601d..ecae971 100644
--- 
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineTest.java
+++ 
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/PluginDefineTest.java
@@ -49,10 +49,10 @@ public class PluginDefineTest extends BaseDaoTest {
     @Test
     public void testQueryByNameAndType() {
         PluginDefine pluginDefine = createPluginDefine();
-        List<PluginDefine> pluginDefines = 
pluginDefineMapper.queryByNameAndType(pluginDefine.getPluginName(), 
pluginDefine.getPluginType());
-        Assert.assertTrue(pluginDefines.size() > 0);
-        Assert.assertEquals(pluginDefines.get(0).getPluginType(), 
pluginDefine.getPluginType());
-        Assert.assertEquals(pluginDefines.get(0).getPluginName(), 
pluginDefine.getPluginName());
+        PluginDefine pluginDefineSaved = 
pluginDefineMapper.queryByNameAndType(pluginDefine.getPluginName(), 
pluginDefine.getPluginType());
+        Assert.assertNotNull(pluginDefineSaved);
+        Assert.assertEquals(pluginDefineSaved.getPluginType(), 
pluginDefine.getPluginType());
+        Assert.assertEquals(pluginDefineSaved.getPluginName(), 
pluginDefine.getPluginName());
     }
 
     /**

Reply via email to