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

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

commit 77e895a3552c497bc170851a81371f14231e47d6
Author: Beyyes <[email protected]>
AuthorDate: Sun Sep 3 18:43:18 2023 +0800

    add viewtree, modify datanode conf
---
 .../impl/mem/mnode/factory/MemMNodeFactory.java    |  4 +-
 .../impl/mem/mnode/impl/LogicalViewMNode.java      | 45 ++++++++++++++++++++++
 .../datanode1conf/iotdb-common.properties          |  3 ++
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
index 62f700c398c..a48d21d9230 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
@@ -30,7 +30,9 @@ import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.B
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.DatabaseDeviceMNode;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.DatabaseMNode;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.DeviceMNode;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.LogicalViewMNode;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.MeasurementMNode;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.LogicalViewInfo;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 @MNodeFactory
@@ -76,6 +78,6 @@ public class MemMNodeFactory implements 
IMNodeFactory<IMemMNode> {
   @Override
   public IMeasurementMNode<IMemMNode> createLogicalViewMNode(
       IDeviceMNode<IMemMNode> parent, String name, IMeasurementInfo 
measurementInfo) {
-    throw new UnsupportedOperationException("View is not supported.");
+    return new LogicalViewMNode(parent, name, ((LogicalViewInfo) 
measurementInfo).getExpression());
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/LogicalViewMNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/LogicalViewMNode.java
new file mode 100644
index 00000000000..27ece69d7f6
--- /dev/null
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/LogicalViewMNode.java
@@ -0,0 +1,45 @@
+package 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl;
+
+import org.apache.iotdb.commons.schema.node.common.AbstractMeasurementMNode;
+import org.apache.iotdb.commons.schema.node.info.IMeasurementInfo;
+import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
+import org.apache.iotdb.commons.schema.node.utils.IMNodeContainer;
+import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
+import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.basic.BasicMNode;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.container.MemMNodeContainer;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.LogicalViewInfo;
+
+public class LogicalViewMNode extends AbstractMeasurementMNode<IMemMNode, 
BasicMNode>
+    implements IMemMNode {
+
+  public LogicalViewMNode(
+      IDeviceMNode<IMemMNode> parent, String name, ViewExpression 
viewExpression) {
+    super(
+        new BasicMNode(parent == null ? null : parent.getAsMNode(), name),
+        new LogicalViewInfo(new LogicalViewSchema(name, viewExpression)));
+  }
+
+  @Override
+  public IMNodeContainer<IMemMNode> getChildren() {
+    return MemMNodeContainer.emptyMNodeContainer();
+  }
+
+  @Override
+  public IMemMNode getAsMNode() {
+    return this;
+  }
+
+  public void setExpression(ViewExpression expression) {
+    IMeasurementInfo measurementInfo = this.getMeasurementInfo();
+    if (measurementInfo instanceof LogicalViewInfo) {
+      ((LogicalViewInfo) measurementInfo).setExpression(expression);
+    }
+  }
+
+  @Override
+  public final boolean isLogicalView() {
+    return true;
+  }
+}
diff --git 
a/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-common.properties 
b/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-common.properties
index ba222515546..e5310a8370d 100644
--- 
a/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-common.properties
+++ 
b/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-common.properties
@@ -21,3 +21,6 @@ timestamp_precision=ms
 udf_lib_dir=target/datanode1/ext/udf
 trigger_lib_dir=target/datanode1/ext/trigger
 pipe_lib_dir=target/datanode1/ext/pipe
+data_region_group_extension_policy=CUSTOM
+default_data_region_group_num_per_database=2
+enable_data_partition_inherit_policy=false

Reply via email to