You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2023/07/12 07:09:32 UTC
[iotdb] branch rc/1.2.0 updated: [To rel/1.2] Disabling Logical View
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rc/1.2.0
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rc/1.2.0 by this push:
new 11ba3bfacf4 [To rel/1.2] Disabling Logical View
11ba3bfacf4 is described below
commit 11ba3bfacf477d45286fef631f4b6b16a92c2f81
Author: Chen YZ <43...@users.noreply.github.com>
AuthorDate: Wed Jul 12 14:51:16 2023 +0800
[To rel/1.2] Disabling Logical View
---
.../db/it/schema/view/IoTDBAliasSeriesIT.java | 102 -----
.../iotdb/db/it/schema/view/IoTDBAlterViewIT.java | 348 -----------------
.../it/schema/view/IoTDBCreateAndShowViewIT.java | 429 ---------------------
.../view/IoTDBShowDevicesContainedViewIT.java | 226 -----------
.../commons/schema/node/utils/MNodeFactory.java | 31 ++
.../apache/iotdb/db/metadata/MetadataConstant.java | 1 +
.../mnode/config/factory/ConfigMNodeFactory.java | 5 +-
.../mnode/mem/factory/MemMNodeFactory.java | 24 +-
.../metadata/mnode/mem/impl/LogicalViewMNode.java | 64 ---
.../metadata/mnode/mem/info/LogicalViewInfo.java | 10 +-
.../schemafile/factory/CacheMNodeFactory.java | 17 +-
.../metadata/mnode/utils/MNodeFactoryLoader.java | 143 +++++++
.../db/metadata/mtree/MTreeBelowSGCachedImpl.java | 6 +-
.../db/metadata/mtree/MTreeBelowSGMemoryImpl.java | 19 +-
.../mtree/snapshot/MemMTreeSnapshotUtil.java | 5 +-
.../db/metadata/mtree/store/CachedMTreeStore.java | 8 +-
.../db/metadata/mtree/store/MemMTreeStore.java | 9 +-
.../store/disk/schemafile/MockSchemaFile.java | 6 +-
.../mtree/store/disk/schemafile/RecordUtils.java | 5 +-
.../mtree/store/disk/schemafile/SchemaFile.java | 5 +-
.../apache/iotdb/db/metadata/MetaUtilsTest.java | 5 +-
.../apache/iotdb/db/metadata/mnode/MNodeTest.java | 5 +-
.../mtree/disk/CachedMNodeContainerTest.java | 5 +-
.../metadata/mtree/schemafile/RecordUtilTests.java | 5 +-
.../mtree/schemafile/SchemaFileLogTest.java | 5 +-
.../metadata/mtree/schemafile/SchemaFileTest.java | 5 +-
.../metadata/mtree/schemafile/SchemaPageTest.java | 5 +-
.../mtree/schemafile/WrappedSegmentTest.java | 5 +-
.../schemaRegion/SchemaStatisticsTest.java | 9 +-
.../iotdb/db/tools/PBTreeFileSketchTest.java | 5 +-
30 files changed, 254 insertions(+), 1263 deletions(-)
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAliasSeriesIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAliasSeriesIT.java
deleted file mode 100644
index 2045f23b59e..00000000000
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAliasSeriesIT.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.it.schema.view;
-
-import org.apache.iotdb.it.env.EnvFactory;
-import org.apache.iotdb.it.framework.IoTDBTestRunner;
-import org.apache.iotdb.itbase.category.ClusterIT;
-import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-@RunWith(IoTDBTestRunner.class)
-@Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBAliasSeriesIT {
-
- @BeforeClass
- public static void setUpCluster() throws Exception {
- EnvFactory.getEnv().initClusterEnvironment();
- }
-
- @AfterClass
- public static void tearDownCluster() throws Exception {
- EnvFactory.getEnv().cleanClusterEnvironment();
- }
-
- @After
- public void tearDown() throws Exception {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try {
- statement.execute("DELETE DATABASE root.**");
- } catch (Exception e) {
- // If database is null, it will throw exception. Do nothing.
- }
- }
- }
-
- @Test
- public void testSelectIntoAliasSeries() throws SQLException {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- statement.execute("CREATE DATABASE root.db");
- statement.execute("CREATE DATABASE root.view");
-
- statement.execute("create timeseries root.db.device.s01 with datatype=INT32");
- statement.execute("create timeseries root.db.device.s02 with datatype=INT32");
- statement.execute("CREATE VIEW root.view.device.status AS SELECT s01 FROM root.db.device");
- statement.execute("insert into root.db.device(time,s02) values(1,1)");
-
- try (ResultSet resultSet =
- statement.executeQuery("select s02 into root.view.device(status) from root.db.device")) {
- StringBuilder stringBuilder = new StringBuilder();
- if (resultSet.next()) {
- for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
- stringBuilder.append(resultSet.getString(i)).append(",");
- }
- Assert.assertEquals(
- "root.db.device.s02,root.view.device.status,1,", stringBuilder.toString());
- }
- Assert.assertFalse(resultSet.next());
- }
- try (ResultSet resultSet = statement.executeQuery("select status from root.view.device")) {
- StringBuilder stringBuilder = new StringBuilder();
- if (resultSet.next()) {
- for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
- stringBuilder.append(resultSet.getString(i)).append(",");
- }
- Assert.assertEquals("1,1,", stringBuilder.toString());
- }
- Assert.assertFalse(resultSet.next());
- }
- }
- }
-}
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAlterViewIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAlterViewIT.java
deleted file mode 100644
index 4145f240bc2..00000000000
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBAlterViewIT.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.it.schema.view;
-
-import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
-import org.apache.iotdb.it.env.EnvFactory;
-import org.apache.iotdb.it.framework.IoTDBTestRunner;
-import org.apache.iotdb.itbase.category.ClusterIT;
-import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-@RunWith(IoTDBTestRunner.class)
-@Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBAlterViewIT {
-
- @BeforeClass
- public static void setUpCluster() throws Exception {
- EnvFactory.getEnv().initClusterEnvironment();
- }
-
- @AfterClass
- public static void tearDownCluster() throws Exception {
- EnvFactory.getEnv().cleanClusterEnvironment();
- }
-
- @After
- public void tearDown() throws Exception {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try {
- statement.execute("DELETE DATABASE root.**");
- } catch (Exception e) {
- // If database is null, it will throw exception. Do nothing.
- }
- }
- }
-
- @Test
- public void testAlterView() throws SQLException {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.execute("create timeseries root.db.d1.s1 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s2 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s3 with datatype=INT32");
- statement.execute("create timeseries root.db.d2.s1 with datatype=INT32");
- statement.execute("create timeseries root.db.d2.s2 with datatype=INT32");
- statement.execute("create timeseries root.db.d2.s3 with datatype=INT32");
-
- statement.execute(
- "create view root(view.d1.s1, view.d1.s2, view.d1.s3, view.d2.s1, view.d2.s2, view.d2.s3) as root(db.d1.s1, db.d1.s2, db.d1.s3, db.d2.s1, db.d2.s2, db.d2.s3)");
-
- String[][] map =
- new String[][] {
- new String[] {"root.view.d1.s1", "root.db.d1.s1"},
- new String[] {"root.view.d1.s2", "root.db.d1.s2"},
- new String[] {"root.view.d1.s3", "root.db.d1.s3"},
- new String[] {"root.view.d2.s1", "root.db.d2.s1"},
- new String[] {"root.view.d2.s2", "root.db.d2.s2"},
- new String[] {"root.view.d2.s3", "root.db.d2.s3"},
- };
- for (String[] strings : map) {
- try (ResultSet resultSet =
- statement.executeQuery(String.format("show view %s", strings[0]))) {
- Assert.assertTrue(resultSet.next());
- Assert.assertEquals(strings[1], resultSet.getString("Source"));
- }
- }
-
- statement.execute(
- "alter view root(view.d1.s1, view.d1.s2, view.d1.s3, view.d2.s1, view.d2.s2, view.d2.s3) as root(db.d2.s2, db.d2.s3, db.d2.s1, db.d1.s2, db.d1.s3, db.d1.s1)");
-
- map =
- new String[][] {
- new String[] {"root.view.d1.s1", "root.db.d2.s2"},
- new String[] {"root.view.d1.s2", "root.db.d2.s3"},
- new String[] {"root.view.d1.s3", "root.db.d2.s1"},
- new String[] {"root.view.d2.s1", "root.db.d1.s2"},
- new String[] {"root.view.d2.s2", "root.db.d1.s3"},
- new String[] {"root.view.d2.s3", "root.db.d1.s1"},
- };
- for (String[] strings : map) {
- try (ResultSet resultSet =
- statement.executeQuery(String.format("show view %s", strings[0]))) {
- Assert.assertTrue(resultSet.next());
- Assert.assertEquals(strings[1], resultSet.getString("Source"));
- }
- }
- }
- }
-
- @Test
- public void testAlterViewTagsAndAttributes() throws Exception {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.execute("create timeseries root.db.d1.s1 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s2 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s3 with datatype=INT32");
-
- statement.execute("create view root.view.${2}(${3}) as select * from root.db.**;");
-
- String[][] map =
- new String[][] {
- new String[] {"root.view.d1.s1", "root.db.d1.s1"},
- new String[] {"root.view.d1.s2", "root.db.d1.s2"},
- new String[] {"root.view.d1.s3", "root.db.d1.s3"},
- };
- for (String[] strings : map) {
- try (ResultSet resultSet =
- statement.executeQuery(String.format("show view %s", strings[0]))) {
- Assert.assertTrue(resultSet.next());
- Assert.assertEquals(strings[1], resultSet.getString("Source"));
- }
- }
-
- // case1: ADD TAGS AND ATTRIBUES
- statement.execute("alter view root.view.d1.s1 ADD TAGS tag1=v1, tag2=v2");
- statement.execute("alter view root.view.d1.s1 ADD ATTRIBUTES attr1=a1");
- statement.execute("alter view root.view.d1.s2 ADD TAGS tag1=v1, tag2=v2");
- statement.execute("alter view root.view.d1.s2 ADD ATTRIBUTES attr2=a2");
- statement.execute("alter view root.view.d1.s3 ADD TAGS tag1=v1, tag2=v2");
- statement.execute("alter view root.view.d1.s3 ADD ATTRIBUTES attr3=a3");
- Set<String> expectedResult =
- new HashSet<>(
- Arrays.asList(
- "root.view.d1.s1,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},{\"attr1\":\"a1\"},VIEW,root.db.d1.s1",
- "root.view.d1.s2,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},{\"attr2\":\"a2\"},VIEW,root.db.d1.s2",
- "root.view.d1.s3,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},{\"attr3\":\"a3\"},VIEW,root.db.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view")) {
- while (resultSet.next()) {
- String actualResult =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
-
- // case2: DROP TAGS AND ATTRIBUES
- statement.execute("alter view root.view.d1.s1 DROP tag1");
- statement.execute("alter view root.view.d1.s2 DROP tag2");
- statement.execute("alter view root.view.d1.s3 DROP attr3");
- expectedResult =
- new HashSet<>(
- Arrays.asList(
- "root.view.d1.s1,INT32,{\"tag2\":\"v2\"},{\"attr1\":\"a1\"},VIEW,root.db.d1.s1",
- "root.view.d1.s2,INT32,{\"tag1\":\"v1\"},{\"attr2\":\"a2\"},VIEW,root.db.d1.s2",
- "root.view.d1.s3,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},null,VIEW,root.db.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view")) {
- while (resultSet.next()) {
- String actualResult =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
-
- // case3: SET TAGS AND ATTRIBUES
- statement.execute("alter view root.view.d1.s1 SET tag2=new2");
- statement.execute("alter view root.view.d1.s2 SET attr2=new2");
- expectedResult =
- new HashSet<>(
- Arrays.asList(
- "root.view.d1.s1,INT32,{\"tag2\":\"new2\"},{\"attr1\":\"a1\"},VIEW,root.db.d1.s1",
- "root.view.d1.s2,INT32,{\"tag1\":\"v1\"},{\"attr2\":\"new2\"},VIEW,root.db.d1.s2",
- "root.view.d1.s3,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},null,VIEW,root.db.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view")) {
- while (resultSet.next()) {
- String actualResult =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
-
- // case4: RENAME TAGS AND ATTRIBUES
- statement.execute("alter view root.view.d1.s1 RENAME tag2 TO newTag2");
- statement.execute("alter view root.view.d1.s2 RENAME attr2 TO newAttr2");
- expectedResult =
- new HashSet<>(
- Arrays.asList(
- "root.view.d1.s1,INT32,{\"newTag2\":\"new2\"},{\"attr1\":\"a1\"},VIEW,root.db.d1.s1",
- "root.view.d1.s2,INT32,{\"tag1\":\"v1\"},{\"newAttr2\":\"new2\"},VIEW,root.db.d1.s2",
- "root.view.d1.s3,INT32,{\"tag1\":\"v1\",\"tag2\":\"v2\"},null,VIEW,root.db.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view")) {
- while (resultSet.next()) {
- String actualResult =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
- }
- }
-
- @Test
- public void testQueryFilterByTag() throws Exception {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.execute("create timeseries root.db.d1.s1 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s2 with datatype=INT32");
- statement.execute("create timeseries root.db.d1.s3 with datatype=INT32");
-
- statement.execute("create view root.view.${2}(${3}) as select * from root.db.**;");
-
- String[][] map =
- new String[][] {
- new String[] {"root.view.d1.s1", "root.db.d1.s1"},
- new String[] {"root.view.d1.s2", "root.db.d1.s2"},
- new String[] {"root.view.d1.s3", "root.db.d1.s3"},
- };
- for (String[] strings : map) {
- try (ResultSet resultSet =
- statement.executeQuery(String.format("show view %s", strings[0]))) {
- Assert.assertTrue(resultSet.next());
- Assert.assertEquals(strings[1], resultSet.getString("Source"));
- }
- }
-
- // ADD TAGS
- statement.execute("alter view root.view.d1.s1 ADD TAGS tag1=v1");
- statement.execute("alter view root.view.d1.s2 ADD TAGS tag1=v2");
- statement.execute("alter view root.view.d1.s3 ADD TAGS tag1=v1");
- Set<String> expectedResult =
- new HashSet<>(
- Arrays.asList(
- "root.view.d1.s1,INT32,{\"tag1\":\"v1\"},null,VIEW,root.db.d1.s1",
- "root.view.d1.s2,INT32,{\"tag1\":\"v2\"},null,VIEW,root.db.d1.s2",
- "root.view.d1.s3,INT32,{\"tag1\":\"v1\"},null,VIEW,root.db.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view")) {
- while (resultSet.next()) {
- String actualResult =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
-
- // case1: query where TAGS(tag1)='v1'
- expectedResult = new HashSet<>(Arrays.asList("root.view.d1.s1", "root.view.d1.s3"));
- try (ResultSet resultSet = statement.executeQuery("show view where TAGS(tag1)='v1';")) {
- while (resultSet.next()) {
- String actualResult = resultSet.getString(ColumnHeaderConstant.TIMESERIES);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
-
- // case2: query where TAGS(tag1) contains 'v'
- expectedResult =
- new HashSet<>(Arrays.asList("root.view.d1.s1", "root.view.d1.s2", "root.view.d1.s3"));
- try (ResultSet resultSet =
- statement.executeQuery("show view where TAGS(tag1) contains 'v';")) {
- while (resultSet.next()) {
- String actualResult = resultSet.getString(ColumnHeaderConstant.TIMESERIES);
- Assert.assertTrue(expectedResult.contains(actualResult));
- expectedResult.remove(actualResult);
- }
- }
- Assert.assertTrue(expectedResult.isEmpty());
- }
- }
-}
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
deleted file mode 100644
index e86f26fd36b..00000000000
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBCreateAndShowViewIT.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.it.schema.view;
-
-import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
-import org.apache.iotdb.it.env.EnvFactory;
-import org.apache.iotdb.it.framework.IoTDBTestRunner;
-import org.apache.iotdb.itbase.category.ClusterIT;
-import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-@RunWith(IoTDBTestRunner.class)
-@Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBCreateAndShowViewIT {
-
- private static final String[] SQLs =
- new String[] {
- "CREATE DATABASE root.db;",
- "CREATE DATABASE root.view;",
- "CREATE TIMESERIES root.db.d01.s01 INT32 encoding=RLE compression=SNAPPY;",
- "CREATE TIMESERIES root.db.d01.s02 INT32 encoding=RLE compression=SNAPPY;",
- "CREATE TIMESERIES root.db.d02.s01 INT32 encoding=RLE compression=SNAPPY;",
- "CREATE TIMESERIES root.db.d02.s02 INT32 encoding=RLE compression=SNAPPY;",
- "CREATE VIEW root.view.myview.d01.s01 AS root.db.d01.s01;",
- "CREATE VIEW root.view.myview.d01.s02 AS SELECT s02 FROM root.db.d01;",
- "CREATE VIEW root.view.myview.d02(s01, s02) AS SELECT s01, s02 FROM root.db.d02;",
- "CREATE VIEW root.view.cal_view.avg AS SELECT (s01+s02)/2 FROM root.db.d01;",
- "CREATE VIEW root.view.cal_view(multiple, divide) AS SELECT s01*s02, s01/s02 FROM root.db.d02;",
- "CREATE VIEW root.view.cal_view.cast_view AS SELECT CAST(s01 as TEXT) FROM root.db.d01;",
- "CREATE VIEW root.view.multi_view.all_in_one(${2}_${3}) AS SELECT * FROM root.db.**;",
- "CREATE VIEW root.view.copy_view.${2}(${3}) AS SELECT * FROM root.db.**;",
- "ALTER VIEW root.view.myview.d01.s01 UPSERT TAGS(tag1=value1, tag2=value2) ATTRIBUTES(attribute1=value1)",
- "ALTER VIEW root.view.myview.d02.s01 UPSERT TAGS(tag1=value2, tag2=value3) ATTRIBUTES(attribute1=value1)"
- };
-
- private static final String[] unsupportedSQLs =
- new String[] {
- "CREATE VIEW root.view.myview.nested_view AS root.view.myview.d01.s01;",
- "CREATE VIEW root.view.agg_view(agg_avg1, agg_avg2) AS SELECT AVG(s01)+1 FROM root.db.d01, root.db.d02;",
- "CREATE VIEW root.view.agg_view(agg_max1, agg_max2) AS SELECT MAX_VALUE(s01) FROM root.db.d01, root.db.d02;",
- "CREATE VIEW root.view.myview.illegal_view AS root.view.myview.d01.s01 + 1;",
- "CREATE VIEW root.view.multi_view($illegal_name) AS root.db.d01.s01;",
- "CREATE VIEW root.view.multi_view.multi_nodes(${3}.${2}) AS SELECT * FROM root.db.**;",
- "CREATE VIEW root.view.copy_view.$illegal_char(${3}) AS SELECT * FROM root.db.**;",
- "CREATE VIEW root.view.copy_view.mismatched_count(${3}) AS SELECT * FROM root.db.**;",
- "CREATE VIEW root.view.repeated_view(a, a) AS SELECT s01, s02 FROM root.db.d01;",
- "CREATE VIEW root.view.repeated_view.abc, root.view.repeated_view.abc AS SELECT s01, s02 FROM root.db.d01;",
- "ALTER VIW root.db.d01.s01 UPSERT TAGS(tag1=value1, tag2=value2) ATTRIBUTES(attribute1=value1)"
- };
-
- @BeforeClass
- public static void setUp() throws Exception {
- EnvFactory.getEnv().initClusterEnvironment();
-
- createSchema();
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- EnvFactory.getEnv().cleanClusterEnvironment();
- }
-
- // region Test show timesereis
- @Test
- public void testShowOriginTimeseries() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.db.d01.s01,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
- "root.db.d01.s02,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
- "root.db.d02.s01,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;",
- "root.db.d02.s02,null,root.db,INT32,RLE,SNAPPY,null,null,BASE;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES root.db.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ALIAS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ENCODING)
- + ","
- + resultSet.getString(ColumnHeaderConstant.COMPRESSION)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
-
- @Test
- public void testShowAliasViewsWithShowTimeseries() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.view.myview.d01.s01,null,root.view,INT32,null,null,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},VIEW;",
- "root.view.myview.d01.s02,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.myview.d02.s01,null,root.view,INT32,null,null,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},VIEW;",
- "root.view.myview.d02.s02,null,root.view,INT32,null,null,null,null,VIEW;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES root.view.myview.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ALIAS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ENCODING)
- + ","
- + resultSet.getString(ColumnHeaderConstant.COMPRESSION)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
-
- @Test
- public void testShowViewsWithCalculationWithShowTimeseries() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.view.cal_view.avg,null,root.view,DOUBLE,null,null,null,null,VIEW;",
- "root.view.cal_view.multiple,null,root.view,DOUBLE,null,null,null,null,VIEW;",
- "root.view.cal_view.divide,null,root.view,DOUBLE,null,null,null,null,VIEW;",
- "root.view.cal_view.cast_view,null,root.view,TEXT,null,null,null,null,VIEW;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES root.view.cal_view.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ALIAS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ENCODING)
- + ","
- + resultSet.getString(ColumnHeaderConstant.COMPRESSION)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
-
- @Test
- public void testShowViewsWithMultiCreationWithShowTimeseriesPart01() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.view.multi_view.all_in_one.d01_s01,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.multi_view.all_in_one.d01_s02,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.multi_view.all_in_one.d02_s01,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.multi_view.all_in_one.d02_s02,null,root.view,INT32,null,null,null,null,VIEW;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES root.view.multi_view.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ALIAS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ENCODING)
- + ","
- + resultSet.getString(ColumnHeaderConstant.COMPRESSION)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
-
- @Test
- public void testShowViewsWithMultiCreationWithShowTimeseriesPart02() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.view.copy_view.d01.s01,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.copy_view.d01.s02,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.copy_view.d02.s01,null,root.view,INT32,null,null,null,null,VIEW;",
- "root.view.copy_view.d02.s02,null,root.view,INT32,null,null,null,null,VIEW;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW TIMESERIES root.view.copy_view.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ALIAS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ENCODING)
- + ","
- + resultSet.getString(ColumnHeaderConstant.COMPRESSION)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
- // endregion
-
- // region Test Show View
- @Test
- public void testShowAllViewsWithShowView() {
-
- Set<String> retSet =
- new HashSet<>(
- Arrays.asList(
- "root.view.myview.d01.s01,root.view,INT32,{\"tag1\":\"value1\",\"tag2\":\"value2\"},{\"attribute1\":\"value1\"},VIEW,root.db.d01.s01;",
- "root.view.myview.d01.s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
- "root.view.myview.d02.s01,root.view,INT32,{\"tag1\":\"value2\",\"tag2\":\"value3\"},{\"attribute1\":\"value1\"},VIEW,root.db.d02.s01;",
- "root.view.myview.d02.s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;",
- "root.view.cal_view.avg,root.view,DOUBLE,null,null,VIEW,(root.db.d01.s01 + root.db.d01.s02) / 2;",
- "root.view.cal_view.multiple,root.view,DOUBLE,null,null,VIEW,root.db.d02.s01 * root.db.d02.s02;",
- "root.view.cal_view.divide,root.view,DOUBLE,null,null,VIEW,root.db.d02.s01 / root.db.d02.s02;",
- "root.view.cal_view.cast_view,root.view,TEXT,null,null,VIEW,cast(type=TEXT)(root.db.d01.s01);",
- "root.view.multi_view.all_in_one.d01_s01,root.view,INT32,null,null,VIEW,root.db.d01.s01;",
- "root.view.multi_view.all_in_one.d01_s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
- "root.view.multi_view.all_in_one.d02_s01,root.view,INT32,null,null,VIEW,root.db.d02.s01;",
- "root.view.multi_view.all_in_one.d02_s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;",
- "root.view.copy_view.d01.s01,root.view,INT32,null,null,VIEW,root.db.d01.s01;",
- "root.view.copy_view.d01.s02,root.view,INT32,null,null,VIEW,root.db.d01.s02;",
- "root.view.copy_view.d02.s01,root.view,INT32,null,null,VIEW,root.db.d02.s01;",
- "root.view.copy_view.d02.s02,root.view,INT32,null,null,VIEW,root.db.d02.s02;"));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- ResultSet resultSet = statement.executeQuery("SHOW VIEW root.**;");
- int count = 0;
- while (resultSet.next()) {
- String ans =
- resultSet.getString(ColumnHeaderConstant.TIMESERIES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATABASE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.DATATYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.TAGS)
- + ","
- + resultSet.getString(ColumnHeaderConstant.ATTRIBUTES)
- + ","
- + resultSet.getString(ColumnHeaderConstant.VIEW_TYPE)
- + ","
- + resultSet.getString(ColumnHeaderConstant.SOURCE)
- + ";";
-
- System.out.println("actual result:" + ans);
- assertTrue(retSet.contains(ans));
- count++;
- }
- assertEquals(retSet.size(), count);
- resultSet.close();
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
- // endregion
-
- // region unsupported SQLs
- @Test
- public void testUnsupportedSQLs() {
- for (String unsupportedSQL : unsupportedSQLs) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.execute(String.format(unsupportedSQL));
- Assert.fail(String.format("SQL [%s] should fail but no exception thrown.", unsupportedSQL));
- } catch (SQLException ignored) {
- }
- }
- }
-
- // endregion
-
- private static void createSchema() {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
-
- for (String sql : SQLs) {
- statement.execute(sql);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBShowDevicesContainedViewIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBShowDevicesContainedViewIT.java
deleted file mode 100644
index b5f51a55cfb..00000000000
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/view/IoTDBShowDevicesContainedViewIT.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.it.schema.view;
-
-import org.apache.iotdb.it.env.EnvFactory;
-import org.apache.iotdb.it.framework.IoTDBTestRunner;
-import org.apache.iotdb.itbase.category.ClusterIT;
-import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-@RunWith(IoTDBTestRunner.class)
-@Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBShowDevicesContainedViewIT {
-
- private static final String showDevicesSQL = "show devices;";
- private static final String deleteAllTimeSeriesSQL = "delete timeseries root.**;";
-
- @BeforeClass
- public static void setUp() throws Exception {
- EnvFactory.getEnv().initClusterEnvironment();
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- EnvFactory.getEnv().cleanClusterEnvironment();
- }
-
- private void validateResultSetAndStandard(ResultSet resultSet, Set<String> standard)
- throws SQLException {
- ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
- while (resultSet.next()) {
- StringBuilder builder = new StringBuilder();
- for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
- builder.append(resultSet.getString(i)).append(",");
- }
- String string = builder.toString();
- Assert.assertTrue(standard.contains(string));
- standard.remove(string);
- }
- }
-
- @Test
- public void testShowDevicesContainedView01() throws SQLException {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- // step 1. create normal time series and the alignment is true or false
- String[] sqls =
- new String[] {
- "create timeseries root.db.d01.s01 INT32 encoding=RLE;",
- "create timeseries root.db.d01.s02 INT32 encoding=RLE;",
- "create aligned timeseries root.db.d02(s01 INT32 encoding=RLE, s02 INT32 encoding=RLE);"
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- Set<String> standard =
- new HashSet<>(Arrays.asList("root.db.d01,false,", "root.db.d02,true,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 2. create views under these devices and the alignment remain unchanged
- sqls =
- new String[] {
- "create VIEW root.db.d01.s_view AS root.db.d01.s01",
- "create VIEW root.db.d02.s_view AS root.db.d02.s01",
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard = new HashSet<>(Arrays.asList("root.db.d01,false,", "root.db.d02,true,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 3. create view and auto create device, the alignment of these devices are null
- sqls =
- new String[] {
- "create VIEW root.db.d03.s_view AS root.db.d01.s01",
- "create VIEW root.db.d04.s_view AS root.db.d01.s01",
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList(
- "root.db.d01,false,",
- "root.db.d02,true,",
- "root.db.d03,null,",
- "root.db.d04,null,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 4. create time series under those devices who just have views, and alignment should be
- // true or false
- sqls =
- new String[] {
- "create timeseries root.db.d03.s01 INT32 encoding=RLE;",
- "create aligned timeseries root.db.d04(s01 INT32 encoding=RLE, s02 INT32 encoding=RLE);"
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList(
- "root.db.d01,false,",
- "root.db.d02,true,",
- "root.db.d03,false,",
- "root.db.d04,true,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 5. delete all non-view time series created at last step, and the alignment of devices
- // should be null
- sqls =
- new String[] {
- "delete timeseries root.db.d03.s01;",
- "delete timeseries root.db.d04.s01;",
- "delete timeseries root.db.d04.s02;"
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList(
- "root.db.d01,false,",
- "root.db.d02,true,",
- "root.db.d03,null,",
- "root.db.d04,null,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // clean environment
- statement.execute(deleteAllTimeSeriesSQL);
- } // end of try
- }
-
- @Test
- public void testShowDevicesContainedView02() throws SQLException {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- // step 1. create normal time series (prepared for views)
- String[] sqls =
- new String[] {
- "create timeseries root.db.d01.s01 INT32 encoding=RLE;",
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- Set<String> standard = new HashSet<>(Collections.singletonList("root.db.d01,false,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 2. create view and auto create device, the alignment of these devices are null
- sqls =
- new String[] {
- "create VIEW root.db.d05.s_view AS root.db.d01.s01",
- "create VIEW root.db.d06.s_view AS root.db.d01.s01",
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList("root.db.d01,false,", "root.db.d05,null,", "root.db.d06,null,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 3. insert data under those devices who have only views, the alignment should be true
- // or false
- sqls =
- new String[] {
- "insert into root.db.d05(time,s01) values(1, 36);",
- "insert into root.db.d06(time,s01) aligned values(1, 36);"
- };
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList("root.db.d01,false,", "root.db.d05,false,", "root.db.d06,true,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // step 4. delete all auto created timeseries at last step, and the alignment of devices
- // should be null
- sqls =
- new String[] {"delete timeseries root.db.d05.s01;", "delete timeseries root.db.d06.s01;"};
- for (String sql : sqls) {
- statement.execute(sql);
- }
- standard =
- new HashSet<>(
- Arrays.asList("root.db.d01,false,", "root.db.d05,null,", "root.db.d06,null,"));
- validateResultSetAndStandard(statement.executeQuery(showDevicesSQL), standard);
-
- // clean environment
- statement.execute(deleteAllTimeSeriesSQL);
- } // end of try
- }
-}
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/MNodeFactory.java b/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/MNodeFactory.java
new file mode 100644
index 00000000000..7da691a05ab
--- /dev/null
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/MNodeFactory.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.commons.schema.node.utils;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface MNodeFactory {
+ String env() default "IoTDB";
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MetadataConstant.java b/server/src/main/java/org/apache/iotdb/db/metadata/MetadataConstant.java
index 2aecd489b52..079de1cfb7b 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MetadataConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MetadataConstant.java
@@ -78,6 +78,7 @@ public class MetadataConstant {
public static final String SCHEMA_ENGINE_METRIC_NAME = "pbtree";
public static final String DEFAULT_SCHEMA_ENGINE_MODE = "Memory";
+ public static final String DEFAULT_MNODE_FACTORY_ENV = "IoTDB";
public static String getMNodeTypeName(byte type) {
switch (type) {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/config/factory/ConfigMNodeFactory.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/config/factory/ConfigMNodeFactory.java
index a1a7611d087..77b12019fb9 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/config/factory/ConfigMNodeFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/config/factory/ConfigMNodeFactory.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mnode.config.factory;
import org.apache.iotdb.commons.schema.node.info.IMeasurementInfo;
@@ -23,11 +24,13 @@ import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
+import org.apache.iotdb.commons.schema.node.utils.MNodeFactory;
import org.apache.iotdb.db.metadata.mnode.config.IConfigMNode;
import org.apache.iotdb.db.metadata.mnode.config.impl.ConfigBasicInternalMNode;
import org.apache.iotdb.db.metadata.mnode.config.impl.ConfigDatabaseMNode;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+@MNodeFactory
public class ConfigMNodeFactory implements IMNodeFactory<IConfigMNode> {
private ConfigMNodeFactory() {}
@@ -83,6 +86,6 @@ public class ConfigMNodeFactory implements IMNodeFactory<IConfigMNode> {
@Override
public IMeasurementMNode<IConfigMNode> createLogicalViewMNode(
IDeviceMNode<IConfigMNode> parent, String name, IMeasurementInfo measurementInfo) {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("View is not supported.");
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/factory/MemMNodeFactory.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/factory/MemMNodeFactory.java
index 1f4e21f7e15..b11437237ff 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/factory/MemMNodeFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/factory/MemMNodeFactory.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mnode.mem.factory;
import org.apache.iotdb.commons.schema.node.info.IMeasurementInfo;
@@ -23,31 +24,19 @@ import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
+import org.apache.iotdb.commons.schema.node.utils.MNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.AboveDatabaseMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.BasicInternalMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.DatabaseDeviceMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.DatabaseMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.DeviceMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.impl.LogicalViewMNode;
import org.apache.iotdb.db.metadata.mnode.mem.impl.MeasurementMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.info.LogicalViewInfo;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+@MNodeFactory
public class MemMNodeFactory implements IMNodeFactory<IMemMNode> {
- private MemMNodeFactory() {}
-
- private static class MemMNodeFactoryHolder {
- private static final MemMNodeFactory INSTANCE = new MemMNodeFactory();
-
- private MemMNodeFactoryHolder() {}
- }
-
- public static MemMNodeFactory getInstance() {
- return MemMNodeFactory.MemMNodeFactoryHolder.INSTANCE;
- }
-
@Override
public IMeasurementMNode<IMemMNode> createMeasurementMNode(
IDeviceMNode<IMemMNode> parent, String name, IMeasurementSchema schema, String alias) {
@@ -88,11 +77,6 @@ public class MemMNodeFactory implements IMNodeFactory<IMemMNode> {
@Override
public IMeasurementMNode<IMemMNode> createLogicalViewMNode(
IDeviceMNode<IMemMNode> parent, String name, IMeasurementInfo measurementInfo) {
- if (measurementInfo instanceof LogicalViewInfo) {
- return new LogicalViewMNode(
- parent, name, ((LogicalViewInfo) measurementInfo).getExpression());
- }
- throw new UnsupportedOperationException(
- "createLogicalViewMNode should accept LogicalViewInfo, but got an instance that is not of this type.");
+ throw new UnsupportedOperationException("View is not supported.");
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/impl/LogicalViewMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/impl/LogicalViewMNode.java
deleted file mode 100644
index be179120cf9..00000000000
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/impl/LogicalViewMNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.metadata.mnode.mem.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.metadata.mnode.mem.IMemMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.basic.BasicMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.container.MemMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.mem.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/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/info/LogicalViewInfo.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/info/LogicalViewInfo.java
index 5ed17ff7893..d73a1af1e7e 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/info/LogicalViewInfo.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/mem/info/LogicalViewInfo.java
@@ -27,7 +27,6 @@ import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
import org.apache.iotdb.commons.schema.view.viewExpression.leaf.TimeSeriesViewOperand;
-import org.apache.iotdb.db.metadata.mnode.mem.impl.LogicalViewMNode;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
@@ -151,12 +150,9 @@ public class LogicalViewInfo implements IMeasurementInfo {
@Override
public void moveDataToNewMNode(IMeasurementMNode<?> newMNode) {
- // TODO: CRTODO: is this ok for a logical view?
- if (newMNode instanceof LogicalViewMNode) {
- LogicalViewMNode logicalViewMNode = (LogicalViewMNode) newMNode;
- logicalViewMNode.setSchema(this.schema);
- logicalViewMNode.setPreDeleted(preDeleted);
- logicalViewMNode.setExpression(this.getExpression());
+ if (newMNode.isLogicalView()) {
+ newMNode.setSchema(this.schema);
+ newMNode.setPreDeleted(preDeleted);
}
throw new RuntimeException(
new IllegalArgumentException(
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/schemafile/factory/CacheMNodeFactory.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/schemafile/factory/CacheMNodeFactory.java
index 75b99bdf226..72ae8233db7 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/schemafile/factory/CacheMNodeFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/schemafile/factory/CacheMNodeFactory.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mnode.schemafile.factory;
import org.apache.iotdb.commons.schema.node.info.IMeasurementInfo;
@@ -23,6 +24,7 @@ import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
+import org.apache.iotdb.commons.schema.node.utils.MNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.impl.CachedAboveDatabaseMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.impl.CachedBasicInternalMNode;
@@ -32,20 +34,9 @@ import org.apache.iotdb.db.metadata.mnode.schemafile.impl.CachedDeviceMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.impl.CachedMeasurementMNode;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+@MNodeFactory
public class CacheMNodeFactory implements IMNodeFactory<ICachedMNode> {
- private CacheMNodeFactory() {}
-
- private static class CacheMNodeFactoryHolder {
- private static final CacheMNodeFactory INSTANCE = new CacheMNodeFactory();
-
- private CacheMNodeFactoryHolder() {}
- }
-
- public static CacheMNodeFactory getInstance() {
- return CacheMNodeFactory.CacheMNodeFactoryHolder.INSTANCE;
- }
-
@Override
public IMeasurementMNode<ICachedMNode> createMeasurementMNode(
IDeviceMNode<ICachedMNode> parent, String name, IMeasurementSchema schema, String alias) {
@@ -86,6 +77,6 @@ public class CacheMNodeFactory implements IMNodeFactory<ICachedMNode> {
@Override
public IMeasurementMNode<ICachedMNode> createLogicalViewMNode(
IDeviceMNode<ICachedMNode> parent, String name, IMeasurementInfo measurementInfo) {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("View is not supported.");
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/utils/MNodeFactoryLoader.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/utils/MNodeFactoryLoader.java
new file mode 100644
index 00000000000..c0be2209a14
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/utils/MNodeFactoryLoader.java
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.metadata.mnode.utils;
+
+import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
+import org.apache.iotdb.commons.schema.node.utils.MNodeFactory;
+import org.apache.iotdb.db.metadata.MetadataConstant;
+import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
+import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
+
+import org.reflections.Reflections;
+import org.reflections.util.ConfigurationBuilder;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@SuppressWarnings({"squid:S6548", "squid:3077"})
+public class MNodeFactoryLoader {
+
+ private final List<String> scanPackages = new ArrayList<>();
+ private String env;
+ private volatile IMNodeFactory<ICachedMNode> cachedMNodeIMNodeFactory;
+ private volatile IMNodeFactory<IMemMNode> memMNodeIMNodeFactory;
+
+ private MNodeFactoryLoader() {
+ addScanPackage("org.apache.iotdb.db.metadata.mnode.mem.factory");
+ addScanPackage("org.apache.iotdb.db.metadata.mnode.schemafile.factory");
+ setEnv(MetadataConstant.DEFAULT_MNODE_FACTORY_ENV);
+ }
+
+ public void addScanPackage(String scanPackage) {
+ scanPackages.add(scanPackage);
+ }
+
+ public void setEnv(String env) {
+ this.env = env;
+ }
+
+ @SuppressWarnings("squid:S3740")
+ public IMNodeFactory<ICachedMNode> getCachedMNodeIMNodeFactory() {
+ if (cachedMNodeIMNodeFactory == null) {
+ synchronized (this) {
+ if (cachedMNodeIMNodeFactory == null) {
+ cachedMNodeIMNodeFactory = loadMNodeFactory(ICachedMNode.class);
+ }
+ }
+ }
+ return cachedMNodeIMNodeFactory;
+ }
+
+ @SuppressWarnings("squid:S3740")
+ public IMNodeFactory<IMemMNode> getMemMNodeIMNodeFactory() {
+ if (memMNodeIMNodeFactory == null) {
+ synchronized (this) {
+ if (memMNodeIMNodeFactory == null) {
+ memMNodeIMNodeFactory = loadMNodeFactory(IMemMNode.class);
+ }
+ }
+ }
+ return memMNodeIMNodeFactory;
+ }
+
+ @SuppressWarnings("squid:S3740")
+ private IMNodeFactory loadMNodeFactory(Class<?> nodeType) {
+ Reflections reflections =
+ new Reflections(
+ new ConfigurationBuilder().forPackages(scanPackages.toArray(new String[0])));
+ Set<Class<?>> nodeFactorySet = reflections.getTypesAnnotatedWith(MNodeFactory.class);
+ for (Class<?> nodeFactory : nodeFactorySet) {
+ if (isGenericMatch(nodeFactory, nodeType) && isEnvMatch(nodeFactory, env)) {
+ try {
+ return (IMNodeFactory) nodeFactory.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ // if no satisfied MNodeFactory in customer env found, use default env
+ for (Class<?> nodeFactory : nodeFactorySet) {
+ if (isGenericMatch(nodeFactory, nodeType)
+ && isEnvMatch(nodeFactory, MetadataConstant.DEFAULT_MNODE_FACTORY_ENV)) {
+ try {
+ return (IMNodeFactory) nodeFactory.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ throw new RuntimeException("No satisfied MNodeFactory found");
+ }
+
+ public boolean isGenericMatch(Class<?> factory, Class<?> targetType) {
+ Type[] interfaces = factory.getGenericInterfaces();
+ for (Type type : interfaces) {
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ Type[] typeArguments = parameterizedType.getActualTypeArguments();
+ for (Type typeArgument : typeArguments) {
+ if (typeArgument instanceof Class
+ && targetType.isAssignableFrom((Class<?>) typeArgument)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean isEnvMatch(Class<?> factory, String env) {
+ MNodeFactory annotationInfo = factory.getAnnotation(MNodeFactory.class);
+ return annotationInfo.env().equals(env);
+ }
+
+ private static class MNodeFactoryLoaderHolder {
+ private static final MNodeFactoryLoader INSTANCE = new MNodeFactoryLoader();
+
+ private MNodeFactoryLoaderHolder() {}
+ }
+
+ public static MNodeFactoryLoader getInstance() {
+ return MNodeFactoryLoaderHolder.INSTANCE;
+ }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
index c02560fba7f..81c65bd3c29 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mtree;
import org.apache.iotdb.commons.conf.IoTDBConstant;
@@ -39,7 +40,7 @@ import org.apache.iotdb.db.exception.metadata.template.DifferentTemplateExceptio
import org.apache.iotdb.db.exception.metadata.template.TemplateIsInUseException;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.CachedMTreeStore;
import org.apache.iotdb.db.metadata.mtree.traverser.collector.EntityCollector;
import org.apache.iotdb.db.metadata.mtree.traverser.collector.MNodeCollector;
@@ -115,7 +116,8 @@ public class MTreeBelowSGCachedImpl {
private volatile ICachedMNode storageGroupMNode;
private final ICachedMNode rootNode;
private final Function<IMeasurementMNode<ICachedMNode>, Map<String, String>> tagGetter;
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
private final int levelOfSG;
private final CachedSchemaRegionStatistics regionStatistics;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
index 225eed79580..3b1ca6ab239 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mtree;
import org.apache.iotdb.commons.conf.IoTDBConstant;
@@ -43,8 +44,8 @@ import org.apache.iotdb.db.exception.metadata.template.TemplateIsInUseException;
import org.apache.iotdb.db.exception.quota.ExceedQuotaException;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.info.LogicalViewInfo;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.MemMTreeStore;
import org.apache.iotdb.db.metadata.mtree.traverser.collector.EntityCollector;
import org.apache.iotdb.db.metadata.mtree.traverser.collector.MNodeCollector;
@@ -119,7 +120,8 @@ public class MTreeBelowSGMemoryImpl {
private volatile IMemMNode storageGroupMNode;
private final IMemMNode rootNode;
private final Function<IMeasurementMNode<IMemMNode>, Map<String, String>> tagGetter;
- private final IMNodeFactory<IMemMNode> nodeFactory = MemMNodeFactory.getInstance();
+ private final IMNodeFactory<IMemMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory();
private final int levelOfSG;
private final MemSchemaRegionStatistics regionStatistics;
@@ -1073,9 +1075,11 @@ public class MTreeBelowSGMemoryImpl {
IMemMNode deviceParent = checkAndAutoCreateInternalPath(devicePath);
synchronized (this) {
- IMemMNode device = checkAndAutoCreateDeviceNode(devicePath.getTailNode(), deviceParent);
-
String leafName = path.getMeasurement();
+ IMeasurementMNode<IMemMNode> measurementMNode =
+ nodeFactory.createLogicalViewMNode(
+ null, leafName, new LogicalViewInfo(new LogicalViewSchema(leafName, viewExpression)));
+ IMemMNode device = checkAndAutoCreateDeviceNode(devicePath.getTailNode(), deviceParent);
// no need to check alias, because logical view has no alias
@@ -1106,12 +1110,7 @@ public class MTreeBelowSGMemoryImpl {
entityMNode.setAligned(null);
}
- IMeasurementMNode<IMemMNode> measurementMNode =
- nodeFactory.createLogicalViewMNode(
- entityMNode,
- leafName,
- new LogicalViewInfo(new LogicalViewSchema(leafName, viewExpression)));
-
+ measurementMNode.setParent(entityMNode.getAsMNode());
store.addChild(entityMNode.getAsMNode(), leafName, measurementMNode.getAsMNode());
return measurementMNode;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
index 8221e858764..3c7be34b998 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
@@ -33,8 +33,8 @@ import org.apache.iotdb.commons.schema.node.visitor.MNodeVisitor;
import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.info.LogicalViewInfo;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.MemMTreeStore;
import org.apache.iotdb.db.metadata.rescon.MemSchemaRegionStatistics;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
@@ -71,7 +71,8 @@ public class MemMTreeSnapshotUtil {
"Error occurred during deserializing MemMTree.";
private static final byte VERSION = 0;
- private static final IMNodeFactory<IMemMNode> nodeFactory = MemMNodeFactory.getInstance();
+ private static final IMNodeFactory<IMemMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory();;
public static boolean createSnapshot(File snapshotDir, MemMTreeStore store) {
File snapshotTmp =
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/CachedMTreeStore.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/CachedMTreeStore.java
index 1eb95296bf6..36cc8e44199 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/CachedMTreeStore.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/CachedMTreeStore.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mtree.store;
import org.apache.iotdb.commons.exception.MetadataException;
@@ -30,8 +31,8 @@ import org.apache.iotdb.db.metadata.mnode.mem.estimator.MNodeSizeEstimator;
import org.apache.iotdb.db.metadata.mnode.mem.iterator.AbstractTraverserIterator;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.iterator.CachedTraverserIterator;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mnode.utils.MNodeUtils;
import org.apache.iotdb.db.metadata.mtree.store.disk.cache.CacheMemoryManager;
import org.apache.iotdb.db.metadata.mtree.store.disk.cache.ICacheManager;
@@ -39,7 +40,6 @@ import org.apache.iotdb.db.metadata.mtree.store.disk.memcontrol.MemManager;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISchemaFile;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFile;
import org.apache.iotdb.db.metadata.rescon.CachedSchemaRegionStatistics;
-import org.apache.iotdb.db.metadata.rescon.DataNodeSchemaQuotaManager;
import org.apache.iotdb.db.metadata.template.Template;
import org.slf4j.Logger;
@@ -63,9 +63,9 @@ public class CachedMTreeStore implements IMTreeStore<ICachedMNode> {
private ISchemaFile file;
private ICachedMNode root;
private final Runnable flushCallback;
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
private final CachedSchemaRegionStatistics regionStatistics;
- private final DataNodeSchemaQuotaManager quotaManager = DataNodeSchemaQuotaManager.getInstance();
private final StampedWriterPreferredLock lock = new StampedWriterPreferredLock();
public CachedMTreeStore(
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
index 99c6e671211..020a05ca77d 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
@@ -28,13 +28,12 @@ import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.commons.schema.node.utils.IMNodeIterator;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
import org.apache.iotdb.db.metadata.mnode.mem.estimator.MNodeSizeEstimator;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.iterator.AbstractTraverserIterator;
import org.apache.iotdb.db.metadata.mnode.mem.iterator.MNodeIterator;
import org.apache.iotdb.db.metadata.mnode.mem.iterator.MemoryTraverserIterator;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mnode.utils.MNodeUtils;
import org.apache.iotdb.db.metadata.mtree.snapshot.MemMTreeSnapshotUtil;
-import org.apache.iotdb.db.metadata.rescon.DataNodeSchemaQuotaManager;
import org.apache.iotdb.db.metadata.rescon.MemSchemaRegionStatistics;
import org.apache.iotdb.db.metadata.template.Template;
@@ -47,10 +46,8 @@ import java.util.function.Consumer;
public class MemMTreeStore implements IMTreeStore<IMemMNode> {
private final MemSchemaRegionStatistics regionStatistics;
- private final IMNodeFactory<IMemMNode> nodeFactory = MemMNodeFactory.getInstance();
-
- private final DataNodeSchemaQuotaManager schemaQuotaManager =
- DataNodeSchemaQuotaManager.getInstance();
+ private final IMNodeFactory<IMemMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory();;
private IMemMNode root;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/MockSchemaFile.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/MockSchemaFile.java
index 13ed4aeb29b..dcc8213c3f2 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/MockSchemaFile.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/MockSchemaFile.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.metadata.mtree.store.disk.schemafile;
import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -26,7 +27,7 @@ import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.CachedMNodeContainer;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import java.io.File;
import java.io.IOException;
@@ -42,7 +43,8 @@ public class MockSchemaFile implements ISchemaFile {
private PartialPath storageGroupPath;
private IDatabaseMNode<ICachedMNode> storageGroupMNode;
- private static final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private static final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
private long fileTail = 0;
private final Map<Long, Map<String, ICachedMNode>> mockFile = new HashMap<>();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/RecordUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/RecordUtils.java
index e648c673acf..0d977dc6fb9 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/RecordUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/RecordUtils.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -63,7 +63,8 @@ public class RecordUtils {
private static final byte ENTITY_TYPE = 1;
private static final byte MEASUREMENT_TYPE = 4;
- private static final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private static final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
public static ByteBuffer node2Buffer(ICachedMNode node) {
if (node.isMeasurement()) {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/SchemaFile.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/SchemaFile.java
index 9e8ec6b8365..36abbe8f6a5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/SchemaFile.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/schemafile/SchemaFile.java
@@ -29,7 +29,7 @@ import org.apache.iotdb.db.exception.metadata.schemafile.SchemaFileNotExists;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.pagemgr.BTreePageManager;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.pagemgr.IPageManager;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.pagemgr.PageManager;
@@ -77,7 +77,8 @@ public class SchemaFile implements ISchemaFile {
private File pmtFile;
private FileChannel channel;
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
// todo refactor constructor for schema file in Jan.
private SchemaFile(
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
index 67b700641e1..a779734cc7d 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.utils.MetaUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.utils.Pair;
@@ -43,7 +43,8 @@ import static org.junit.Assert.fail;
public class MetaUtilsTest {
- private final IMNodeFactory<IMemMNode> nodeFactory = MemMNodeFactory.getInstance();
+ private final IMNodeFactory<IMemMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory();;
@Test
public void testGetMultiFullPaths() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mnode/MNodeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mnode/MNodeTest.java
index 42fde861adf..35707a7457a 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mnode/MNodeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mnode/MNodeTest.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.mem.IMemMNode;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.utils.MetaUtils;
import org.junit.Test;
@@ -35,7 +35,8 @@ import static org.junit.Assert.assertSame;
public class MNodeTest {
- private final IMNodeFactory<IMemMNode> nodeFactory = MemMNodeFactory.getInstance();
+ private final IMNodeFactory<IMemMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory();;
@Test
public void testReplaceChild() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/CachedMNodeContainerTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/CachedMNodeContainerTest.java
index 9312c67d3a8..0bb1d93c59e 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/CachedMNodeContainerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/CachedMNodeContainerTest.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.metadata.mtree.disk;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.CachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.junit.Test;
@@ -31,7 +31,8 @@ import java.util.Map;
public class CachedMNodeContainerTest {
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Test
public void testIterator() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
index 31d6bca7209..86d99aa923c 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.RecordUtils;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -42,7 +42,8 @@ import java.util.Map;
public class RecordUtilTests {
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileLogTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileLogTest.java
index ea96e0780c5..72175f80aed 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileLogTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileLogTest.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISchemaPage;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFile;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFileConfig;
@@ -52,7 +52,8 @@ import static org.junit.Assert.fail;
public class SchemaFileLogTest {
private static final int TEST_SCHEMA_REGION_ID = 0;
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
index 3e05306f12e..8d382f51531 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
@@ -27,7 +27,7 @@ import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.commons.utils.PathUtils;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
import org.apache.iotdb.db.metadata.mnode.schemafile.container.ICachedMNodeContainer;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mnode.utils.MNodeUtils;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISchemaFile;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.RecordUtils;
@@ -62,7 +62,8 @@ import java.util.stream.Collectors;
public class SchemaFileTest {
private static final int TEST_SCHEMA_REGION_ID = 0;
- private static final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private static final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
index 0294ab5f53d..f23209c1fe8 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.metadata.mtree.schemafile;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISchemaPage;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.RecordUtils;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFileConfig;
@@ -41,7 +41,8 @@ import java.nio.ByteBuffer;
public class SchemaPageTest {
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
index f404428fe19..124b72ce60a 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISegment;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.RecordUtils;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFileConfig;
@@ -42,7 +42,8 @@ import java.nio.ByteBuffer;
public class WrappedSegmentTest {
- private static final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private static final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
index 38e3de3f680..e1a26c8490c 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
@@ -23,8 +23,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.path.PathPatternTree;
import org.apache.iotdb.commons.schema.node.IMNode;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
-import org.apache.iotdb.db.metadata.mnode.mem.factory.MemMNodeFactory;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.plan.schemaregion.impl.write.SchemaRegionWritePlanFactory;
import org.apache.iotdb.db.metadata.rescon.CachedSchemaEngineStatistics;
import org.apache.iotdb.db.metadata.rescon.CachedSchemaRegionStatistics;
@@ -77,7 +76,7 @@ public class SchemaStatisticsTest extends AbstractSchemaRegionTest {
if (testParams.getTestModeName().equals("SchemaFile-PartialMemory")
|| testParams.getTestModeName().equals("SchemaFile-NonMemory")) {
- IMNodeFactory<?> nodeFactory = CacheMNodeFactory.getInstance();
+ IMNodeFactory<?> nodeFactory = MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
// wait release and flush task
Thread.sleep(1000);
// schemaRegion1
@@ -98,8 +97,8 @@ public class SchemaStatisticsTest extends AbstractSchemaRegionTest {
} else {
IMNodeFactory nodeFactory =
testParams.getSchemaEngineMode().equals("Memory")
- ? MemMNodeFactory.getInstance()
- : CacheMNodeFactory.getInstance();
+ ? MNodeFactoryLoader.getInstance().getMemMNodeIMNodeFactory()
+ : MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
// schemaRegion1
IMNode<?> sg1 =
nodeFactory.createDatabaseDeviceMNode(
diff --git a/server/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java b/server/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
index c54a52b9e01..a4846e664c0 100644
--- a/server/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.schemafile.ICachedMNode;
-import org.apache.iotdb.db.metadata.mnode.schemafile.factory.CacheMNodeFactory;
+import org.apache.iotdb.db.metadata.mnode.utils.MNodeFactoryLoader;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.ISchemaFile;
import org.apache.iotdb.db.metadata.mtree.store.disk.schemafile.SchemaFile;
import org.apache.iotdb.db.metadata.schemaregion.SchemaEngineMode;
@@ -51,7 +51,8 @@ import java.util.Queue;
public class PBTreeFileSketchTest {
- private final IMNodeFactory<ICachedMNode> nodeFactory = CacheMNodeFactory.getInstance();
+ private final IMNodeFactory<ICachedMNode> nodeFactory =
+ MNodeFactoryLoader.getInstance().getCachedMNodeIMNodeFactory();
@Before
public void setUp() {