From e324caa3f344b4c73646180acb50d24ef637e81c Mon Sep 17 00:00:00 2001 From: stalary Date: Mon, 28 Jun 2021 22:56:50 +0800 Subject: [PATCH 1/4] MOD: mod some code --- docs/.vuepress/sidebar/en.js | 1 + docs/.vuepress/sidebar/zh-CN.js | 1 + .../SHOW CREATE ROUTINE LOAD.md | 42 ++++++++++ .../SHOW CREATE ROUTINE LOAD.md | 42 ++++++++++ fe/fe-core/src/main/cup/sql_parser.cup | 15 +++- .../analysis/ShowCreateRoutineLoadStmt.java | 65 +++++++++++++++ .../load/routineload/KafkaRoutineLoadJob.java | 16 ++++ .../load/routineload/RoutineLoadJob.java | 80 +++++++++++++++++++ .../org/apache/doris/qe/ShowExecutor.java | 55 +++++++++++++ 9 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 docs/en/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md create mode 100644 docs/zh-CN/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md create mode 100644 fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java diff --git a/docs/.vuepress/sidebar/en.js b/docs/.vuepress/sidebar/en.js index b1d7660f3bf8b4..cb50c2b07662d5 100644 --- a/docs/.vuepress/sidebar/en.js +++ b/docs/.vuepress/sidebar/en.js @@ -484,6 +484,7 @@ module.exports = [ "SHOW ALTER", "SHOW BACKUP", "SHOW CREATE FUNCTION", + "SHOW CREATE ROUTINE LOAD", "SHOW DATA", "SHOW DATABASES", "SHOW DELETE", diff --git a/docs/.vuepress/sidebar/zh-CN.js b/docs/.vuepress/sidebar/zh-CN.js index c8ff8582915cd9..1a7dfc91036d1b 100644 --- a/docs/.vuepress/sidebar/zh-CN.js +++ b/docs/.vuepress/sidebar/zh-CN.js @@ -487,6 +487,7 @@ module.exports = [ "SHOW ALTER", "SHOW BACKUP", "SHOW CREATE FUNCTION", + "SHOW CREATE ROUTINE LOAD", "SHOW DATA", "SHOW DATABASES", "SHOW DELETE", diff --git a/docs/en/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md b/docs/en/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md new file mode 100644 index 00000000000000..ce783c5cde82e1 --- /dev/null +++ b/docs/en/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md @@ -0,0 +1,42 @@ +--- +{ +"title": "SHOW CREATE ROUTINE LOAD", +"language": "en" +} +--- + + + +# SHOW CREATE ROUTINE LOAD +## description + The statement is used to show the routine load job creation statement of user-defined + grammar: + SHOW [ALL] CREATE ROUTINE LOAD for load_name; + + Description: + `ALL`: optional,Is for getting all jobs, including history jobs + `load_name`: routine load name + +## example + 1. Show the creation statement of the specified routine load under the default db + SHOW CREATE ROUTINE LOAD for test_load + +## keyword + SHOW,CREATE,ROUTINE,LOAD \ No newline at end of file diff --git a/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md new file mode 100644 index 00000000000000..922db383c3a15e --- /dev/null +++ b/docs/zh-CN/sql-reference/sql-statements/Data Manipulation/SHOW CREATE ROUTINE LOAD.md @@ -0,0 +1,42 @@ +--- +{ +"title": "SHOW CREATE ROUTINE LOAD", +"language": "zh-CN" +} +--- + + + +# SHOW CREATE ROUTINE LOAD +## description + 该语句用于展示例行导入作业的创建语句 + 语法: + SHOW [ALL] CREATE ROUTINE LOAD for load_name; + + 说明: + `ALL`: 可选参数,代表获取所有作业,包括历史作业 + `load_name`: 例行导入作业名称 + +## example + 1. 展示默认db下指定例行导入作业的创建语句 + SHOW CREATE ROUTINE LOAD for test_load + +## keyword + SHOW,CREATE,ROUTINE,LOAD \ No newline at end of file diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index 78318418de4b56..d3610db356be29 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -284,7 +284,7 @@ terminal String COMMENTED_PLAN_HINTS; nonterminal List stmts; nonterminal StatementBase stmt, show_stmt, show_param, help_stmt, load_stmt, create_routine_load_stmt, pause_routine_load_stmt, resume_routine_load_stmt, stop_routine_load_stmt, - show_routine_load_stmt, show_routine_load_task_stmt, + show_routine_load_stmt, show_routine_load_task_stmt, show_create_routine_load_stmt, describe_stmt, alter_stmt, use_stmt, kill_stmt, drop_stmt, recover_stmt, grant_stmt, revoke_stmt, create_stmt, set_stmt, sync_stmt, cancel_stmt, cancel_param, delete_stmt, link_stmt, migrate_stmt, enter_stmt, unsupported_stmt, export_stmt, admin_stmt, truncate_stmt, @@ -666,6 +666,8 @@ stmt ::= {: RESULT = stmt; :} | show_routine_load_task_stmt : stmt {: RESULT = stmt; :} + | show_create_routine_load_stmt : stmt + {: RESULT = stmt; :} | cancel_stmt : stmt {: RESULT = stmt; :} | delete_stmt : stmt @@ -1681,6 +1683,17 @@ show_routine_load_task_stmt ::= :} ; +show_create_routine_load_stmt ::= + KW_SHOW KW_CREATE KW_ROUTINE KW_LOAD KW_FOR job_label:jobLabel + {: + RESULT = new ShowCreateRoutineLoadStmt(jobLabel, false); + :} + | KW_SHOW KW_ALL KW_CREATE KW_ROUTINE KW_LOAD KW_FOR job_label:jobLabel + {: + RESULT = new ShowCreateRoutineLoadStmt(jobLabel, true); + :} + ; + // Grant statement grant_stmt ::= KW_GRANT privilege_list:privs KW_ON tbl_pattern:tblPattern KW_TO user_identity:userId diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java new file mode 100644 index 00000000000000..d0ae92b6ef8ece --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java @@ -0,0 +1,65 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.doris.analysis; + +import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.ScalarType; +import org.apache.doris.common.AnalysisException; +import org.apache.doris.qe.ShowResultSetMetaData; + +// SHOW CREATE ROUTINE LOAD statement. +public class ShowCreateRoutineLoadStmt extends ShowStmt { + + private static final ShowResultSetMetaData META_DATA = + ShowResultSetMetaData.builder() + .addColumn(new Column("Routine Load Id", ScalarType.createVarchar(20))) + .addColumn(new Column("Routine Load Name", ScalarType.createVarchar(20))) + .addColumn(new Column("Create Routine Load", ScalarType.createVarchar(30))) + .build(); + + private final LabelName labelName; + + private final boolean includeHistory; + + public ShowCreateRoutineLoadStmt(LabelName labelName, boolean includeHistory) { + this.labelName = labelName; + this.includeHistory = includeHistory; + } + + public String getDb() { + return labelName.getDbName(); + } + + public String getLabel() { + return labelName.getLabelName(); + } + + public boolean isIncludeHistory() { + return includeHistory; + } + + @Override + public void analyze(Analyzer analyzer) throws AnalysisException { + labelName.analyze(analyzer); + } + + @Override + public ShowResultSetMetaData getMetaData() { + return META_DATA; + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java index e66751572f4df2..a4e0d8beac2192 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java @@ -63,6 +63,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.HashMap; import java.util.TimeZone; import java.util.UUID; @@ -494,6 +495,21 @@ protected String customPropertiesJsonToString() { return gson.toJson(customProperties); } + @Override + protected Map getDataSourceProperties() { + Map dataSourceProperties = Maps.newHashMap(); + dataSourceProperties.put("kafka_broker_list", brokerList); + dataSourceProperties.put("kafka_topic", topic); + return dataSourceProperties; + } + + @Override + protected Map getCustomProperties() { + Map ret = new HashMap<>(); + customProperties.forEach((k, v) -> ret.put("property." + k, v)); + return ret; + } + @Override public void write(DataOutput out) throws IOException { super.write(out); diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java index 3ca38250912429..beea0dac95ea21 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java @@ -1333,6 +1333,82 @@ public List> getTasksShowInfo() { return rows; } + public String getShowCreateInfo() { + Database db = Catalog.getCurrentCatalog().getDb(dbId); + Table tbl = (db == null) ? null : db.getTable(tableId); + StringBuilder sb = new StringBuilder(); + // 1.job_name + sb.append("CREATE ROUTINE LOAD ").append(name); + // 2.tbl_name + sb.append(" ON ").append(tbl == null ? String.valueOf(tableId) : tbl.getName()).append("\n"); + // 3.merge_type + sb.append("WITH ").append(mergeType.toString()).append("\n"); + // 4.load_properties + // 4.1.column_separator + if (columnSeparator != null) { + sb.append("COLUMNS TERMINATED BY \"").append(columnSeparator.getSeparator()).append("\",\n"); + } + // 4.2.columns_mapping + if (columnDescs != null) { + sb.append("COLUMNS(").append(Joiner.on(",").join(columnDescs.descs)).append("),\n"); + } + // 4.3.where_predicates + if (whereExpr != null) { + sb.append("WHERE ").append(whereExpr.toSql()).append(",\n"); + } + // 4.4.partitions + if (partitions != null) { + sb.append("PARTITION(").append(Joiner.on(",").join(partitions.getPartitionNames())).append("),\n"); + } + // 4.5.delete_on_predicates + if (deleteCondition != null) { + sb.append("DELETE ON ").append(deleteCondition.toSql()).append(",\n"); + } + // 4.6.source_sequence + if (sequenceCol != null) { + sb.append("ORDER BY ").append(sequenceCol).append(",\n"); + } + // 4.7.preceding_predicates + if (precedingFilter != null) { + sb.append("PRECEDING FILTER ").append(precedingFilter.toSql()).append(",\n"); + } + // remove the last , + sb.replace(sb.length() - 2, sb.length() - 1, ""); + // 5.job_properties + sb.append("PROPERTIES\n(\n"); + appendProperties(sb, CreateRoutineLoadStmt.DESIRED_CONCURRENT_NUMBER_PROPERTY, desireTaskConcurrentNum, false); + appendProperties(sb, CreateRoutineLoadStmt.MAX_BATCH_INTERVAL_SEC_PROPERTY, maxBatchIntervalS, false); + appendProperties(sb, CreateRoutineLoadStmt.MAX_BATCH_ROWS_PROPERTY, maxBatchRows, false); + appendProperties(sb, CreateRoutineLoadStmt.MAX_BATCH_SIZE_PROPERTY, maxBatchSizeBytes, false); + appendProperties(sb, CreateRoutineLoadStmt.MAX_ERROR_NUMBER_PROPERTY, maxErrorNum, false); + appendProperties(sb, LoadStmt.STRICT_MODE, isStrictMode(), false); + appendProperties(sb, LoadStmt.TIMEZONE, getTimezone(), false); + appendProperties(sb, PROPS_FORMAT, getFormat(), false); + appendProperties(sb, PROPS_JSONPATHS, getJsonPaths(), false); + appendProperties(sb, PROPS_STRIP_OUTER_ARRAY, isStripOuterArray(), false); + appendProperties(sb, PROPS_JSONROOT, getJsonRoot(), true); + sb.append(")\n"); + // 6. data_source + sb.append("FROM ").append(dataSourceType).append("\n"); + // 7. data_source_properties + sb.append("(\n"); + getDataSourceProperties().forEach((k, v) -> appendProperties(sb, k, v, false)); + getCustomProperties().forEach((k, v) -> appendProperties(sb, k, v, false)); + // remove the last , + sb.replace(sb.length() - 2, sb.length() - 1, ""); + sb.append(");"); + return sb.toString(); + } + + public void appendProperties(StringBuilder sb, String key, Object value, boolean end) { + sb.append("\"").append(key).append("\"").append(" = ").append("\"").append(value).append("\""); + if (!end) { + sb.append(",\n"); + } else { + sb.append("\n"); + } + } + public List getShowStatistic() { Database db = Catalog.getCurrentCatalog().getDb(dbId); @@ -1385,6 +1461,10 @@ private String jobPropertiesToJsonString() { abstract String customPropertiesJsonToString(); + abstract Map getDataSourceProperties(); + + abstract Map getCustomProperties(); + public boolean needRemove() { if (!isFinal()) { return false; diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java index 42e035c800b6f7..ef2384589449b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -33,6 +33,7 @@ import org.apache.doris.analysis.ShowColumnStmt; import org.apache.doris.analysis.ShowCreateDbStmt; import org.apache.doris.analysis.ShowCreateFunctionStmt; +import org.apache.doris.analysis.ShowCreateRoutineLoadStmt; import org.apache.doris.analysis.ShowCreateTableStmt; import org.apache.doris.analysis.ShowDataStmt; import org.apache.doris.analysis.ShowDbIdStmt; @@ -226,6 +227,8 @@ public ShowResultSet execute() throws AnalysisException { handleShowRoutineLoad(); } else if (stmt instanceof ShowRoutineLoadTaskStmt) { handleShowRoutineLoadTask(); + } else if (stmt instanceof ShowCreateRoutineLoadStmt) { + handleShowCreateRoutineLoad(); } else if (stmt instanceof ShowDeleteStmt) { handleShowDelete(); } else if (stmt instanceof ShowAlterStmt) { @@ -1829,6 +1832,58 @@ private void handleShowQueryProfile() throws AnalysisException { resultSet = new ShowResultSet(showStmt.getMetaData(), rows); } + private void handleShowCreateRoutineLoad() throws AnalysisException { + ShowCreateRoutineLoadStmt showCreateRoutineLoadStmt = (ShowCreateRoutineLoadStmt) stmt; + List> rows = Lists.newArrayList(); + String dbName = showCreateRoutineLoadStmt.getDb(); + String labelName = showCreateRoutineLoadStmt.getLabel(); + // if include history return all create load + if (showCreateRoutineLoadStmt.isIncludeHistory()) { + List routineLoadJobList = new ArrayList<>(); + try { + routineLoadJobList = Catalog.getCurrentCatalog().getRoutineLoadManager().getJob(dbName, labelName, true); + } catch (MetaNotFoundException e) { + LOG.warn(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, labelName) + .add("error_msg", "Routine load cannot be found by this name") + .build(), e); + } + if (routineLoadJobList == null) { + resultSet = new ShowResultSet(showCreateRoutineLoadStmt.getMetaData(), rows); + return; + } + for (RoutineLoadJob job : routineLoadJobList) { + String tableName = ""; + try { + tableName = job.getTableName(); + } catch (MetaNotFoundException e) { + LOG.warn(new LogBuilder(LogKey.ROUTINE_LOAD_JOB, job.getId()) + .add("error_msg", "The table name for this routine load does not exist") + .build(), e); + } + if (!Catalog.getCurrentCatalog().getAuth().checkTblPriv(ConnectContext.get(), + dbName, + tableName, + PrivPredicate.LOAD)) { + resultSet = new ShowResultSet(showCreateRoutineLoadStmt.getMetaData(), rows); + return; + } + rows.add(Lists.newArrayList(String.valueOf(job.getId()), showCreateRoutineLoadStmt.getLabel(), job.getShowCreateInfo())); + } + } else { + // if job exists + RoutineLoadJob routineLoadJob; + try { + routineLoadJob = Catalog.getCurrentCatalog().getRoutineLoadManager().checkPrivAndGetJob(dbName, labelName); + // get routine load info + rows.add(Lists.newArrayList(String.valueOf(routineLoadJob.getId()), showCreateRoutineLoadStmt.getLabel(), routineLoadJob.getShowCreateInfo())); + } catch (MetaNotFoundException | DdlException e) { + LOG.warn(e.getMessage(), e); + throw new AnalysisException(e.getMessage()); + } + } + resultSet = new ShowResultSet(showCreateRoutineLoadStmt.getMetaData(), rows); + } + } From a2783c1a54f453042124fc06a63145822637d848 Mon Sep 17 00:00:00 2001 From: stalary Date: Tue, 29 Jun 2021 07:54:13 +0800 Subject: [PATCH 2/4] ADD: unit_test --- .../load/routineload/RoutineLoadJob.java | 8 +++-- .../load/routineload/RoutineLoadJobTest.java | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java index beea0dac95ea21..f55e904e18f4c7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java @@ -1342,7 +1342,7 @@ public String getShowCreateInfo() { // 2.tbl_name sb.append(" ON ").append(tbl == null ? String.valueOf(tableId) : tbl.getName()).append("\n"); // 3.merge_type - sb.append("WITH ").append(mergeType.toString()).append("\n"); + sb.append("WITH ").append(mergeType.name()).append("\n"); // 4.load_properties // 4.1.column_separator if (columnSeparator != null) { @@ -1373,7 +1373,9 @@ public String getShowCreateInfo() { sb.append("PRECEDING FILTER ").append(precedingFilter.toSql()).append(",\n"); } // remove the last , - sb.replace(sb.length() - 2, sb.length() - 1, ""); + if (",".equals(sb.charAt(sb.length() - 2))) { + sb.replace(sb.length() - 2, sb.length() - 1, ""); + } // 5.job_properties sb.append("PROPERTIES\n(\n"); appendProperties(sb, CreateRoutineLoadStmt.DESIRED_CONCURRENT_NUMBER_PROPERTY, desireTaskConcurrentNum, false); @@ -1400,7 +1402,7 @@ public String getShowCreateInfo() { return sb.toString(); } - public void appendProperties(StringBuilder sb, String key, Object value, boolean end) { + private static void appendProperties(StringBuilder sb, String key, Object value, boolean end) { sb.append("\"").append(key).append("\"").append(" = ").append("\"").append(value).append("\""); if (!end) { sb.append(",\n"); diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java index 9a295422d7b6ff..bc5493ae4f0346 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java @@ -17,6 +17,7 @@ package org.apache.doris.load.routineload; +import java.util.HashMap; import org.apache.doris.analysis.CreateRoutineLoadStmt; import org.apache.doris.analysis.SqlParser; import org.apache.doris.catalog.Catalog; @@ -313,4 +314,36 @@ public void testGetBeIdToConcurrentTaskNum(@Injectable RoutineLoadTaskInfo routi Assert.assertEquals(2, (int) beIdConcurrentTasksNum.get(1L)); } + @Test + public void testGetShowCreateInfo() throws UserException { + KafkaRoutineLoadJob routineLoadJob = new KafkaRoutineLoadJob(111L, "test_load", "test", 1, + 11, "localhost:9092", "test_topic"); + Deencapsulation.setField(routineLoadJob, "maxErrorNum", 10); + Deencapsulation.setField(routineLoadJob, "maxBatchRows", 10); + Deencapsulation.setField(routineLoadJob, "maxBatchRows", 10); + String showCreateInfo = routineLoadJob.getShowCreateInfo(); + String expect = "CREATE ROUTINE LOAD test_load ON 11\n" + + "WITH APPEND\n" + + "PROPERTIES\n" + + "(\n" + + "\"desired_concurrent_number\" = \"0\",\n" + + "\"max_batch_interval\" = \"10\",\n" + + "\"max_batch_rows\" = \"10\",\n" + + "\"max_batch_size\" = \"104857600\",\n" + + "\"max_error_number\" = \"10\",\n" + + "\"strict_mode\" = \"false\",\n" + + "\"timezone\" = \"Asia/Shanghai\",\n" + + "\"format\" = \"csv\",\n" + + "\"jsonpaths\" = \"\",\n" + + "\"strip_outer_array\" = \"false\",\n" + + "\"json_root\" = \"\"\n" + + ")\n" + + "FROM KAFKA\n" + + "(\n" + + "\"kafka_broker_list\" = \"localhost:9092\",\n" + + "\"kafka_topic\" = \"test_topic\"\n" + + ");"; + Assert.assertEquals(expect, showCreateInfo); + } + } From 8af66ada93fe572a6dab7ee23b55536b3925f46c Mon Sep 17 00:00:00 2001 From: stalary Date: Tue, 29 Jun 2021 10:33:20 +0800 Subject: [PATCH 3/4] MOD: clean import --- .../org/apache/doris/load/routineload/RoutineLoadJobTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java index bc5493ae4f0346..8f049ba9dc0d7e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/RoutineLoadJobTest.java @@ -17,7 +17,6 @@ package org.apache.doris.load.routineload; -import java.util.HashMap; import org.apache.doris.analysis.CreateRoutineLoadStmt; import org.apache.doris.analysis.SqlParser; import org.apache.doris.catalog.Catalog; From 7879c34df65719dda132dcf617342fa1cff60eee Mon Sep 17 00:00:00 2001 From: stalary Date: Thu, 1 Jul 2021 14:12:51 +0800 Subject: [PATCH 4/4] FIX: continue replace return --- fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java index ef2384589449b3..1100380eb2ad19 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -1865,7 +1865,7 @@ private void handleShowCreateRoutineLoad() throws AnalysisException { tableName, PrivPredicate.LOAD)) { resultSet = new ShowResultSet(showCreateRoutineLoadStmt.getMetaData(), rows); - return; + continue; } rows.add(Lists.newArrayList(String.valueOf(job.getId()), showCreateRoutineLoadStmt.getLabel(), job.getShowCreateInfo())); }