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

zyk pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.2 by this push:
     new e078ccc3c77 [To rel/1.2]Added ITs for logical views & Fix duplicate 
rows in show views. (#10026)
e078ccc3c77 is described below

commit e078ccc3c77d41ca52b7331f321e40de60aea24b
Author: 橘子 <[email protected]>
AuthorDate: Fri Jun 2 15:57:16 2023 +0800

    [To rel/1.2]Added ITs for logical views & Fix duplicate rows in show views. 
(#10026)
---
 .../iotdb/db/it/view/IoTDBCreateAndShowViewIT.java | 294 +++++++++++++++++++++
 1 file changed, 294 insertions(+)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/view/IoTDBCreateAndShowViewIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/view/IoTDBCreateAndShowViewIT.java
new file mode 100644
index 00000000000..fb04ad91a08
--- /dev/null
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/view/IoTDBCreateAndShowViewIT.java
@@ -0,0 +1,294 @@
+/*
+ * 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.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.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.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;
+
+/** This is an example for integration test. */
+@RunWith(IoTDBTestRunner.class)
+@Category({LocalStandaloneIT.class, ClusterIT.class})
+public class IoTDBCreateAndShowViewIT {
+
+  private static String[] sqls =
+      new String[] {
+        "CREATE DATABASE root.db;",
+        "CREATE DATABASE root.myview;",
+        "CREATE DATABASE root.cal_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.myview.d01.s01 AS root.db.d01.s01;",
+        "CREATE VIEW root.myview.d01.s02 AS SELECT s02 FROM root.db.d01;",
+        "CREATE VIEW root.myview.d02(s01, s02) AS SELECT s01, s02 FROM 
root.db.d02;",
+        "CREATE VIEW root.cal_view.avg AS SELECT (s01+s02)/2 FROM 
root.db.d01;",
+        "CREATE VIEW root.cal_view(multiple, divide) AS SELECT s01*s02, 
s01/s02 FROM root.db.d02;",
+        "CREATE VIEW root.cal_view(agg_max1, agg_max2) AS SELECT 
MAX_VALUE(s01) FROM root.db.d01, root.db.d02 ;",
+        "CREATE VIEW root.cal_view.cast_view AS SELECT CAST(s01 as TEXT) FROM 
root.db.d01;",
+      };
+
+  @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 showOriginTimeseries() {
+
+    Set<String> retSet =
+        new HashSet<>(
+            Arrays.asList(
+                "root.db.d01.s01,null,root.db,INT32,RLE,SNAPPY,null,null,;",
+                "root.db.d01.s02,null,root.db,INT32,RLE,SNAPPY,null,null,;",
+                "root.db.d02.s01,null,root.db,INT32,RLE,SNAPPY,null,null,;",
+                "root.db.d02.s02,null,root.db,INT32,RLE,SNAPPY,null,null,;"));
+
+    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 showAliasViewsWithShowTimeseries() {
+
+    Set<String> retSet =
+        new HashSet<>(
+            Arrays.asList(
+                
"root.myview.d01.s01,null,root.myview,INT32,null,null,null,null,logical;",
+                
"root.myview.d01.s02,null,root.myview,INT32,null,null,null,null,logical;",
+                
"root.myview.d02.s01,null,root.myview,INT32,null,null,null,null,logical;",
+                
"root.myview.d02.s02,null,root.myview,INT32,null,null,null,null,logical;"));
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      ResultSet resultSet = statement.executeQuery("SHOW TiMESERIES 
root.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 showViewsWithCalculationWithShowTimeseries() {
+
+    Set<String> retSet =
+        new HashSet<>(
+            Arrays.asList(
+                
"root.cal_view.avg,null,root.cal_view,DOUBLE,null,null,null,null,logical;",
+                
"root.cal_view.multiple,null,root.cal_view,DOUBLE,null,null,null,null,logical;",
+                
"root.cal_view.divide,null,root.cal_view,DOUBLE,null,null,null,null,logical;",
+                
"root.cal_view.agg_max1,null,root.cal_view,INT32,null,null,null,null,logical;",
+                
"root.cal_view.agg_max2,null,root.cal_view,INT32,null,null,null,null,logical;",
+                
"root.cal_view.cast_view,null,root.cal_view,TEXT,null,null,null,null,logical;"));
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      ResultSet resultSet = statement.executeQuery("SHOW TiMESERIES 
root.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());
+    }
+  }
+  // endregion
+
+  // region Test Show View
+  @Test
+  public void showAllViewsWithShowView() {
+
+    Set<String> retSet =
+        new HashSet<>(
+            Arrays.asList(
+                
"root.myview.d01.s01,root.myview,INT32,null,null,logical,root.db.d01.s01;",
+                
"root.myview.d01.s02,root.myview,INT32,null,null,logical,root.db.d01.s02;",
+                
"root.myview.d02.s01,root.myview,INT32,null,null,logical,root.db.d02.s01;",
+                
"root.myview.d02.s02,root.myview,INT32,null,null,logical,root.db.d02.s02;",
+                
"root.cal_view.avg,root.cal_view,DOUBLE,null,null,logical,(root.db.d01.s01 + 
root.db.d01.s02) / 2;",
+                
"root.cal_view.multiple,root.cal_view,DOUBLE,null,null,logical,root.db.d02.s01 
* root.db.d02.s02;",
+                
"root.cal_view.divide,root.cal_view,DOUBLE,null,null,logical,root.db.d02.s01 / 
root.db.d02.s02;",
+                
"root.cal_view.agg_max1,root.cal_view,INT32,null,null,logical,max_value(root.db.d01.s01);",
+                
"root.cal_view.agg_max2,root.cal_view,INT32,null,null,logical,max_value(root.db.d02.s01);",
+                
"root.cal_view.cast_view,root.cal_view,TEXT,null,null,logical,cast(type=TEXT)(root.db.d01.s01);"));
+
+    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
+
+  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();
+    }
+  }
+}

Reply via email to