diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVJobStmt.java index d0e934c62c..cdba6ad9ac 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVJobStmt.java @@ -29,9 +29,11 @@ import com.google.common.base.Strings; public class ShowMTMVJobStmt extends ShowStmt { private final String jobName; // optional - private String dbName; // optional + private final String dbName; // optional private final TableName mvName; // optional + private String analyzedDbName; + public ShowMTMVJobStmt() { this.jobName = null; this.dbName = null; @@ -51,11 +53,11 @@ public class ShowMTMVJobStmt extends ShowStmt { } public boolean isShowAllJobs() { - return dbName == null && mvName == null && jobName == null; + return analyzedDbName == null && mvName == null && jobName == null; } public boolean isShowAllJobsFromDb() { - return dbName != null && mvName == null; + return analyzedDbName != null && mvName == null; } public boolean isShowAllJobsOnMv() { @@ -67,13 +69,7 @@ public class ShowMTMVJobStmt extends ShowStmt { } public String getDbName() { - if (dbName != null) { - return dbName; - } else if (mvName != null) { - return mvName.getDb(); - } else { - return null; - } + return analyzedDbName; } public String getMVName() { @@ -90,8 +86,17 @@ public class ShowMTMVJobStmt extends ShowStmt { if (dbName != null && mvName != null && mvName.getDb() != null && !dbName.equals(mvName.getDb())) { throw new UserException("Database name should be same when they both been set."); } - if (!Strings.isNullOrEmpty(dbName)) { - dbName = ClusterNamespace.getFullName(getClusterName(), dbName); + analyzedDbName = dbName; + if (Strings.isNullOrEmpty(analyzedDbName)) { + if (mvName != null) { + analyzedDbName = mvName.getDb(); + } + if (Strings.isNullOrEmpty(analyzedDbName)) { + analyzedDbName = analyzer.getDefaultDb(); + } + } + if (!Strings.isNullOrEmpty(analyzedDbName)) { + analyzedDbName = ClusterNamespace.getFullName(getClusterName(), analyzedDbName); } } @@ -114,11 +119,11 @@ public class ShowMTMVJobStmt extends ShowStmt { StringBuilder sb = new StringBuilder(); sb.append("SHOW MTMV JOB"); - if (jobName != null) { + if (!Strings.isNullOrEmpty(jobName)) { sb.append(" FOR "); sb.append(getJobName()); } - if (dbName != null) { + if (!Strings.isNullOrEmpty(dbName)) { sb.append(" FROM "); sb.append(ClusterNamespace.getNameFromFullName(dbName)); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVTaskStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVTaskStmt.java index 12532dc2b3..4af8798348 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVTaskStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowMTMVTaskStmt.java @@ -28,9 +28,11 @@ import com.google.common.base.Strings; public class ShowMTMVTaskStmt extends ShowStmt { private final String taskId; // optional - private String dbName; // optional + private final String dbName; // optional private final TableName mvName; // optional + private String analyzedDbName; + public ShowMTMVTaskStmt() { this.taskId = null; this.dbName = null; @@ -50,11 +52,11 @@ public class ShowMTMVTaskStmt extends ShowStmt { } public boolean isShowAllTasks() { - return dbName == null && mvName == null && taskId == null; + return analyzedDbName == null && mvName == null && taskId == null; } public boolean isShowAllTasksFromDb() { - return dbName != null && mvName == null; + return analyzedDbName != null && mvName == null; } public boolean isShowAllTasksOnMv() { @@ -66,13 +68,7 @@ public class ShowMTMVTaskStmt extends ShowStmt { } public String getDbName() { - if (dbName != null) { - return dbName; - } else if (mvName != null) { - return mvName.getDb(); - } else { - return null; - } + return analyzedDbName; } public String getMVName() { @@ -89,8 +85,17 @@ public class ShowMTMVTaskStmt extends ShowStmt { if (dbName != null && mvName != null && mvName.getDb() != null && !dbName.equals(mvName.getDb())) { throw new UserException("Database name should be same when they both been set."); } - if (!Strings.isNullOrEmpty(dbName)) { - dbName = ClusterNamespace.getFullName(getClusterName(), dbName); + analyzedDbName = dbName; + if (Strings.isNullOrEmpty(analyzedDbName)) { + if (mvName != null) { + analyzedDbName = mvName.getDb(); + } + if (Strings.isNullOrEmpty(analyzedDbName)) { + analyzedDbName = analyzer.getDefaultDb(); + } + } + if (!Strings.isNullOrEmpty(analyzedDbName)) { + analyzedDbName = ClusterNamespace.getFullName(getClusterName(), analyzedDbName); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobManager.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobManager.java index 13941c49a7..607541a7f4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVJobManager.java @@ -33,6 +33,7 @@ import org.apache.doris.mtmv.metadata.MTMVTask; import org.apache.doris.persist.gson.GsonUtils; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.logging.log4j.LogManager; @@ -324,7 +325,7 @@ public class MTMVJobManager { public List showJobs(String dbName) { List jobList = Lists.newArrayList(); - if (dbName == null) { + if (Strings.isNullOrEmpty(dbName)) { jobList.addAll(nameToJobMap.values()); } else { jobList.addAll(nameToJobMap.values().stream().filter(u -> u.getDBName().equals(dbName)) diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskManager.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskManager.java index 79f15ae4fc..44629a7844 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskManager.java @@ -29,6 +29,7 @@ import org.apache.doris.mtmv.metadata.MTMVJob; import org.apache.doris.mtmv.metadata.MTMVTask; import org.apache.doris.qe.ConnectContext; +import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Queues; @@ -278,7 +279,7 @@ public class MTMVTaskManager { public List showTasks(String dbName) { List taskList = Lists.newArrayList(); - if (dbName == null) { + if (Strings.isNullOrEmpty(dbName)) { for (Queue pTaskQueue : getPendingTaskMap().values()) { taskList.addAll(pTaskQueue.stream().map(MTMVTaskExecutor::getTask).collect(Collectors.toList())); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVJobStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVJobStmtTest.java index 50af285f24..87eb3e1977 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVJobStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVJobStmtTest.java @@ -24,17 +24,18 @@ import org.apache.doris.analysis.TableName; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; +import com.google.common.base.Strings; import org.junit.Assert; import org.junit.Test; public class ShowMTMVJobStmtTest { @Test public void testNormal() throws UserException, AnalysisException { - final Analyzer analyzer = AccessTestUtil.fetchBlockAnalyzer(); + final Analyzer analyzer = AccessTestUtil.fetchEmptyDbAnalyzer(); ShowMTMVJobStmt stmt = new ShowMTMVJobStmt(); stmt.analyze(analyzer); Assert.assertNull(stmt.getJobName()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals(13, stmt.getMetaData().getColumnCount()); Assert.assertEquals("SHOW MTMV JOB", stmt.toSql()); @@ -42,14 +43,14 @@ public class ShowMTMVJobStmtTest { stmt = new ShowMTMVJobStmt("job1"); stmt.analyze(analyzer); Assert.assertNotNull(stmt.getJobName()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV JOB FOR job1", stmt.toSql()); stmt = new ShowMTMVJobStmt("db1", null); stmt.analyze(analyzer); Assert.assertNull(stmt.getJobName()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV JOB FROM db1", stmt.toSql()); @@ -57,7 +58,7 @@ public class ShowMTMVJobStmtTest { stmt = new ShowMTMVJobStmt(null, tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getJobName()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV JOB ON `mv1`", stmt.toSql()); @@ -65,7 +66,7 @@ public class ShowMTMVJobStmtTest { stmt = new ShowMTMVJobStmt(null, tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getJobName()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV JOB ON `db2`.`mv1`", stmt.toSql()); @@ -73,7 +74,7 @@ public class ShowMTMVJobStmtTest { stmt = new ShowMTMVJobStmt("db1", tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getJobName()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV JOB FROM db1 ON `mv1`", stmt.toSql()); } @@ -86,4 +87,19 @@ public class ShowMTMVJobStmtTest { ShowMTMVJobStmt stmt = new ShowMTMVJobStmt("db1", tableName); stmt.analyze(analyzer); } + + + @Test + public void testDefaultDb() throws UserException { + final Analyzer analyzer = AccessTestUtil.fetchBlockAnalyzer(); + ShowMTMVJobStmt stmt = new ShowMTMVJobStmt(); + stmt.analyze(analyzer); + Assert.assertNull(stmt.getJobName()); + Assert.assertEquals("testCluster:testDb", stmt.getDbName()); + Assert.assertNull(stmt.getMVName()); + Assert.assertEquals(13, stmt.getMetaData().getColumnCount()); + Assert.assertEquals("SHOW MTMV JOB", stmt.toSql()); + Assert.assertFalse(stmt.isShowAllJobs()); + Assert.assertTrue(stmt.isShowAllJobsFromDb()); + } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVTaskStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVTaskStmtTest.java index 0d4e93e237..4c0d1f4d91 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVTaskStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/ShowMTMVTaskStmtTest.java @@ -24,17 +24,18 @@ import org.apache.doris.analysis.TableName; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; +import com.google.common.base.Strings; import org.junit.Assert; import org.junit.Test; public class ShowMTMVTaskStmtTest { @Test public void testNormal() throws UserException, AnalysisException { - final Analyzer analyzer = AccessTestUtil.fetchBlockAnalyzer(); + final Analyzer analyzer = AccessTestUtil.fetchEmptyDbAnalyzer(); ShowMTMVTaskStmt stmt = new ShowMTMVTaskStmt(); stmt.analyze(analyzer); Assert.assertNull(stmt.getTaskId()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals(14, stmt.getMetaData().getColumnCount()); Assert.assertEquals("SHOW MTMV TASK", stmt.toSql()); @@ -42,14 +43,14 @@ public class ShowMTMVTaskStmtTest { stmt = new ShowMTMVTaskStmt("task1"); stmt.analyze(analyzer); Assert.assertNotNull(stmt.getTaskId()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV TASK FOR task1", stmt.toSql()); stmt = new ShowMTMVTaskStmt("db1", null); stmt.analyze(analyzer); Assert.assertNull(stmt.getTaskId()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV TASK FROM db1", stmt.toSql()); @@ -57,7 +58,7 @@ public class ShowMTMVTaskStmtTest { stmt = new ShowMTMVTaskStmt(null, tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getTaskId()); - Assert.assertNull(stmt.getDbName()); + Assert.assertTrue(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV TASK ON `mv1`", stmt.toSql()); @@ -65,7 +66,7 @@ public class ShowMTMVTaskStmtTest { stmt = new ShowMTMVTaskStmt(null, tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getTaskId()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV TASK ON `db2`.`mv1`", stmt.toSql()); @@ -73,7 +74,7 @@ public class ShowMTMVTaskStmtTest { stmt = new ShowMTMVTaskStmt("db1", tableName); stmt.analyze(analyzer); Assert.assertNull(stmt.getTaskId()); - Assert.assertNotNull(stmt.getDbName()); + Assert.assertFalse(Strings.isNullOrEmpty(stmt.getDbName())); Assert.assertNotNull(stmt.getMVName()); Assert.assertEquals("SHOW MTMV TASK FROM db1 ON `mv1`", stmt.toSql()); } @@ -86,4 +87,18 @@ public class ShowMTMVTaskStmtTest { ShowMTMVTaskStmt stmt = new ShowMTMVTaskStmt("db1", tableName); stmt.analyze(analyzer); } + + @Test + public void testDefaultDb() throws UserException { + final Analyzer analyzer = AccessTestUtil.fetchBlockAnalyzer(); + ShowMTMVTaskStmt stmt = new ShowMTMVTaskStmt(); + stmt.analyze(analyzer); + Assert.assertNull(stmt.getTaskId()); + Assert.assertEquals("testCluster:testDb", stmt.getDbName()); + Assert.assertNull(stmt.getMVName()); + Assert.assertEquals(14, stmt.getMetaData().getColumnCount()); + Assert.assertEquals("SHOW MTMV TASK", stmt.toSql()); + Assert.assertFalse(stmt.isShowAllTasks()); + Assert.assertTrue(stmt.isShowAllTasksFromDb()); + } }