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

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


The following commit(s) were added to refs/heads/master by this push:
     new bb4881b  [fix](planner) fix using clause npe (#7952)
bb4881b is described below

commit bb4881bb0469dbe014ab3ee866a47695f32ee563
Author: shee <13843187+qz...@users.noreply.github.com>
AuthorDate: Wed Feb 16 11:56:44 2022 +0800

    [fix](planner) fix using clause npe (#7952)
    
    Issue Number: close #7953
---
 .../java/org/apache/doris/analysis/FromClause.java |  4 +--
 .../java/org/apache/doris/analysis/TableRef.java   |  4 +++
 .../org/apache/doris/planner/QueryPlanTest.java    | 38 ++++++++++++++++++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
index fba2085..be71841 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
@@ -101,10 +101,10 @@ public class FromClause implements ParseNode, 
Iterable<TableRef> {
             public int compare(TableRef tableref1, TableRef tableref2) {
                 int i1 = 0;
                 int i2 = 0;
-                if (tableref1.getOnClause() != null) {
+                if (tableref1.getOnClause() != null || 
tableref1.getUsingClause() != null) {
                     i1 = 1;
                 }
-                if (tableref2.getOnClause() != null) {
+                if (tableref2.getOnClause() != null || 
tableref2.getUsingClause() != null) {
                     i2 = 1;
                 }
                 return i1 - i2;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java
index c0c39ed..ced85f1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java
@@ -306,6 +306,10 @@ public class TableRef implements ParseNode, Writable {
         this.usingColNames = colNames;
     }
 
+    public List<String> getUsingClause() {
+        return this.usingColNames;
+    }
+
     public TableRef getLeftTblRef() {
         return leftTblRef;
     }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
index 5e876a1..dc2206e 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
@@ -38,6 +38,7 @@ import org.apache.doris.catalog.Partition;
 import org.apache.doris.catalog.Replica;
 import org.apache.doris.catalog.Tablet;
 import org.apache.doris.catalog.Type;
+import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.jmockit.Deencapsulation;
@@ -410,6 +411,28 @@ public class QueryPlanTest {
 
         createView("create view test.function_view AS SELECT query_id, 
client_ip, concat(user, db) as concat FROM test.test1;");
 
+        createTable("create table test.tbl_using_a\n" +
+                "(\n" +
+                "    k1 int,\n" +
+                "    k2 int,\n" +
+                "    v1 int sum\n" +
+                ")\n" +
+                "DISTRIBUTED BY HASH(k1) BUCKETS 3 " +
+                "PROPERTIES (\n" +
+                "\"replication_num\" = \"1\"" +
+                ");");
+
+        createTable("create table test.tbl_using_b\n" +
+                "(\n" +
+                "    k1 int,\n" +
+                "    k2 int,\n" +
+                "    k3 int \n" +
+                ")\n" +
+                "DISTRIBUTED BY HASH(k1) BUCKETS 3 " +
+                "PROPERTIES (\n" +
+                "\"replication_num\" = \"1\"" +
+                ");");
+
     }
 
     @AfterClass
@@ -1988,4 +2011,19 @@ public class QueryPlanTest {
         Assert.assertTrue(explainStr.contains("errCode = 2"));
     }
 
+    @Test
+    public void testQueryWithUsingClause() throws Exception {
+        connectContext.setDatabase("default_cluster:test");
+        String iSql1 = "insert into test.tbl_using_a 
values(1,3,7),(2,2,8),(3,1,9)";
+        String iSql2 = "insert into test.tbl_using_b 
values(1,3,1),(3,1,1),(4,1,1),(5,2,1)";
+        UtFrameUtils.getSqlStmtExecutor(connectContext, iSql1);
+        UtFrameUtils.getSqlStmtExecutor(connectContext, iSql2);
+        String qSQL = "select t1.* from test.tbl_using_a t1 join 
test.tbl_using_b t2 using(k1,k2) where t1.k1 between 1 and 3 and t2.k3 between 
1+0 and 3+0";
+        try {
+            UtFrameUtils.getSqlStmtExecutor(connectContext, qSQL);
+        } catch (AnalysisException e) {
+            Assert.fail();
+        }
+    }
+
 }

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

Reply via email to