This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git

The following commit(s) were added to refs/heads/master by this push:
     new f2f06c1acc [feature](nereids) Support select temp partition (#15579)
f2f06c1acc is described below

commit f2f06c1acc8a4641b3eada524d7b8af595ac820e
Author: AKIRA <33112463+kikyou1...@users.noreply.github.com>
AuthorDate: Wed Jan 4 11:04:36 2023 +0800

    [feature](nereids) Support select temp partition (#15579)
    
    Support such grammer:
        select * from t_p temporary partition(tp1);
        select * from t_p temporary partitions(tp1);
        select * from t_p temporary partition tp1;
---
 .../antlr4/org/apache/doris/nereids/DorisParser.g4  |  4 ++--
 .../doris/nereids/analyzer/UnboundRelation.java     | 21 +++++++++++++++------
 .../doris/nereids/parser/LogicalPlanBuilder.java    |  4 +++-
 .../doris/nereids/rules/analysis/BindRelation.java  |  2 +-
 .../data/nereids_syntax_p0/select_partition.out     |  9 +++++++++
 .../nereids_syntax_p0/select_partition.groovy       | 12 +++++++++++-
 6 files changed, 41 insertions(+), 11 deletions(-)

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 6b199654d8..4423f88992 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
@@ -312,8 +312,8 @@ qualifiedName
     ;
 
 specifiedPartition
-    : PARTITION identifier
-    | PARTITIONS identifierList
+    : TEMPORARY? PARTITION (identifier | identifierList)
+    | TEMPORARY? PARTITIONS identifierList
     ;
 
 constant
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
index cafc8cebbe..e61ba7818c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
@@ -45,20 +45,23 @@ import java.util.Optional;
 public class UnboundRelation extends LogicalRelation implements Unbound {
     private final List<String> nameParts;
     private final List<String> partNames;
+    private final boolean isTempPart;
 
     public UnboundRelation(RelationId id, List<String> nameParts) {
-        this(id, nameParts, Optional.empty(), Optional.empty(), 
Collections.emptyList());
+        this(id, nameParts, Optional.empty(), Optional.empty(),
+                Collections.emptyList(), false);
     }
 
-    public UnboundRelation(RelationId id, List<String> nameParts, List<String> 
partNames) {
-        this(id, nameParts, Optional.empty(), Optional.empty(), partNames);
+    public UnboundRelation(RelationId id, List<String> nameParts, List<String> 
partNames, boolean isTempPart) {
+        this(id, nameParts, Optional.empty(), Optional.empty(), partNames, 
isTempPart);
     }
 
     public UnboundRelation(RelationId id, List<String> nameParts, 
Optional<GroupExpression> groupExpression,
-            Optional<LogicalProperties> logicalProperties, List<String> 
partNames) {
+            Optional<LogicalProperties> logicalProperties, List<String> 
partNames, boolean isTempPart) {
         super(id, PlanType.LOGICAL_UNBOUND_RELATION, groupExpression, 
logicalProperties);
         this.nameParts = nameParts;
         this.partNames = 
ImmutableList.copyOf(Objects.requireNonNull(partNames, "partNames should not 
null"));
+        this.isTempPart = isTempPart;
     }
 
     @Override
@@ -82,12 +85,14 @@ public class UnboundRelation extends LogicalRelation 
implements Unbound {
 
     @Override
     public Plan withGroupExpression(Optional<GroupExpression> groupExpression) 
{
-        return new UnboundRelation(id, nameParts, groupExpression, 
Optional.of(getLogicalProperties()), partNames);
+        return new UnboundRelation(id, nameParts, groupExpression, 
Optional.of(getLogicalProperties()),
+                partNames, isTempPart);
     }
 
     @Override
     public Plan withLogicalProperties(Optional<LogicalProperties> 
logicalProperties) {
-        return new UnboundRelation(id, nameParts, Optional.empty(), 
logicalProperties, partNames);
+        return new UnboundRelation(id, nameParts, Optional.empty(), 
logicalProperties, partNames,
+                isTempPart);
     }
 
     @Override
@@ -140,4 +145,8 @@ public class UnboundRelation extends LogicalRelation 
implements Unbound {
     public List<String> getPartNames() {
         return partNames;
     }
+
+    public boolean isTempPart() {
+        return isTempPart;
+    }
 }
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 061f9ada40..affb175372 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
@@ -434,7 +434,9 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
     public LogicalPlan visitTableName(TableNameContext ctx) {
         List<String> tableId = 
visitMultipartIdentifier(ctx.multipartIdentifier());
         List<String> partitionNames = new ArrayList<>();
+        boolean isTempPart = false;
         if (ctx.specifiedPartition() != null) {
+            isTempPart = ctx.specifiedPartition().TEMPORARY() != null;
             if (ctx.specifiedPartition().identifier() != null) {
                 
partitionNames.add(ctx.specifiedPartition().identifier().getText());
             } else {
@@ -442,7 +444,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
             }
         }
         LogicalPlan checkedRelation = withCheckPolicy(
-                new UnboundRelation(RelationUtil.newRelationId(), tableId, 
partitionNames));
+                new UnboundRelation(RelationUtil.newRelationId(), tableId, 
partitionNames, isTempPart));
         LogicalPlan plan = withTableAlias(checkedRelation, ctx.tableAlias());
         for (LateralViewContext lateralViewContext : ctx.lateralView()) {
             plan = withGenerate(plan, lateralViewContext);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
index d706c80438..bfc9979b7f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
@@ -190,7 +190,7 @@ public class BindRelation extends OneAnalysisRuleFactory {
                             + "Table: %s is not OLAP table", t.getName()));
         }
         return parts.stream().map(name -> {
-            Partition part = ((OlapTable) t).getPartition(name);
+            Partition part = ((OlapTable) t).getPartition(name, 
unboundRelation.isTempPart());
             if (part == null) {
                 throw new IllegalStateException(String.format("Partition: %s 
is not exists", name));
             }
diff --git a/regression-test/data/nereids_syntax_p0/select_partition.out 
b/regression-test/data/nereids_syntax_p0/select_partition.out
index 95e9e37894..5383ef8afb 100644
--- a/regression-test/data/nereids_syntax_p0/select_partition.out
+++ b/regression-test/data/nereids_syntax_p0/select_partition.out
@@ -12,3 +12,12 @@
 -- !sql --
 7      1       3
 
+-- !sql --
+16     1234    t
+
+-- !sql --
+16     1234    t
+
+-- !sql --
+16     1234    t
+
diff --git a/regression-test/suites/nereids_syntax_p0/select_partition.groovy 
b/regression-test/suites/nereids_syntax_p0/select_partition.groovy
index be4008ff57..9caa21c96b 100644
--- a/regression-test/suites/nereids_syntax_p0/select_partition.groovy
+++ b/regression-test/suites/nereids_syntax_p0/select_partition.groovy
@@ -18,7 +18,6 @@
 suite("query_on_specific_partition") {
     sql "SET enable_vectorized_engine=true"
     sql "SET enable_nereids_planner=true"
-    sql "SET enable_fallback_to_original_planner=false"
 
     sql """
         DROP TABLE IF EXISTS t_p;
@@ -41,8 +40,13 @@ suite("query_on_specific_partition") {
         );
     """
 
+    sql """ALTER TABLE t_p ADD TEMPORARY PARTITION tp1 VALUES [("15"), 
("20"));"""
+
     sql "INSERT INTO t_p VALUES(1, 1,'1')"
     sql "INSERT INTO t_p VALUES(7, 1,'3')"
+    sql "INSERT INTO t_p TEMPORARY PARTITION(tp1) values(16,1234, 't');"
+
+    sql "SET enable_fallback_to_original_planner=false"
 
     qt_sql "SELECT * FROM t_p PARTITION p1"
 
@@ -51,4 +55,10 @@ suite("query_on_specific_partition") {
     order_qt_sql "SELECT * FROM t_p PARTITIONS (p2, p1)"
 
     order_qt_sql "SELECT * FROM t_p PARTITIONS (p2, p1) WHERE id > 1"
+
+    qt_sql """select * from t_p temporary partition(tp1);"""
+
+    qt_sql """select * from t_p temporary partitions(tp1);"""
+
+    qt_sql """select * from t_p temporary partition tp1;"""
 }


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

Reply via email to