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
