diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index 368847bac5f270..26cfd605143dc1 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -266,6 +266,7 @@ supportedShowStatement | SHOW CREATE MATERIALIZED VIEW mvName=identifier ON tableName=multipartIdentifier #showCreateMaterializedView | SHOW (WARNINGS | ERRORS) limitClause? #showWarningErrors + | SHOW COUNT LEFT_PAREN ASTERISK RIGHT_PAREN (WARNINGS | ERRORS) #showWarningErrorCount | SHOW BACKENDS #showBackends | SHOW REPLICA DISTRIBUTION FROM baseTableRef #showReplicaDistribution | SHOW FULL? TRIGGERS ((FROM | IN) database=multipartIdentifier)? wildWhere? #showTriggers @@ -335,7 +336,6 @@ unsupportedShowStatement | SHOW CATALOG name=identifier #showCatalog | SHOW FULL? (COLUMNS | FIELDS) (FROM | IN) tableName=multipartIdentifier ((FROM | IN) database=multipartIdentifier)? wildWhere? #showColumns - | SHOW COUNT LEFT_PAREN ASTERISK RIGHT_PAREN (WARNINGS | ERRORS) #showWaringErrorCount | SHOW LOAD WARNINGS ((((FROM | IN) database=multipartIdentifier)? wildWhere? limitClause?) | (ON url=STRING_LITERAL)) #showLoadWarings | SHOW STREAM? LOAD ((FROM | IN) database=multipartIdentifier)? wildWhere? diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 7bc328e238d99d..4e3bef9e74b510 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -292,6 +292,7 @@ import org.apache.doris.nereids.DorisParser.ShowTriggersContext; import org.apache.doris.nereids.DorisParser.ShowVariablesContext; import org.apache.doris.nereids.DorisParser.ShowViewContext; +import org.apache.doris.nereids.DorisParser.ShowWarningErrorCountContext; import org.apache.doris.nereids.DorisParser.ShowWarningErrorsContext; import org.apache.doris.nereids.DorisParser.ShowWhitelistContext; import org.apache.doris.nereids.DorisParser.SimpleColumnDefContext; @@ -612,6 +613,7 @@ import org.apache.doris.nereids.trees.plans.commands.ShowTriggersCommand; import org.apache.doris.nereids.trees.plans.commands.ShowVariablesCommand; import org.apache.doris.nereids.trees.plans.commands.ShowViewCommand; +import org.apache.doris.nereids.trees.plans.commands.ShowWarningErrorCountCommand; import org.apache.doris.nereids.trees.plans.commands.ShowWarningErrorsCommand; import org.apache.doris.nereids.trees.plans.commands.ShowWhiteListCommand; import org.apache.doris.nereids.trees.plans.commands.SyncCommand; @@ -5129,6 +5131,12 @@ public LogicalPlan visitAdminCheckTablets(AdminCheckTabletsContext ctx) { return new AdminCheckTabletsCommand(tabletIdLists, properties); } + @Override + public LogicalPlan visitShowWarningErrorCount(ShowWarningErrorCountContext ctx) { + boolean isWarning = ctx.WARNINGS() != null; + return new ShowWarningErrorCountCommand(isWarning); + } + @Override public LogicalPlan visitShowStatus(ShowStatusContext ctx) { String scope = null; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PlanType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PlanType.java index 407610fbe08add..b161b59ca45441 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PlanType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PlanType.java @@ -250,6 +250,7 @@ public enum PlanType { SHOW_AUTHORS_COMMAND, SHOW_VIEW_COMMAND, SHOW_WARNING_ERRORS_COMMAND, + SHOW_WARNING_ERROR_COUNT_COMMAND, SHOW_WHITE_LIST_COMMAND, SHOW_TABLETS_BELONG_COMMAND, SYNC_COMMAND, diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowWarningErrorCountCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowWarningErrorCountCommand.java new file mode 100644 index 00000000000000..ef1d36b30fc4e0 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowWarningErrorCountCommand.java @@ -0,0 +1,64 @@ +// 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.nereids.trees.plans.commands; + +import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; +import org.apache.doris.nereids.trees.plans.PlanType; +import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor; +import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.ShowResultSet; +import org.apache.doris.qe.ShowResultSetMetaData; +import org.apache.doris.qe.StmtExecutor; + +import com.google.common.collect.Lists; + +import java.util.List; + +/** + * Represents the command for SHOW COUNT(*) WARNINGS | ERRORS. + */ +public class ShowWarningErrorCountCommand extends ShowCommand { + private static final ShowResultSetMetaData META_DATA = + ShowResultSetMetaData.builder() + .addColumn(new Column("COUNT", ScalarType.createType(PrimitiveType.BIGINT))) + .build(); + private final boolean isWarning; + + public ShowWarningErrorCountCommand(boolean isWarning) { + super(PlanType.SHOW_WARNING_ERROR_COUNT_COMMAND); + this.isWarning = isWarning; + } + + @Override + public ShowResultSet doRun(ConnectContext ctx, StmtExecutor executor) { + List> rowSet = Lists.newArrayList(); + + return new ShowResultSet(META_DATA, rowSet); + } + + public boolean isWarning() { + return isWarning; + } + + @Override + public R accept(PlanVisitor visitor, C context) { + return visitor.visitShowWarningErrorCountCommand(this, context); + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/visitor/CommandVisitor.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/visitor/CommandVisitor.java index 122e513a08cb57..e5f6373eb66b3c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/visitor/CommandVisitor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/visitor/CommandVisitor.java @@ -136,6 +136,7 @@ import org.apache.doris.nereids.trees.plans.commands.ShowTriggersCommand; import org.apache.doris.nereids.trees.plans.commands.ShowVariablesCommand; import org.apache.doris.nereids.trees.plans.commands.ShowViewCommand; +import org.apache.doris.nereids.trees.plans.commands.ShowWarningErrorCountCommand; import org.apache.doris.nereids.trees.plans.commands.ShowWarningErrorsCommand; import org.apache.doris.nereids.trees.plans.commands.ShowWhiteListCommand; import org.apache.doris.nereids.trees.plans.commands.SyncCommand; @@ -309,6 +310,10 @@ default R visitCallCommand(CallCommand callCommand, C context) { return visitCommand(callCommand, context); } + default R visitShowWarningErrorCountCommand(ShowWarningErrorCountCommand showWarnErrorCountCommand, C context) { + return visitCommand(showWarnErrorCountCommand, context); + } + default R visitShowSyncJobCommand(ShowSyncJobCommand showSyncJobCommand, C context) { return visitCommand(showSyncJobCommand, context); } diff --git a/regression-test/suites/nereids_p0/show/test_show_warning_error_count_command.groovy b/regression-test/suites/nereids_p0/show/test_show_warning_error_count_command.groovy new file mode 100644 index 00000000000000..d97426c8822fd8 --- /dev/null +++ b/regression-test/suites/nereids_p0/show/test_show_warning_error_count_command.groovy @@ -0,0 +1,32 @@ +// 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. + +suite("test_show_warning_error_count_command", "nereids_p0") { + + try { + // Generate some warnings + sql("SELECT 1/0;") // This should generate a warning or error? + + // Test SHOW COUNT(*) WARNINGS + checkNereidsExecute("""SHOW COUNT(*) WARNINGS""") + + // Test SHOW COUNT(*) ERRORS + checkNereidsExecute("""SHOW COUNT(*) ERRORS""") + } finally { + // Clean up if needed + } +}