morrySnow commented on code in PR #35318:
URL: https://github.com/apache/doris/pull/35318#discussion_r1621889220


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java:
##########
@@ -0,0 +1,78 @@
+// 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.expressions;
+
+import org.apache.doris.catalog.MysqlColType;
+import org.apache.doris.nereids.exceptions.UnboundException;
+import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.trees.plans.PlaceholderId;
+import org.apache.doris.nereids.types.DataType;
+import org.apache.doris.nereids.types.NullType;
+
+import java.util.Optional;
+
+/**
+ * Placeholder for prepared statement
+ */
+public class Placeholder extends Expression implements LeafExpression {
+    private final PlaceholderId exprId;

Review Comment:
   rename exprId to placeHolderId
   ```suggestion
       private final PlaceholderId placeholderId;
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java:
##########
@@ -541,6 +542,13 @@ public Expression visitNot(Not not, 
ExpressionRewriteContext context) {
         return expr;
     }
 
+    @Override
+    public Expression visitPlaceholder(Placeholder placeholderExpr, 
ExpressionRewriteContext context) {

Review Comment:
   ```suggestion
       public Expression visitPlaceholder(Placeholder placeholder, 
ExpressionRewriteContext context) {
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java:
##########
@@ -505,6 +506,10 @@ public R visitMatchPhraseEdge(MatchPhraseEdge 
matchPhraseEdge, C context) {
         return visitMatch(matchPhraseEdge, context);
     }
 
+    public R visitPlaceholder(Placeholder placeholderExpr, C context) {

Review Comment:
   ```suggestion
       public R visitPlaceholder(Placeholder placeholder, C context) {
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java:
##########
@@ -0,0 +1,120 @@
+// 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.mysql.MysqlCommand;
+import org.apache.doris.nereids.trees.expressions.Placeholder;
+import org.apache.doris.nereids.trees.plans.PlanType;
+import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
+import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
+import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.OriginStatement;
+import org.apache.doris.qe.PreparedStatementContext;
+import org.apache.doris.qe.StmtExecutor;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Prepared Statement
+ */
+public class PrepareCommand extends Command {
+    private static final Logger LOG = LogManager.getLogger(StmtExecutor.class);
+
+    private final List<Placeholder> placeholders = new ArrayList<>();
+    private final LogicalPlan logicalPlan;
+
+    private final String name;
+
+    private final OriginStatement originalStmt;
+
+    /**
+     * constructor
+     * @param name the statement name which represents statement id for 
prepared statement
+     * @param plan the inner statement
+     * @param placeholders the parameters for this prepared statement
+     * @param originalStmt original statement from StmtExecutor
+     */
+    public PrepareCommand(String name, LogicalPlan plan, List<Placeholder> 
placeholders,
+                OriginStatement originalStmt) {
+        super(PlanType.PREPARED_COMMAND);
+        this.logicalPlan = plan;
+        this.placeholders.addAll(placeholders);
+        this.name = name;
+        this.originalStmt = originalStmt;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<Placeholder> params() {
+        return placeholders;
+    }
+
+    public int getParamLen() {
+        return placeholders.size();
+    }
+
+    public LogicalPlan getInnerPlan() {

Review Comment:
   ```suggestion
       public LogicalPlan getLogicalPlan() {
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java:
##########
@@ -0,0 +1,78 @@
+// 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.expressions;
+
+import org.apache.doris.catalog.MysqlColType;
+import org.apache.doris.nereids.exceptions.UnboundException;
+import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.trees.plans.PlaceholderId;
+import org.apache.doris.nereids.types.DataType;
+import org.apache.doris.nereids.types.NullType;
+
+import java.util.Optional;
+
+/**
+ * Placeholder for prepared statement
+ */
+public class Placeholder extends Expression implements LeafExpression {
+    private final PlaceholderId exprId;
+    private final Optional<MysqlColType> mysqlColType;
+
+    public Placeholder(PlaceholderId exprId) {

Review Comment:
   ```suggestion
       public Placeholder(PlaceholderId placeholderId) {
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java:
##########
@@ -0,0 +1,120 @@
+// 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.mysql.MysqlCommand;
+import org.apache.doris.nereids.trees.expressions.Placeholder;
+import org.apache.doris.nereids.trees.plans.PlanType;
+import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
+import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
+import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.OriginStatement;
+import org.apache.doris.qe.PreparedStatementContext;
+import org.apache.doris.qe.StmtExecutor;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Prepared Statement
+ */
+public class PrepareCommand extends Command {
+    private static final Logger LOG = LogManager.getLogger(StmtExecutor.class);
+
+    private final List<Placeholder> placeholders = new ArrayList<>();
+    private final LogicalPlan logicalPlan;
+
+    private final String name;
+
+    private final OriginStatement originalStmt;
+
+    /**
+     * constructor
+     * @param name the statement name which represents statement id for 
prepared statement
+     * @param plan the inner statement
+     * @param placeholders the parameters for this prepared statement
+     * @param originalStmt original statement from StmtExecutor
+     */
+    public PrepareCommand(String name, LogicalPlan plan, List<Placeholder> 
placeholders,
+                OriginStatement originalStmt) {
+        super(PlanType.PREPARED_COMMAND);
+        this.logicalPlan = plan;
+        this.placeholders.addAll(placeholders);
+        this.name = name;
+        this.originalStmt = originalStmt;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<Placeholder> params() {

Review Comment:
   ```suggestion
       public List<Placeholder> getPlaceHolders() {
   ```



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java:
##########
@@ -0,0 +1,120 @@
+// 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.mysql.MysqlCommand;
+import org.apache.doris.nereids.trees.expressions.Placeholder;
+import org.apache.doris.nereids.trees.plans.PlanType;
+import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
+import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
+import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.OriginStatement;
+import org.apache.doris.qe.PreparedStatementContext;
+import org.apache.doris.qe.StmtExecutor;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Prepared Statement
+ */
+public class PrepareCommand extends Command {
+    private static final Logger LOG = LogManager.getLogger(StmtExecutor.class);
+
+    private final List<Placeholder> placeholders = new ArrayList<>();
+    private final LogicalPlan logicalPlan;
+
+    private final String name;
+
+    private final OriginStatement originalStmt;
+
+    /**
+     * constructor
+     * @param name the statement name which represents statement id for 
prepared statement
+     * @param plan the inner statement
+     * @param placeholders the parameters for this prepared statement
+     * @param originalStmt original statement from StmtExecutor
+     */
+    public PrepareCommand(String name, LogicalPlan plan, List<Placeholder> 
placeholders,
+                OriginStatement originalStmt) {
+        super(PlanType.PREPARED_COMMAND);
+        this.logicalPlan = plan;
+        this.placeholders.addAll(placeholders);
+        this.name = name;
+        this.originalStmt = originalStmt;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<Placeholder> params() {
+        return placeholders;
+    }
+
+    public int getParamLen() {

Review Comment:
   ```suggestion
       public int placeholderCount() {
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to