Skip to content

Commit

Permalink
[feature](Nereids) support set and use statement syntax only
Browse files Browse the repository at this point in the history
1. add a new Command type: UnsupportedCommand to handle the statement
   only support parse but could not execute.
2. support syntax about set and use
  • Loading branch information
morrySnow committed Apr 22, 2024
1 parent 3280443 commit af0287f
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,7 @@ VALUES: 'VALUES';
VARCHAR: 'VARCHAR';
VARIABLES: 'VARIABLES';
VARIANT: 'VARIANT';
VAULT: 'VAULT';
VERBOSE: 'VERBOSE';
VERSION: 'VERSION';
VIEW: 'VIEW';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,40 @@ statementBase
constraint #addConstraint
| ALTER TABLE table=multipartIdentifier
DROP CONSTRAINT constraintName=errorCapturingIdentifier #dropConstraint
| SHOW CONSTRAINTS FROM table=multipartIdentifier #showConstraint
| SHOW CONSTRAINTS FROM table=multipartIdentifier #showConstraint
| unsupportedStatement #unsupported
;

unsupportedStatement
: SET identifier AS DEFAULT STORAGE VAULT #setDefaultStorageVault
| SET PROPERTY (FOR user=identifierOrText)? propertyItemList #setUserProperties
| SET (GLOBAL | LOCAL | SESSION)? identifier EQ (expression | DEFAULT) #setSystemVariableWithType
| SET variable #setSystemVariableWithoutType
| SET (CHAR SET | CHARSET) (charsetName=identifierOrText | DEFAULT) #setCharset
| SET NAMES EQ expression #setNames
| SET (GLOBAL | LOCAL | SESSION)? TRANSACTION
( transactionAccessMode
| isolationLevel
| transactionAccessMode COMMA isolationLevel
| isolationLevel COMMA transactionAccessMode) #setTransaction
| SET NAMES (charsetName=identifierOrText | DEFAULT) (COLLATE collateName=identifierOrText | DEFAULT)? #setCollate
| SET PASSWORD (FOR userIdentify)? EQ (STRING_LITERAL | (PASSWORD LEFT_PAREN STRING_LITERAL RIGHT_PAREN)) #setPassword
| SET LDAP_ADMIN_PASSWORD EQ (STRING_LITERAL | (PASSWORD LEFT_PAREN STRING_LITERAL RIGHT_PAREN)) #setLdapAdminPassword
| USE (catalog=identifier DOT)? database=identifier #useDatabase
| USE ((catalog=identifier DOT)? database=identifier)? ATSIGN cluster=identifier #useCloudCluster
;

variable
: (ATSIGN ATSIGN (GLOBAL | LOCAL | SESSION)?)? identifier EQ (expression | DEFAULT) #setSystemVariable
| ATSIGN identifier EQ expression #setUserVariable
;

transactionAccessMode
: READ (ONLY | WRITE)
;

isolationLevel
: ISOLATION LEVEL ((READ UNCOMMITTED) | (READ COMMITTED) | (REPEATABLE READ) | (SERIALIZABLE))
;

constraint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@
import org.apache.doris.nereids.DorisParser.TimestampdiffContext;
import org.apache.doris.nereids.DorisParser.TypeConstructorContext;
import org.apache.doris.nereids.DorisParser.UnitIdentifierContext;
import org.apache.doris.nereids.DorisParser.UnsupportedContext;
import org.apache.doris.nereids.DorisParser.UpdateAssignmentContext;
import org.apache.doris.nereids.DorisParser.UpdateAssignmentSeqContext;
import org.apache.doris.nereids.DorisParser.UpdateContext;
Expand Down Expand Up @@ -377,6 +378,7 @@
import org.apache.doris.nereids.trees.plans.commands.ShowConstraintsCommand;
import org.apache.doris.nereids.trees.plans.commands.ShowCreateProcedureCommand;
import org.apache.doris.nereids.trees.plans.commands.ShowProcedureStatusCommand;
import org.apache.doris.nereids.trees.plans.commands.UnsupportedCommand;
import org.apache.doris.nereids.trees.plans.commands.UpdateCommand;
import org.apache.doris.nereids.trees.plans.commands.info.AlterMTMVInfo;
import org.apache.doris.nereids.trees.plans.commands.info.AlterMTMVPropertyInfo;
Expand Down Expand Up @@ -3480,4 +3482,9 @@ public LogicalPlan visitShowCreateProcedure(ShowCreateProcedureContext ctx) {
FuncNameInfo procedureName = new FuncNameInfo(nameParts);
return ParserUtils.withOrigin(ctx, () -> new ShowCreateProcedureCommand(procedureName));
}

@Override
public Object visitUnsupported(UnsupportedContext ctx) {
return UnsupportedCommand.INSTANCE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -151,5 +151,7 @@ public enum PlanType {
DROP_PROCEDURE_COMMAND,
SHOW_PROCEDURE_COMMAND,
SHOW_CREATE_PROCEDURE_COMMAND,
CREATE_VIEW_COMMAND
CREATE_VIEW_COMMAND,

UNSUPPORTED_COMMAND
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// 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.common.AnalysisException;
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.StmtExecutor;

/**
* all Nereids' unsupported command
*/
public class UnsupportedCommand extends Command implements ForwardWithSync {

public static UnsupportedCommand INSTANCE = new UnsupportedCommand();

public UnsupportedCommand() {
super(PlanType.UNSUPPORTED_COMMAND);
}

@Override
public void run(ConnectContext ctx, StmtExecutor executor) throws Exception {
ctx.getSessionVariable().enableFallbackToOriginalPlannerOnce();
throw new AnalysisException("unsupported command");
}

@Override
public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
return visitor.visitUnsupportedCommand(this, context);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.apache.doris.nereids.trees.plans.commands.ShowConstraintsCommand;
import org.apache.doris.nereids.trees.plans.commands.ShowCreateProcedureCommand;
import org.apache.doris.nereids.trees.plans.commands.ShowProcedureStatusCommand;
import org.apache.doris.nereids.trees.plans.commands.UnsupportedCommand;
import org.apache.doris.nereids.trees.plans.commands.UpdateCommand;
import org.apache.doris.nereids.trees.plans.commands.insert.BatchInsertIntoTableCommand;
import org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand;
Expand Down Expand Up @@ -161,4 +162,8 @@ default R visitShowCreateProcedureCommand(ShowCreateProcedureCommand showCreateP
default R visitCreateViewCommand(CreateViewCommand createViewCommand, C context) {
return visitCommand(createViewCommand, context);
}

default R visitUnsupportedCommand(UnsupportedCommand unsupportedCommand, C context) {
return visitCommand(unsupportedCommand, context);
}
}

0 comments on commit af0287f

Please sign in to comment.