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

caogaofei pushed a commit to branch beyyes/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/beyyes/TableModelGrammar by 
this push:
     new a746a36a450 add more relational impl
a746a36a450 is described below

commit a746a36a450d798944ea197a8be9b937e635de1d
Author: Beyyes <[email protected]>
AuthorDate: Sun Apr 7 11:13:07 2024 +0800

    add more relational impl
---
 .../relational/planner/RelationalModelPlanner.java | 13 +++-
 .../plan/relational/analyzer/AnalyzerTest.java     | 77 +++++++++-------------
 .../plan/relational/analyzer/TestMatadata.java     | 65 ++++++++++++------
 3 files changed, 87 insertions(+), 68 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
index 3ba6500d4cb..cfec9c17a28 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationalModelPlanner.java
@@ -21,6 +21,7 @@ package 
org.apache.iotdb.db.queryengine.plan.relational.planner;
 
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
 import org.apache.iotdb.db.queryengine.execution.QueryStateMachine;
@@ -28,8 +29,10 @@ import 
org.apache.iotdb.db.queryengine.plan.analyze.IAnalysis;
 import org.apache.iotdb.db.queryengine.plan.planner.IPlanner;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.DistributedQueryPlan;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
+import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
 import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analyzer;
 import 
org.apache.iotdb.db.queryengine.plan.relational.analyzer.StatementAnalyzerFactory;
+import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
 import org.apache.iotdb.db.queryengine.plan.scheduler.IScheduler;
 import org.apache.iotdb.rpc.TSStatusCode;
 
@@ -40,6 +43,8 @@ import static 
org.apache.iotdb.db.queryengine.execution.warnings.WarningCollecto
 
 public class RelationalModelPlanner implements IPlanner {
 
+  private Metadata metadata;
+
   @Override
   public IAnalysis analyze(MPPQueryContext context) {
     SessionInfo sessionInfo = null;
@@ -58,8 +63,12 @@ public class RelationalModelPlanner implements IPlanner {
   @Override
   public LogicalQueryPlan doLogicalPlan(IAnalysis analysis, MPPQueryContext 
context) {
     // TODO need implemented by Beyyes
-
-    return null;
+      try {
+          new LogicalPlanner(context, metadata, null, 
null).plan((Analysis)analysis);
+      } catch (IoTDBException e) {
+          throw new RuntimeException(e);
+      }
+      return null;
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
index 35b7e24919c..d2018ff4256 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AnalyzerTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.plan.relational.analyzer;
 
+import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
+import org.apache.iotdb.db.queryengine.common.QueryId;
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
 import org.apache.iotdb.db.queryengine.plan.relational.function.BoundSignature;
 import org.apache.iotdb.db.queryengine.plan.relational.function.FunctionId;
@@ -122,59 +124,40 @@ public class AnalyzerTest {
   @Test
   public void testSingleTableQuery() throws OperatorNotFoundException {
     String sql =
-        "SELECT tag1 as tmp_tag, tag2, attribute1, s1+1 as add_s1, s2 FROM 
table1 "
-            + "WHERE time>1 AND tag1=\"A\" and tag3=\"B\" AND s1=1 AND s3=3 
ORDER BY time DESC OFFSET 10 LIMIT 5";
+        "SELECT tag1 as tt, tag2, attribute1 as attr1, s1+1, s2 FROM table1 "
+            + "WHERE time>1 AND tag1=\"A\" and tag3=\"B\" AND s1=1 OR s3=3 
ORDER BY time DESC OFFSET 10 LIMIT 5";
     Metadata metadata = new TestMatadata();
 
-    TableHandle tableHandle = Mockito.mock(TableHandle.class);
-    Mockito.when(
-            metadata.getTableHandle(Mockito.any(), eq(new 
QualifiedObjectName("testdb", "table1"))))
-        .thenReturn(Optional.of(tableHandle));
-
-    Map<String, ColumnHandle> map = new HashMap<>();
-    TableSchema tableSchema = Mockito.mock(TableSchema.class);
-    Mockito.when(tableSchema.getTableName()).thenReturn("table1");
-    ColumnSchema column1 =
-        
ColumnSchema.builder().setName("time").setType(INT64).setHidden(false).build();
-    ColumnHandle column1Handle = Mockito.mock(ColumnHandle.class);
-    map.put("time", column1Handle);
-    ColumnSchema column2 =
-        
ColumnSchema.builder().setName("s1").setType(INT32).setHidden(false).build();
-    ColumnHandle column2Handle = Mockito.mock(ColumnHandle.class);
-    map.put("s1", column2Handle);
-    ColumnSchema column3 =
-        
ColumnSchema.builder().setName("s2").setType(INT64).setHidden(false).build();
-    ColumnHandle column3Handle = Mockito.mock(ColumnHandle.class);
-    map.put("s2", column3Handle);
-    List<ColumnSchema> columnSchemaList = Arrays.asList(column1, column2, 
column3);
-    Mockito.when(tableSchema.getColumns()).thenReturn(columnSchemaList);
-
-    Mockito.when(metadata.getTableSchema(Mockito.any(), 
eq(tableHandle))).thenReturn(tableSchema);
-    Mockito.when(metadata.getColumnHandles(Mockito.any(), 
eq(tableHandle))).thenReturn(map);
-
-    ResolvedFunction lLessThanI =
-        new ResolvedFunction(
-            new BoundSignature("l<i", BOOLEAN, Arrays.asList(INT64, INT32)),
-            new FunctionId("l<i"),
-            FunctionKind.SCALAR,
-            true);
-
-    ResolvedFunction iAddi =
-        new ResolvedFunction(
-            new BoundSignature("l+i", INT64, Arrays.asList(INT32, INT32)),
-            new FunctionId("l+i"),
-            FunctionKind.SCALAR,
-            true);
-
-    Mockito.when(
-            metadata.resolveOperator(eq(OperatorType.LESS_THAN), 
eq(Arrays.asList(INT64, INT32))))
-        .thenReturn(lLessThanI);
-    Mockito.when(metadata.resolveOperator(eq(OperatorType.ADD), 
eq(Arrays.asList(INT32, INT32))))
-        .thenReturn(iAddi);
+    //    ResolvedFunction lLessThanI =
+    //        new ResolvedFunction(
+    //            new BoundSignature("l<i", BOOLEAN, Arrays.asList(INT64, 
INT32)),
+    //            new FunctionId("l<i"),
+    //            FunctionKind.SCALAR,
+    //            true);
+    //
+    //    ResolvedFunction iAddi =
+    //        new ResolvedFunction(
+    //            new BoundSignature("l+i", INT64, Arrays.asList(INT32, 
INT32)),
+    //            new FunctionId("l+i"),
+    //            FunctionKind.SCALAR,
+    //            true);
+    //
+    //    Mockito.when(
+    //            metadata.resolveOperator(eq(OperatorType.LESS_THAN), 
eq(Arrays.asList(INT64,
+    // INT32))))
+    //        .thenReturn(lLessThanI);
+    //    Mockito.when(metadata.resolveOperator(eq(OperatorType.ADD), 
eq(Arrays.asList(INT32,
+    // INT32))))
+    //        .thenReturn(iAddi);
 
     Analysis actualAnalysis = analyzeSQL(sql, metadata);
     assertNotNull(actualAnalysis);
     System.out.println(actualAnalysis.getTypes());
+
+    QueryId queryId = new QueryId("tmp_query");
+    MPPQueryContext context = new MPPQueryContext(queryId);
+    // LogicalPlanner logicalPlanner = new LogicalPlanner(context, metadata);
+
   }
 
   private Analysis analyzeSQL(String sql, Metadata metadata) {
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
index 294dc28b354..62ac6cae73c 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
@@ -3,6 +3,7 @@ package 
org.apache.iotdb.db.queryengine.plan.relational.analyzer;
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
 import org.apache.iotdb.db.queryengine.plan.relational.function.OperatorType;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnHandle;
+import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnMetadata;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.OperatorNotFoundException;
@@ -11,6 +12,8 @@ import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.ResolvedFunction
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableHandle;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableMetadata;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema;
+import org.apache.iotdb.tsfile.read.common.type.BinaryType;
+import org.apache.iotdb.tsfile.read.common.type.DoubleType;
 import org.apache.iotdb.tsfile.read.common.type.Type;
 
 import org.mockito.Mockito;
@@ -27,8 +30,25 @@ import static 
org.apache.iotdb.tsfile.read.common.type.LongType.INT64;
 public class TestMatadata implements Metadata {
 
   public static final String DB1 = "db1";
-  public static final String DB2 = "db2";
   public static final String TABLE1 = "table1";
+  public static final String TIME = "time";
+  private static final String TAG1 = "tag1";
+  private static final String TAG2 = "tag2";
+  private static final String TAG3 = "tag3";
+  private static final String ATTR1 = "attr1";
+  private static final String ATTR2 = "attr2";
+  private static final String S1 = "s1";
+  private static final String S2 = "s2";
+  private static final ColumnMetadata TIME_CM = new ColumnMetadata(TIME, 
INT64);
+  private static final ColumnMetadata TAG1_CM = new ColumnMetadata(TAG1, 
BinaryType.TEXT);
+  private static final ColumnMetadata TAG2_CM = new ColumnMetadata(TAG2, 
BinaryType.TEXT);
+  private static final ColumnMetadata TAG3_CM = new ColumnMetadata(TAG3, 
BinaryType.TEXT);
+  private static final ColumnMetadata ATTR1_CM = new ColumnMetadata(ATTR1, 
BinaryType.TEXT);
+  private static final ColumnMetadata ATTR2_CM = new ColumnMetadata(ATTR2, 
BinaryType.TEXT);
+  private static final ColumnMetadata S1_CM = new ColumnMetadata(S1, INT32);
+  private static final ColumnMetadata S2_CM = new ColumnMetadata(S2, 
DoubleType.DOUBLE);
+
+  public static final String DB2 = "db2";
   public static final String TABLE2 = "table2";
 
   @Override
@@ -39,12 +59,25 @@ public class TestMatadata implements Metadata {
 
   @Override
   public TableSchema getTableSchema(SessionInfo session, TableHandle 
tableHandle) {
-    return null;
+    List<ColumnSchema> columnSchemas =
+        Arrays.asList(
+            ColumnSchema.builder(TIME_CM).build(),
+            ColumnSchema.builder(TAG1_CM).build(),
+            ColumnSchema.builder(TAG2_CM).build(),
+            ColumnSchema.builder(TAG3_CM).build(),
+            ColumnSchema.builder(ATTR1_CM).build(),
+            ColumnSchema.builder(ATTR2_CM).build(),
+            ColumnSchema.builder(S1_CM).build(),
+            ColumnSchema.builder(S2_CM).build());
+
+    return new TableSchema(TABLE1, columnSchemas);
   }
 
   @Override
   public TableMetadata getTableMetadata(SessionInfo session, TableHandle 
tableHandle) {
-    return null;
+    return new TableMetadata(
+        TABLE1,
+        Arrays.asList(TIME_CM, TAG1_CM, TAG2_CM, TAG3_CM, ATTR1_CM, ATTR2_CM, 
S1_CM, S2_CM));
   }
 
   @Override
@@ -55,22 +88,16 @@ public class TestMatadata implements Metadata {
   @Override
   public Map<String, ColumnHandle> getColumnHandles(SessionInfo session, 
TableHandle tableHandle) {
     Map<String, ColumnHandle> map = new HashMap<>();
-    TableSchema tableSchema = Mockito.mock(TableSchema.class);
-    Mockito.when(tableSchema.getTableName()).thenReturn("table1");
-    ColumnSchema column1 =
-        
ColumnSchema.builder().setName("time").setType(INT64).setHidden(false).build();
-    ColumnHandle column1Handle = Mockito.mock(ColumnHandle.class);
-    map.put("time", column1Handle);
-    ColumnSchema column2 =
-        
ColumnSchema.builder().setName("s1").setType(INT32).setHidden(false).build();
-    ColumnHandle column2Handle = Mockito.mock(ColumnHandle.class);
-    map.put("s1", column2Handle);
-    ColumnSchema column3 =
-        
ColumnSchema.builder().setName("s2").setType(INT64).setHidden(false).build();
-    ColumnHandle column3Handle = Mockito.mock(ColumnHandle.class);
-    map.put("s2", column3Handle);
-    List<ColumnSchema> columnSchemaList = Arrays.asList(column1, column2, 
column3);
-    return columnSchemaList;
+    ColumnHandle columnHandle = Mockito.mock(ColumnHandle.class);
+    map.put(TIME, columnHandle);
+    map.put(TAG1, columnHandle);
+    map.put(TAG2, columnHandle);
+    map.put(TAG3, columnHandle);
+    map.put(ATTR1, columnHandle);
+    map.put(ATTR2, columnHandle);
+    map.put(S1, columnHandle);
+    map.put(S2, columnHandle);
+    return map;
   }
 
   @Override

Reply via email to