You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2023/09/03 10:43:45 UTC

[iotdb] branch beyyes/property_view created (now 77e895a3552)

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

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


      at 77e895a3552 add viewtree, modify datanode conf

This branch includes the following new commits:

     new 77e895a3552 add viewtree, modify datanode conf

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: add viewtree, modify datanode conf

Posted by ca...@apache.org.
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 <cg...@foxmail.com>
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