Skip to content

Commit

Permalink
[Enhancement] (nereids)implement showWaringErrorCountCommand in nerei…
Browse files Browse the repository at this point in the history
…ds (#45829)

Issue Number: close #42751
  • Loading branch information
msridhar78 authored Dec 24, 2024
1 parent 1392084 commit d41147f
Showing 6 changed files with 111 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -267,6 +267,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
@@ -339,7 +340,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?
Original file line number Diff line number Diff line change
@@ -293,6 +293,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;
@@ -617,6 +618,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;
@@ -5151,6 +5153,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;
Original file line number Diff line number Diff line change
@@ -251,6 +251,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,
Original file line number Diff line number Diff line change
@@ -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<List<String>> rowSet = Lists.newArrayList();

return new ShowResultSet(META_DATA, rowSet);
}

public boolean isWarning() {
return isWarning;
}

@Override
public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
return visitor.visitShowWarningErrorCountCommand(this, context);
}
}
Original file line number Diff line number Diff line change
@@ -137,6 +137,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;
@@ -310,6 +311,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);
}
Original file line number Diff line number Diff line change
@@ -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
}
}

0 comments on commit d41147f

Please sign in to comment.