You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2021/07/22 10:37:03 UTC
[iotdb] branch select-into updated: add tests for different kinds
of queries
This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch select-into
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/select-into by this push:
new 9067cf9 add tests for different kinds of queries
9067cf9 is described below
commit 9067cf98729c6245417327df50783b3f782974c1
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Thu Jul 22 18:36:26 2021 +0800
add tests for different kinds of queries
---
.../db/qp/logical/crud/SelectIntoOperator.java | 3 +-
.../iotdb/db/integration/IoTDBSelectIntoIT.java | 284 ++++++++++++---------
2 files changed, 167 insertions(+), 120 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java
index d9d76a5..053b921 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectIntoOperator.java
@@ -71,8 +71,7 @@ public class SelectIntoOperator extends Operator {
}
if (queryOperator instanceof AggregationQueryOperator
- && (!(queryOperator instanceof GroupByQueryOperator)
- || !(queryOperator instanceof GroupByFillQueryOperator))) {
+ && !(queryOperator instanceof GroupByQueryOperator)) {
throw new LogicalOperatorException("select into: aggregation queries are not supported.");
}
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
index e5f9401..6fa2ec6 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
@@ -137,7 +137,7 @@ public class IoTDBSelectIntoIT {
EnvironmentUtils.cleanEnv();
}
- @Test
+ @Test // TODO: check values
public void selectIntoSameDevice() {
try (Statement statement =
DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
@@ -145,29 +145,27 @@ public class IoTDBSelectIntoIT {
statement.execute(
"select s1, s2, s3, s4, s5, s6 into s7, s8, s9, s10, s11, s12 from root.sg.d1");
- ResultSet resultSet =
- statement.executeQuery("select s7, s8, s9, s10, s11, s12 from root.sg.d1");
-
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 6, columnCount);
-
- for (int i = 0; i < INSERTION_SQLS.length; ++i) {
- assertTrue(resultSet.next());
- StringBuilder stringBuilder = new StringBuilder();
- for (int j = 0; j < 6 + 1; ++j) {
- stringBuilder.append(resultSet.getString(j + 1)).append(',');
+ try (ResultSet resultSet =
+ statement.executeQuery("select s7, s8, s9, s10, s11, s12 from root.sg.d1")) {
+ assertEquals(1 + 6, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 0; i < INSERTION_SQLS.length; ++i) {
+ assertTrue(resultSet.next());
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int j = 0; j < 6 + 1; ++j) {
+ stringBuilder.append(resultSet.getString(j + 1)).append(',');
+ }
+ System.out.println(stringBuilder.toString());
}
- System.out.println(stringBuilder.toString());
- }
- assertFalse(resultSet.next());
- resultSet.close();
+ assertFalse(resultSet.next());
+ }
} catch (SQLException throwable) {
fail(throwable.getMessage());
}
}
- @Test
+ @Test // TODO: check values
public void selectIntoDifferentDevices() {
try (Statement statement =
DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
@@ -175,24 +173,22 @@ public class IoTDBSelectIntoIT {
statement.execute(
"select s1, s2, s3, s4, s5, s6 into pre_${2}_suf.s1, pre_${2}_suf.s2, pre_${2}_suf.s3, pre_${2}_suf.s4, pre_${2}_suf.s5, pre_${2}_suf.s6 from root.sg.d1");
- ResultSet resultSet =
+ try (ResultSet resultSet =
statement.executeQuery(
- "select pre_d1_suf.s1, pre_d1_suf.s2, pre_d1_suf.s3, pre_d1_suf.s4, pre_d1_suf.s5, pre_d1_suf.s6 from root.sg.d1");
-
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 6, columnCount);
-
- for (int i = 0; i < INSERTION_SQLS.length; ++i) {
- assertTrue(resultSet.next());
- StringBuilder stringBuilder = new StringBuilder();
- for (int j = 0; j < 6 + 1; ++j) {
- stringBuilder.append(resultSet.getString(j + 1)).append(',');
+ "select pre_d1_suf.s1, pre_d1_suf.s2, pre_d1_suf.s3, pre_d1_suf.s4, pre_d1_suf.s5, pre_d1_suf.s6 from root.sg.d1")) {
+ assertEquals(1 + 6, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 0; i < INSERTION_SQLS.length; ++i) {
+ assertTrue(resultSet.next());
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int j = 0; j < 6 + 1; ++j) {
+ stringBuilder.append(resultSet.getString(j + 1)).append(',');
+ }
+ System.out.println(stringBuilder.toString());
}
- System.out.println(stringBuilder.toString());
- }
- assertFalse(resultSet.next());
- resultSet.close();
+ assertFalse(resultSet.next());
+ }
} catch (SQLException throwable) {
fail(throwable.getMessage());
}
@@ -205,13 +201,11 @@ public class IoTDBSelectIntoIT {
.createStatement()) {
statement.execute("select empty into target from root.sg.d1");
- ResultSet resultSet = statement.executeQuery("select target from root.sg.d1");
-
- assertEquals(1, resultSet.getMetaData().getColumnCount());
- assertFalse(resultSet.next());
- resultSet.close();
+ try (ResultSet resultSet = statement.executeQuery("select target from root.sg.d1")) {
+ assertEquals(1, resultSet.getMetaData().getColumnCount());
+ assertFalse(resultSet.next());
+ }
} catch (SQLException throwable) {
- throwable.printStackTrace();
fail(throwable.getMessage());
}
}
@@ -223,19 +217,144 @@ public class IoTDBSelectIntoIT {
.createStatement()) {
statement.execute("select s1 into root.${2}.${1}.s1 from root.sg.d1 where time>0");
- ResultSet resultSet = statement.executeQuery("select sg.d1.s1, d1.sg.s1 from root");
+ try (ResultSet resultSet = statement.executeQuery("select sg.d1.s1, d1.sg.s1 from root")) {
+ assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 2, columnCount);
+ for (int i = 0; i < INSERTION_SQLS.length - 1; ++i) {
+ assertTrue(resultSet.next());
+ assertEquals(resultSet.getString(1), String.valueOf(i + 1));
+ assertEquals(resultSet.getString(2), resultSet.getString(3));
+ }
- for (int i = 0; i < INSERTION_SQLS.length - 1; ++i) {
- assertTrue(resultSet.next());
- assertEquals(resultSet.getString(1), String.valueOf(i + 1));
- assertEquals(resultSet.getString(2), resultSet.getString(3));
+ assertFalse(resultSet.next());
}
+ } catch (SQLException throwable) {
+ fail(throwable.getMessage());
+ }
+ }
- assertFalse(resultSet.next());
- resultSet.close();
+ @Test
+ public void selectSameTimeSeries() {
+ try (Statement statement =
+ DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
+ .createStatement()) {
+ statement.execute("select s1, s1 into s2, s3 from root.sg.d1");
+
+ try (ResultSet resultSet = statement.executeQuery("select s2, s3 from root.sg.d1")) {
+ assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 0; i < INSERTION_SQLS.length; ++i) {
+ assertTrue(resultSet.next());
+ for (int j = 0; j < 2 + 1; ++j) {
+ assertEquals(resultSet.getString(2), resultSet.getString(3));
+ }
+ }
+
+ assertFalse(resultSet.next());
+ }
+ } catch (SQLException throwable) {
+ fail(throwable.getMessage());
+ }
+ }
+
+ @Test
+ public void testUDFQuery() {
+ try (Statement statement =
+ DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
+ .createStatement()) {
+ statement.execute(
+ "select s1, sin(s1), s1 + s1 into ${2}.s2, ${2}.s3, ${2}.s4 from root.sg.d1");
+
+ try (ResultSet resultSet = statement.executeQuery("select s2, s3, s4 from root.sg.d1.d1")) {
+ assertEquals(1 + 3, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 1; i < INSERTION_SQLS.length; ++i) {
+ assertTrue(resultSet.next());
+ for (int j = 0; j < 2 + 1; ++j) {
+ double s2 = Double.parseDouble(resultSet.getString(2));
+ double s3 = Double.parseDouble(resultSet.getString(3));
+ double s4 = Double.parseDouble(resultSet.getString(4));
+ assertEquals(i, s2, 0);
+ assertEquals(Math.sin(i), s3, 0);
+ assertEquals((double) i + (double) i, s4, 0);
+ }
+ }
+
+ assertFalse(resultSet.next());
+ }
+ } catch (SQLException throwable) {
+ fail(throwable.getMessage());
+ }
+ }
+
+ @Test
+ public void testGroupByQuery() {
+ try (Statement statement =
+ DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
+ .createStatement()) {
+ statement.execute("select count(s1) into count_s1 from root.sg.d1 group by ([1, 5),1ms);");
+
+ try (ResultSet resultSet = statement.executeQuery("select count_s1 from root.sg.d1")) {
+ assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 1; i < INSERTION_SQLS.length; ++i) {
+ assertTrue(resultSet.next());
+ for (int j = 0; j < 1 + 1; ++j) {
+ assertEquals(String.valueOf(i), resultSet.getString(1));
+ assertEquals("1", resultSet.getString(2));
+ }
+ }
+
+ assertFalse(resultSet.next());
+ }
+ } catch (SQLException throwable) {
+ fail(throwable.getMessage());
+ }
+ }
+
+ @Test
+ public void testGroupByFillQuery() {
+ try (Statement statement =
+ DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
+ .createStatement()) {
+ statement.execute(
+ "select last_value(s1) into gbf_s1 from root.sg.d1 group by ([1, 10),1ms) fill (float[PREVIOUS]);");
+
+ try (ResultSet resultSet = statement.executeQuery("select gbf_s1 from root.sg.d1")) {
+ assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
+
+ for (int i = 1; i < 10; ++i) {
+ assertTrue(resultSet.next());
+ for (int j = 0; j < 1 + 1; ++j) {
+ assertEquals(String.valueOf(i), resultSet.getString(1));
+ assertEquals(i < 5 ? String.valueOf(i) : "0", resultSet.getString(2));
+ }
+ }
+
+ assertFalse(resultSet.next());
+ }
+ } catch (SQLException throwable) {
+ fail(throwable.getMessage());
+ }
+ }
+
+ @Test
+ public void testFillQuery() {
+ try (Statement statement =
+ DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
+ .createStatement()) {
+ statement.execute(
+ "select s1 into fill_s1 from root.sg.d1 where time = 10 fill(float [linear, 1ms, 1ms])");
+
+ try (ResultSet resultSet = statement.executeQuery("select fill_s1 from root.sg.d1")) {
+ assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
+
+ assertTrue(resultSet.next());
+ assertEquals("10", resultSet.getString(1));
+ assertEquals("4", resultSet.getString(2));
+
+ assertFalse(resultSet.next());
+ }
} catch (SQLException throwable) {
fail(throwable.getMessage());
}
@@ -304,10 +423,6 @@ public class IoTDBSelectIntoIT {
DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
.createStatement()) {
statement.execute("select s1 into root.${100}.s1 from root.sg.d1");
- ResultSet resultSet = statement.executeQuery("select sg.d1.s1, d1.sg.s1 from root");
- assertEquals(1, resultSet.getMetaData().getColumnCount());
- assertFalse(resultSet.next());
- resultSet.close();
fail();
} catch (SQLException throwable) {
assertTrue(
@@ -321,9 +436,6 @@ public class IoTDBSelectIntoIT {
DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
.createStatement()) {
statement.execute("select s1 into root.${0}.s1 from root.sg.d1");
- ResultSet resultSet = statement.executeQuery("select sg.d1.s1, d1.sg.s1 from root");
- assertEquals(1, resultSet.getMetaData().getColumnCount());
- assertFalse(resultSet.next());
fail();
} catch (SQLException throwable) {
assertTrue(
@@ -405,68 +517,4 @@ public class IoTDBSelectIntoIT {
assertTrue(throwable.getMessage().contains("desc clauses are not supported."));
}
}
-
- @Test
- public void selectSameTimeSeries() {
- try (Statement statement =
- DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
- .createStatement()) {
- statement.execute("select s1, s1 into s2, s3 from root.sg.d1");
-
- ResultSet resultSet = statement.executeQuery("select s2, s3 from root.sg.d1");
-
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 2, columnCount);
-
- for (int i = 0; i < INSERTION_SQLS.length; ++i) {
- assertTrue(resultSet.next());
- StringBuilder stringBuilder = new StringBuilder();
- for (int j = 0; j < 2 + 1; ++j) {
- assertEquals(resultSet.getString(2), resultSet.getString(3));
- stringBuilder.append(resultSet.getString(j + 1)).append(',');
- }
- System.out.println(stringBuilder.toString());
- }
-
- assertFalse(resultSet.next());
- resultSet.close();
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testSelectUDF() {
- try (Statement statement =
- DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")
- .createStatement()) {
- statement.execute(
- "select s1, sin(s1), s1 + s1 into ${2}.s2, ${2}.s3, ${2}.s4 from root.sg.d1");
-
- ResultSet resultSet = statement.executeQuery("select s2, s3, s4 from root.sg.d1.d1");
-
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 3, columnCount);
-
- for (int i = 1; i < INSERTION_SQLS.length; ++i) {
- assertTrue(resultSet.next());
- StringBuilder stringBuilder = new StringBuilder();
- for (int j = 0; j < 2 + 1; ++j) {
- double s2 = Double.parseDouble(resultSet.getString(2));
- double s3 = Double.parseDouble(resultSet.getString(3));
- double s4 = Double.parseDouble(resultSet.getString(4));
- assertEquals(i, s2, 0);
- assertEquals(Math.sin(i), s3, 0);
- assertEquals((double) i + (double) i, s4, 0);
- stringBuilder.append(resultSet.getString(j + 1)).append(',');
- }
- System.out.println(stringBuilder.toString());
- }
-
- assertFalse(resultSet.next());
- resultSet.close();
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
}