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());
}
/**