You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/07/07 02:46:36 UTC
[iotdb] branch master updated: [IOTDB-3628][IOTDB-3630][IOTDB-3764] Fix some faild ITs of UDF
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 73db1ee9e4 [IOTDB-3628][IOTDB-3630][IOTDB-3764] Fix some faild ITs of UDF
73db1ee9e4 is described below
commit 73db1ee9e42b9e9456f8595ab5d4d1856362c31a
Author: lancelly <10...@users.noreply.github.com>
AuthorDate: Thu Jul 7 10:46:31 2022 +0800
[IOTDB-3628][IOTDB-3630][IOTDB-3764] Fix some faild ITs of UDF
---
.../org/apache/iotdb/db/it/IoTDBNestedQueryIT.java | 5 +-
.../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java | 7 -
.../iotdb/db/integration/IoTDBNestedQueryIT.java | 681 ---------------------
.../db/integration/IoTDBUDFWindowQueryIT.java | 35 +-
.../integration/IoTDBUDTFAlignByTimeQueryIT.java | 628 -------------------
5 files changed, 33 insertions(+), 1323 deletions(-)
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBNestedQueryIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBNestedQueryIT.java
index 27d860828a..2580a38d23 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBNestedQueryIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBNestedQueryIT.java
@@ -318,7 +318,6 @@ public class IoTDBNestedQueryIT {
}
@Test
- @Ignore
public void testSelectEmptyColumns() {
final int[] windows =
new int[] {
@@ -333,7 +332,7 @@ public class IoTDBNestedQueryIT {
+ "size_window_counter(cos(empty - empty) + empty, '%s'='%s', '%s'='%s'), "
+ "size_window_counter(cos(empty), cos(empty), '%s'='%s', '%s'='%s'), "
+ "empty, sin(empty) - bottom_k(top_k(empty, 'k'='111'), 'k'='111'), "
- + "empty * empty / empty + empty %% empty - empty from root.vehicle",
+ + "empty * empty / empty + empty %% empty - empty from root.vehicle.d2",
UDFTestConstant.ACCESS_STRATEGY_KEY,
UDFTestConstant.ACCESS_STRATEGY_SLIDING_TIME,
UDFTestConstant.TIME_INTERVAL_KEY,
@@ -639,7 +638,7 @@ public class IoTDBNestedQueryIT {
}
@Test
- @Ignore // not supported in 0.13
+ @Ignore
public void testTimeExpressions() {
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
index fa05803215..89ec6966ed 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.itbase.category.LocalStandaloneIT;
import org.junit.AfterClass;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
@@ -258,8 +257,6 @@ public class IoTDBUDTFBuiltinFunctionIT {
}
}
- // TODO remove @Ignore while completely supporting udf in LocalStandaloneOnMpp
- @Ignore
@Test
public void testConstantTimeSeriesGeneratingFunctions() {
String[] expected = {
@@ -912,8 +909,6 @@ public class IoTDBUDTFBuiltinFunctionIT {
}
}
- // TODO remove @Ignore while completely supporting udf in LocalStandaloneOnMpp
- @Ignore
@Test
public void testUDTFJexl() {
try (Connection connection = EnvFactory.getEnv().getConnection();
@@ -1044,8 +1039,6 @@ public class IoTDBUDTFBuiltinFunctionIT {
}
}
- // TODO remove @Ignore while completely supporting udf in LocalStandaloneOnMpp
- @Ignore
@Test
public void testStringFunctions() {
String[] createSqls =
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
deleted file mode 100644
index 7f613da051..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
+++ /dev/null
@@ -1,681 +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.integration;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.query.udf.example.ExampleUDFConstant;
-import org.apache.iotdb.db.service.IoTDB;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-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;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBNestedQueryIT {
-
- protected static final int ITERATION_TIMES = 10_000;
-
- @BeforeClass
- public static void setUp() throws Exception {
- IoTDBDescriptor.getInstance().getConfig().setUdfCollectorMemoryBudgetInMB(5);
- IoTDBDescriptor.getInstance().getConfig().setUdfTransformerMemoryBudgetInMB(5);
- IoTDBDescriptor.getInstance().getConfig().setUdfReaderMemoryBudgetInMB(5);
- EnvironmentUtils.envSetUp();
- Class.forName(Config.JDBC_DRIVER_NAME);
- createTimeSeries();
- generateData();
- registerUDF();
- }
-
- private static void createTimeSeries() throws MetadataException {
- IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.d1.s1"),
- TSDataType.INT32,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.d1.s2"),
- TSDataType.INT64,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.d1.s3"),
- TSDataType.TEXT,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.d2.s1"),
- TSDataType.FLOAT,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.d2.s2"),
- TSDataType.DOUBLE,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- IoTDB.schemaProcessor.createTimeseries(
- new PartialPath("root.vehicle.empty"),
- TSDataType.DOUBLE,
- TSEncoding.PLAIN,
- CompressionType.UNCOMPRESSED,
- null);
- }
-
- private static void generateData() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- for (int i = 1; i <= ITERATION_TIMES; ++i) {
- statement.execute(
- String.format(
- "insert into root.vehicle.d1(timestamp,s1,s2,s3) values(%d,%d,%d,%s)", i, i, i, i));
- statement.execute(
- (String.format(
- "insert into root.vehicle.d2(timestamp,s1,s2) values(%d,%d,%d)", i, i, i, i)));
- }
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- private static void registerUDF() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- statement.execute("create function adder as 'org.apache.iotdb.db.query.udf.example.Adder'");
- statement.execute(
- "create function time_window_counter as 'org.apache.iotdb.db.query.udf.example.Counter'");
- statement.execute(
- "create function size_window_counter as 'org.apache.iotdb.db.query.udf.example.Counter'");
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- EnvironmentUtils.cleanEnv();
- IoTDBDescriptor.getInstance().getConfig().setUdfCollectorMemoryBudgetInMB(100);
- IoTDBDescriptor.getInstance().getConfig().setUdfTransformerMemoryBudgetInMB(100);
- IoTDBDescriptor.getInstance().getConfig().setUdfReaderMemoryBudgetInMB(100);
- }
-
- @Test
- public void testNestedArithmeticExpressions() {
- String sqlStr =
- "select d1.s1, d2.s2, d1.s1 + d1.s2 - (d2.s1 + d2.s2), d1.s2 * (d2.s1 / d1.s1), d1.s2 + d1.s2 * d2.s1 - d2.s1, d1.s1 - (d1.s1 - (-d1.s1)), (-d2.s1) * (-d2.s2) / (-d1.s2) from root.vehicle";
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 7, resultSet.getMetaData().getColumnCount());
-
- int count = 0;
- while (resultSet.next()) {
- ++count;
-
- assertEquals(count, Integer.parseInt(resultSet.getString(1)));
- assertEquals(count, Double.parseDouble(resultSet.getString(2)), 0);
- assertEquals(count, Double.parseDouble(resultSet.getString(3)), 0);
- assertEquals(0.0, Double.parseDouble(resultSet.getString(4)), 0);
- assertEquals(count, Double.parseDouble(resultSet.getString(5)), 0);
- assertEquals(count * count, Double.parseDouble(resultSet.getString(6)), 0);
- assertEquals(-count, Double.parseDouble(resultSet.getString(7)), 0);
- assertEquals(-count, Double.parseDouble(resultSet.getString(8)), 0);
- }
-
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testNestedRowByRowUDFExpressions() {
- String sqlStr =
- "select s1, s2, sin(sin(s1) * sin(s2) + cos(s1) * cos(s1)) + sin(sin(s1 - s1 + s2) * sin(s2) + cos(s1) * cos(s1)), asin(sin(asin(sin(s1 - s2 / (-s1))))) from root.vehicle.d2";
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 4, resultSet.getMetaData().getColumnCount());
-
- int count = 0;
- while (resultSet.next()) {
- ++count;
-
- assertEquals(count, Integer.parseInt(resultSet.getString(1)));
- assertEquals(count, Double.parseDouble(resultSet.getString(2)), 0);
- assertEquals(count, Double.parseDouble(resultSet.getString(3)), 0);
- assertEquals(2 * Math.sin(1.0), Double.parseDouble(resultSet.getString(4)), 1e-5);
- assertEquals(
- Math.asin(Math.sin(Math.asin(Math.sin(count - count / (-count))))),
- Double.parseDouble(resultSet.getString(5)),
- 1e-5);
- }
-
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testUDFTerminateMethodInNestedExpressions() {
- String sqlStr =
- "select bottom_k(top_k(top_k(s1 + s1 / s1 - s2 / s1, 'k'='100'), 'k'='1'), 'k'='1'), top_k(top_k(s1 + s1 / s1 - s2 / s1, 'k'='100'), 'k'='1'), top_k(s1 + s1 / s1 - s2 / s1, 'k'='1'), top_k(s1, 'k'='1'), top_k(s2, 'k'='1') from root.vehicle.d2";
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 5, resultSet.getMetaData().getColumnCount());
-
- int count = 0;
- while (resultSet.next()) {
- ++count;
-
- assertEquals(ITERATION_TIMES, Double.parseDouble(resultSet.getString(1)), 1e-5);
- assertEquals(ITERATION_TIMES, Double.parseDouble(resultSet.getString(2)), 1e-5);
- assertEquals(ITERATION_TIMES, Double.parseDouble(resultSet.getString(3)), 1e-5);
- assertEquals(ITERATION_TIMES, Double.parseDouble(resultSet.getString(4)), 1e-5);
- assertEquals(ITERATION_TIMES, Double.parseDouble(resultSet.getString(5)), 1e-5);
- }
-
- assertEquals(1, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testUDFWithMultiInputsInNestedExpressions() {
- String sqlStr =
- "select adder(d1.s1, d1.s2), -adder(d2.s1, d2.s2), adder(adder(d1.s1, d1.s2), -adder(d2.s1, d2.s2)), adder(adder(d1.s1, d1.s2), adder(d2.s1, d2.s2)), adder(d1.s1, d1.s2) - adder(d1.s1, d1.s2) + adder(adder(d1.s1, d1.s2), -adder(d2.s1, d2.s2)) from root.vehicle";
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 5, resultSet.getMetaData().getColumnCount());
-
- int count = 0;
- while (resultSet.next()) {
- ++count;
-
- assertEquals(count, Double.parseDouble(resultSet.getString(1)), 1e-5);
- assertEquals(2 * count, Double.parseDouble(resultSet.getString(2)), 1e-5);
- assertEquals(-2 * count, Double.parseDouble(resultSet.getString(3)), 1e-5);
- assertEquals(0, Double.parseDouble(resultSet.getString(4)), 1e-5);
- assertEquals(4 * count, Double.parseDouble(resultSet.getString(5)), 1e-5);
- assertEquals(0, Double.parseDouble(resultSet.getString(6)), 1e-5);
- }
-
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testNestedWindowingFunctionExpressions() {
- final int[] windows =
- new int[] {
- 1,
- 2,
- 3,
- 100,
- 499,
- ITERATION_TIMES - 1,
- ITERATION_TIMES,
- ITERATION_TIMES + 1,
- ITERATION_TIMES + 13
- };
-
- for (int window : windows) {
- String sqlStr =
- String.format(
- "select time_window_counter(sin(d1.s1), '%s'='%s', '%s'='%s'), time_window_counter(sin(d1.s1), cos(d2.s2) / sin(d1.s1), d1.s2, '%s'='%s', '%s'='%s'), size_window_counter(cos(d2.s2), '%s'='%s', '%s'='%s'), size_window_counter(cos(d2.s2), cos(d2.s2), '%s'='%s', '%s'='%s') from root.vehicle",
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_TIME,
- ExampleUDFConstant.TIME_INTERVAL_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_TIME,
- ExampleUDFConstant.TIME_INTERVAL_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_SIZE,
- ExampleUDFConstant.WINDOW_SIZE_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_SIZE,
- ExampleUDFConstant.WINDOW_SIZE_KEY,
- window);
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 4, resultSet.getMetaData().getColumnCount());
-
- int count = 0;
- while (resultSet.next()) {
- assertEquals((long) count * window + 1, Long.parseLong(resultSet.getString(1)));
-
- double c2 = Double.parseDouble(resultSet.getString(2));
- double c3 = Double.parseDouble(resultSet.getString(3));
- double c4 = Double.parseDouble(resultSet.getString(4));
- double c5 = Double.parseDouble(resultSet.getString(5));
-
- ++count;
-
- assertEquals(
- ((ITERATION_TIMES < count * window)
- ? window - (count * window - ITERATION_TIMES)
- : window),
- c2,
- 0);
- assertEquals(c2, c3, 0);
- assertEquals(c2, c4, 0);
- assertEquals(c2, c5, 0);
- }
-
- assertEquals(ITERATION_TIMES / window + (ITERATION_TIMES % window == 0 ? 0 : 1), count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
- }
-
- @Test
- public void testSelectEmptyColumns() {
- final int[] windows =
- new int[] {
- 1, 2, 3, 100, 499,
- };
-
- for (int window : windows) {
- String sqlStr =
- String.format(
- "select time_window_counter(sin(empty), '%s'='%s', '%s'='%s'), "
- + "time_window_counter(sin(empty), cos(empty) / sin(empty), empty, '%s'='%s', '%s'='%s'), "
- + "size_window_counter(cos(empty - empty) + empty, '%s'='%s', '%s'='%s'), "
- + "size_window_counter(cos(empty), cos(empty), '%s'='%s', '%s'='%s'), "
- + "empty, sin(empty) - bottom_k(top_k(empty, 'k'='111'), 'k'='111'), "
- + "empty * empty / empty + empty %% empty - empty from root.vehicle",
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_TIME,
- ExampleUDFConstant.TIME_INTERVAL_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_TIME,
- ExampleUDFConstant.TIME_INTERVAL_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_SIZE,
- ExampleUDFConstant.WINDOW_SIZE_KEY,
- window,
- ExampleUDFConstant.ACCESS_STRATEGY_KEY,
- ExampleUDFConstant.ACCESS_STRATEGY_SLIDING_SIZE,
- ExampleUDFConstant.WINDOW_SIZE_KEY,
- window);
-
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 7, resultSet.getMetaData().getColumnCount());
- assertFalse(resultSet.next());
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
- }
-
- @Test
- public void testInvalidNestedBuiltInAggregation() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query = "SELECT first_value(abs(s1)) FROM root.vehicle.d1";
- try {
- statement.executeQuery(query);
- } catch (SQLException e) {
- Assert.assertTrue(
- e.getMessage()
- .contains("The argument of the aggregation function must be a time series."));
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testRawDataQueryWithConstants() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query = "SELECT 1 + s1 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getDouble(2), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
-
- query = "SELECT (1 + 4) * 2 / 10 + s1 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getDouble(2), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testDuplicatedRawDataQueryWithConstants() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query = "SELECT 1 + s1, 1 + s1 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getDouble(2), 0.01);
- Assert.assertEquals(i + 1.0D, rs.getDouble(3), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testCommutativeLaws() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query = "SELECT s1, s1 + 1, 1 + s1, s1 * 2, 2 * s1 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i, rs.getInt(2));
- Assert.assertEquals(i + 1.0D, rs.getDouble(3), 0.01);
- Assert.assertEquals(i + 1.0D, rs.getDouble(4), 0.01);
- Assert.assertEquals(i * 2.0D, rs.getDouble(5), 0.01);
- Assert.assertEquals(i * 2.0D, rs.getDouble(6), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testAssociativeLaws() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query =
- "SELECT s1, s1 + 1 + 2, (s1 + 1) + 2, s1 + (1 + 2), s1 * 2 * 3, s1 * (2 * 3), (s1 * 2) * 3 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i, rs.getInt(2));
- Assert.assertEquals(i + 3.0D, rs.getDouble(3), 0.01);
- Assert.assertEquals(i + 3.0D, rs.getDouble(4), 0.01);
- Assert.assertEquals(i + 3.0D, rs.getDouble(5), 0.01);
- Assert.assertEquals(i * 6.0D, rs.getDouble(6), 0.01);
- Assert.assertEquals(i * 6.0D, rs.getDouble(7), 0.01);
- Assert.assertEquals(i * 6.0D, rs.getDouble(8), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testDistributiveLaw() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query =
- "SELECT s1, (s1 + 1) * 2, s1 * 2 + 1 * 2, (s1 + 1) / 2, s1 / 2 + 1 / 2 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i, rs.getInt(2));
- Assert.assertEquals(2 * i + 2.0D, rs.getDouble(3), 0.01);
- Assert.assertEquals(2 * i + 2.0D, rs.getDouble(4), 0.01);
- Assert.assertEquals(i / 2.0D + 0.5D, rs.getDouble(5), 0.01);
- Assert.assertEquals(i / 2.0D + 0.5D, rs.getDouble(6), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testOrderOfArithmeticOperations() {
- // Priority from high to low:
- // 1. exponentiation and root extraction (not supported yet)
- // 2. multiplication and division
- // 3. addition and subtraction
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
-
- String query =
- "SELECT 1 + s1 * 2 + 1, (1 + s1) * 2 + 1, (1 + s1) * (2 + 1) FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(2 * i + 2.0D, rs.getDouble(2), 0.01);
- Assert.assertEquals(2 * i + 3.0D, rs.getDouble(3), 0.01);
- Assert.assertEquals(3 * i + 3.0D, rs.getDouble(4), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
-
- query = "SELECT 1 - s1 / 2 + 1, (1 - s1) / 2 + 1, (1 - s1) / (2 + 1) FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(2.0D - i / 2.0D, rs.getDouble(2), 0.01);
- Assert.assertEquals(1.5 - i / 2.0D, rs.getDouble(3), 0.01);
- Assert.assertEquals((1.0D / 3.0D) * (1.0D - i), rs.getDouble(4), 0.01);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testBetweenExpression() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- int start = 1, end = 5;
- String query = "SELECT * FROM root.vehicle.d1 WHERE s1 BETWEEN " + start + " AND " + end;
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = start; i <= end; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(String.valueOf(i), rs.getString("Time"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s1"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s2"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s3"));
- }
- }
-
- query =
- "SELECT * FROM root.vehicle.d1 WHERE s1 NOT BETWEEN " // test not between
- + (end + 1)
- + " AND "
- + ITERATION_TIMES;
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = start; i <= end; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(String.valueOf(i), rs.getString("Time"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s1"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s2"));
- Assert.assertEquals(String.valueOf(i), rs.getString("root.vehicle.d1.s3"));
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testRegularLikeInExpressions() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- String query =
- "SELECT s1 FROM root.vehicle.d1 WHERE s3 LIKE '_' && s3 REGEXP '[0-9]' && s3 IN ('4', '2', '3')";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 2; i <= 4; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-
- @Test
- public void testTimeExpressions() {
- try (Connection connection =
- DriverManager.getConnection(
- Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
- Statement statement = connection.createStatement()) {
- String query =
- "SELECT s1, time, time, -(-time), time + 1 - 1, time + s1 - s1, time + 1 - 1 FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 1; i <= ITERATION_TIMES; ++i) {
- assertTrue(rs.next());
- for (int j = 1; j <= 8; ++j) {
- assertEquals(i, Double.parseDouble(rs.getString(j)), 0.001);
- }
- }
- assertFalse(rs.next());
- }
-
- query = "SELECT time, 2 * time FROM root.vehicle.d1";
- try (ResultSet rs = statement.executeQuery(query)) {
- assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- Assert.fail(e.getMessage());
- }
- }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFWindowQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFWindowQueryIT.java
index 808d319aaf..2be0b28771 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFWindowQueryIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFWindowQueryIT.java
@@ -25,10 +25,7 @@ import org.apache.iotdb.integration.env.EnvFactory;
import org.apache.iotdb.itbase.category.ClusterTest;
import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.*;
import org.junit.experimental.categories.Category;
import java.sql.Connection;
@@ -131,31 +128,37 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindow1() {
testSlidingSizeWindow((int) (0.1 * ITERATION_TIMES));
}
@Test
+ @Ignore
public void testSlidingSizeWindow2() {
testSlidingSizeWindow((int) (0.033 * ITERATION_TIMES));
}
@Test
+ @Ignore
public void testSlidingSizeWindow3() {
testSlidingSizeWindow((int) (0.333 * ITERATION_TIMES));
}
@Test
+ @Ignore
public void testSlidingSizeWindow4() {
testSlidingSizeWindow((int) (1.5 * ITERATION_TIMES));
}
@Test
+ @Ignore
public void testSlidingSizeWindow5() {
testSlidingSizeWindow(ITERATION_TIMES);
}
@Test
+ @Ignore
public void testSlidingSizeWindow6() {
testSlidingSizeWindow(3 * ITERATION_TIMES);
}
@@ -240,6 +243,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindow1() {
testSlidingTimeWindow(
(int) (0.33 * ITERATION_TIMES),
@@ -249,6 +253,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindow2() {
testSlidingTimeWindow(
(int) (0.033 * ITERATION_TIMES),
@@ -258,6 +263,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindow3() {
testSlidingTimeWindow(
(int) (2 * 0.033 * ITERATION_TIMES),
@@ -267,6 +273,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindow4() {
testSlidingTimeWindow(
(int) (0.033 * ITERATION_TIMES),
@@ -276,23 +283,27 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindow5() {
testSlidingTimeWindow(ITERATION_TIMES, ITERATION_TIMES, 0, ITERATION_TIMES);
}
@Test
+ @Ignore
public void testSlidingTimeWindow6() {
testSlidingTimeWindow(
(int) (1.01 * ITERATION_TIMES), (int) (0.01 * ITERATION_TIMES), 0, ITERATION_TIMES / 2);
}
@Test
+ @Ignore
public void testSlidingTimeWindow7() {
testSlidingTimeWindow(
(int) (0.01 * ITERATION_TIMES), (int) (1.01 * ITERATION_TIMES), 0, ITERATION_TIMES / 2);
}
@Test
+ @Ignore
public void testSlidingTimeWindow8() {
testSlidingTimeWindow(
(int) (1.01 * ITERATION_TIMES), (int) (1.01 * ITERATION_TIMES), 0, ITERATION_TIMES / 2);
@@ -407,26 +418,31 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingTimeWindowWithTimeIntervalOnly1() {
testSlidingTimeWindowWithTimeIntervalOnly(1);
}
@Test
+ @Ignore
public void testSlidingTimeWindowWithTimeIntervalOnly2() {
testSlidingTimeWindowWithTimeIntervalOnly(ITERATION_TIMES / 10);
}
@Test
+ @Ignore
public void testSlidingTimeWindowWithTimeIntervalOnly3() {
testSlidingTimeWindowWithTimeIntervalOnly(ITERATION_TIMES / 33);
}
@Test
+ @Ignore
public void testSlidingTimeWindowWithTimeIntervalOnly4() {
testSlidingTimeWindowWithTimeIntervalOnly(ITERATION_TIMES);
}
@Test
+ @Ignore
public void testSlidingTimeWindowWithTimeIntervalOnly5() {
testSlidingTimeWindowWithTimeIntervalOnly(2 * ITERATION_TIMES);
}
@@ -500,6 +516,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep1() {
testSlidingSizeWindowWithSlidingStep(1, 1, 0);
testSlidingSizeWindowWithSlidingStep(1, 1, 1);
@@ -509,6 +526,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep2() {
testSlidingSizeWindowWithSlidingStep(100, 100, 0);
testSlidingSizeWindowWithSlidingStep(100, 100, 100);
@@ -518,6 +536,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep3() {
testSlidingSizeWindowWithSlidingStep(111, 123, 0);
testSlidingSizeWindowWithSlidingStep(111, 123, (int) (0.434 * ITERATION_TIMES));
@@ -525,6 +544,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep4() {
testSlidingSizeWindowWithSlidingStep(123, 111, 0);
testSlidingSizeWindowWithSlidingStep(123, 111, (int) (0.434 * ITERATION_TIMES));
@@ -532,6 +552,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep5() {
testSlidingSizeWindowWithSlidingStep(100, 10000, 0);
testSlidingSizeWindowWithSlidingStep(100, 10000, 100);
@@ -541,6 +562,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep6() {
testSlidingSizeWindowWithSlidingStep(10000, 1000, 0);
testSlidingSizeWindowWithSlidingStep(10000, 1000, 1000);
@@ -550,6 +572,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep7() {
testSlidingSizeWindowWithSlidingStep((int) (1.5 * ITERATION_TIMES), 4333, 0);
testSlidingSizeWindowWithSlidingStep(
@@ -559,6 +582,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep8() {
testSlidingSizeWindowWithSlidingStep(10000, (int) (1.5 * ITERATION_TIMES), 0);
testSlidingSizeWindowWithSlidingStep(
@@ -568,6 +592,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSlidingSizeWindowWithSlidingStep9() {
testSlidingSizeWindowWithSlidingStep(
(int) (1.5 * ITERATION_TIMES), (int) (1.5 * ITERATION_TIMES), 0);
@@ -689,6 +714,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testSizeWindowUDFWithConstants() {
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
@@ -729,6 +755,7 @@ public class IoTDBUDFWindowQueryIT {
}
@Test
+ @Ignore
public void testTimeWindowUDFWithConstants() {
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFAlignByTimeQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFAlignByTimeQueryIT.java
index 35f1c43be9..0e94770d87 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFAlignByTimeQueryIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFAlignByTimeQueryIT.java
@@ -25,7 +25,6 @@ import org.apache.iotdb.itbase.category.ClusterTest;
import org.apache.iotdb.itbase.category.LocalStandaloneTest;
import org.junit.AfterClass;
-import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -34,9 +33,6 @@ 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.assertFalse;
@@ -144,557 +140,6 @@ public class IoTDBUDTFAlignByTimeQueryIT {
.setUdfReaderMemoryBudgetInMB(100);
}
- @Test
- public void queryWithoutValueFilter1() {
- String sqlStr =
- "select udf(d1.s2, d1.s1), udf(d1.s1, d1.s2), d1.s1, d1.s2, udf(d1.s1, d1.s2), udf(d1.s2, d1.s1), d1.s1, d1.s2 from root.vehicle";
-
- Set<Integer> s1s2 = new HashSet<>(Arrays.asList(0, 1, 4, 5));
- Set<Integer> s1 = new HashSet<>(Arrays.asList(2, 6));
- Set<Integer> s2 = new HashSet<>(Arrays.asList(3, 7));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- int count = 0;
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 8, columnCount);
-
- StringBuilder expected, actual;
- while (resultSet.next()) {
- expected = new StringBuilder();
- actual = new StringBuilder();
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- actual
- .append(actualString == null ? "null" : Double.parseDouble(actualString))
- .append(", ");
-
- if (s1s2.contains(i - 2)) {
- expected.append(count % 3 != 0 ? (float) (count * 2) : "null").append(", ");
- } else if (s1.contains(i - 2)) {
- expected.append(count % 3 != 0 || count % 2 == 0 ? (float) count : "null").append(", ");
- } else if (s2.contains(i - 2)) {
- expected.append(count % 3 != 0 || count % 2 != 0 ? (float) count : "null").append(", ");
- }
- }
-
- assertEquals(expected.toString(), actual.toString());
- ++count;
- }
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter2() {
- String sqlStr = "select udf(*, *) from root.vehicle.d1";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int count = 0;
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 4, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- assertTrue(actualString == null || (int) (Double.parseDouble(actualString)) == count * 2);
- }
- ++count;
- }
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter3() {
- String sqlStr = "select *, udf(*, *), *, udf(*, *), * from root.vehicle.d1";
-
- Set<Integer> s1AndS2 = new HashSet<>(Arrays.asList(2, 3, 4, 5, 8, 9, 10, 11));
- Set<Integer> s1OrS2 = new HashSet<>(Arrays.asList(0, 1, 6, 7, 12, 13));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int count = 0;
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 14, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1AndS2.contains(i - 2)) {
- assertTrue(
- actualString == null || (int) (Double.parseDouble(actualString)) == count * 2);
- } else if (s1OrS2.contains(i - 2)) {
- assertTrue(actualString == null || (int) (Double.parseDouble(actualString)) == count);
- }
- }
- ++count;
- }
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter4() {
- String sqlStr =
- "select udf(*, *, 'addend'='" + ADDEND + "'), *, udf(*, *) from root.vehicle.d1";
-
- Set<Integer> s1AndS2WithAddend = new HashSet<>(Arrays.asList(0, 1, 2, 3));
- Set<Integer> s1AndS2 = new HashSet<>(Arrays.asList(6, 7, 8, 9));
- Set<Integer> s1OrS2 = new HashSet<>(Arrays.asList(4, 5));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int count = 0;
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 10, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1AndS2WithAddend.contains(i - 2)) {
- assertTrue(
- actualString == null
- || (int) (Double.parseDouble(actualString)) == count * 2 + ADDEND);
- } else if (s1AndS2.contains(i - 2)) {
- assertTrue(
- actualString == null || (int) (Double.parseDouble(actualString)) == count * 2);
- } else if (s1OrS2.contains(i - 2)) {
- assertTrue(actualString == null || (int) (Double.parseDouble(actualString)) == count);
- }
- }
- ++count;
- }
- assertEquals(ITERATION_TIMES, count);
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter5() {
- String sqlStr = "select multiplier(s2, 'a'='2', 'b'='5') from root.vehicle.d1";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
- assertEquals("Time", resultSet.getMetaData().getColumnName(1));
- assertEquals(
- "multiplier(root.vehicle.d1.s2, \"a\"=\"2\", \"b\"=\"5\")",
- resultSet.getMetaData().getColumnName(2));
-
- for (int i = 0; i < ITERATION_TIMES; ++i) {
- if (i % 3 != 0 || i % 2 != 0) {
- assertTrue(resultSet.next());
- assertEquals(i * 2 * 5, Integer.parseInt(resultSet.getString(2)));
- }
- }
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter6() {
- String sqlStr = "select max(s1), max(s2) from root.vehicle.d4";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
- assertEquals("Time", resultSet.getMetaData().getColumnName(1));
-
- String columnS1 = "max(root.vehicle.d4.s1)";
- String columnS2 = "max(root.vehicle.d4.s2)";
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(2))
- || columnS2.equals(resultSet.getMetaData().getColumnName(2)));
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(3))
- || columnS2.equals(resultSet.getMetaData().getColumnName(3)));
-
- assertTrue(resultSet.next());
- assertEquals(3 * (ITERATION_TIMES - 1), Integer.parseInt(resultSet.getString(columnS1)));
- assertNull(resultSet.getString(columnS2));
- assertFalse(resultSet.next());
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter7() {
- String sqlStr = "select terminate(s1), terminate(s2) from root.vehicle.d4";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
- assertEquals("Time", resultSet.getMetaData().getColumnName(1));
-
- String columnS1 = "terminate(root.vehicle.d4.s1)";
- String columnS2 = "terminate(root.vehicle.d4.s2)";
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(2))
- || columnS2.equals(resultSet.getMetaData().getColumnName(2)));
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(3))
- || columnS2.equals(resultSet.getMetaData().getColumnName(3)));
-
- for (int i = 0; i < ITERATION_TIMES; ++i) {
- assertTrue(resultSet.next());
- assertEquals(1, Integer.parseInt(resultSet.getString(columnS1)));
- assertNull(resultSet.getString(columnS2));
- }
-
- assertTrue(resultSet.next());
- assertEquals(ITERATION_TIMES, Integer.parseInt(resultSet.getString(columnS1)));
- assertNull(resultSet.getString(columnS2));
-
- assertFalse(resultSet.next());
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithoutValueFilter8() {
- String sqlStr = "select validate(s1, s2, 'k'='') from root.vehicle.d3";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.executeQuery(sqlStr);
- fail();
- } catch (SQLException throwable) {
- assertTrue(
- throwable
- .getMessage()
- .contains(
- "the data type of the input series (index: 0) is not valid. expected: [INT32, INT64]. actual: FLOAT."));
- }
- }
-
- @Test
- public void queryWithoutValueFilter9() {
- String sqlStr = "select validate(s1, s2, s1, 'k'=''), * from root.vehicle.d1";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.executeQuery(sqlStr);
- fail();
- } catch (SQLException throwable) {
- assertTrue(
- throwable
- .getMessage()
- .contains("the number of the input series is not valid. expected: 2. actual: 3."));
- }
- }
-
- @Test
- public void queryWithoutValueFilter10() {
- String sqlStr = "select validate(s1, s2), * from root.vehicle.d1";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.executeQuery(sqlStr);
- fail();
- } catch (SQLException throwable) {
- assertTrue(
- throwable.getMessage().contains("attribute \"k\" is required but was not provided."));
- }
- }
-
- @Test
- public void queryWithValueFilter1() {
- String sqlStr =
- "select udf(d2.s2, d2.s1), udf(d2.s1, d2.s2), d2.s1, d2.s2, udf(d2.s1, d2.s2), udf(d2.s2, d2.s1), d2.s1, d2.s2 from root.vehicle"
- + String.format(
- " where d2.s1 >= %d and d2.s2 < %d",
- (int) (0.25 * ITERATION_TIMES), (int) (0.75 * ITERATION_TIMES));
-
- Set<Integer> s1s2 = new HashSet<>(Arrays.asList(0, 1, 4, 5));
- Set<Integer> s1 = new HashSet<>(Arrays.asList(2, 6));
- Set<Integer> s2 = new HashSet<>(Arrays.asList(3, 7));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.25 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 8, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1s2.contains(i - 2)) {
- assertEquals(index * 2, (int) (Double.parseDouble(actualString)));
- } else if (s1.contains(i - 2)) {
- assertEquals(index, (int) (Double.parseDouble(actualString)));
- } else if (s2.contains(i - 2)) {
- assertEquals(index, (int) (Double.parseDouble(actualString)));
- }
- }
- ++index;
- }
- assertEquals((int) (0.5 * ITERATION_TIMES), index - (int) (0.25 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter2() {
- String sqlStr =
- "select udf(*, *, 'addend'='"
- + ADDEND
- + "'), *, udf(*, *) from root.vehicle.d2"
- + String.format(
- " where s1 >= %d and s2 < %d",
- (int) (0.25 * ITERATION_TIMES), (int) (0.75 * ITERATION_TIMES));
-
- Set<Integer> s1AndS2WithAddend = new HashSet<>(Arrays.asList(0, 1, 2, 3));
- Set<Integer> s1AndS2 = new HashSet<>(Arrays.asList(6, 7, 8, 9));
- Set<Integer> s1OrS2 = new HashSet<>(Arrays.asList(4, 5));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.25 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 10, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1AndS2WithAddend.contains(i - 2)) {
- assertEquals(index * 2 + ADDEND, (int) (Double.parseDouble(actualString)));
- } else if (s1AndS2.contains(i - 2)) {
- assertEquals(index * 2, (int) (Double.parseDouble(actualString)));
- } else if (s1OrS2.contains(i - 2)) {
- assertEquals(index, (int) (Double.parseDouble(actualString)));
- }
- }
- ++index;
- }
- assertEquals((int) (0.5 * ITERATION_TIMES), index - (int) (0.25 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter3() {
- String sqlStr =
- "select udf(d1.s2, d1.s1), udf(d1.s1, d1.s2), d1.s1, d1.s2, udf(d1.s1, d1.s2), udf(d1.s2, d1.s1), d1.s1, d1.s2 from root.vehicle"
- + String.format(
- " where d3.s1 >= %d and d3.s2 < %d",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES));
-
- Set<Integer> s1s2 = new HashSet<>(Arrays.asList(0, 1, 4, 5));
- Set<Integer> s1 = new HashSet<>(Arrays.asList(2, 6));
- Set<Integer> s2 = new HashSet<>(Arrays.asList(3, 7));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.3 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 8, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1s2.contains(i - 2)) {
- if (index % 3 != 0) {
- assertEquals(index * 2, Double.parseDouble(actualString), 0);
- } else {
- assertNull(actualString);
- }
- } else if (s1.contains(i - 2)) {
- if (index % 3 != 0 || index % 2 == 0) {
- assertEquals(index, Double.parseDouble(actualString), 0);
- } else {
- assertNull(actualString);
- }
- } else if (s2.contains(i - 2)) {
- if (index % 3 != 0 || index % 2 != 0) {
- assertEquals(index, Double.parseDouble(actualString), 0);
- } else {
- assertNull(actualString);
- }
- }
- }
- ++index;
- }
- assertEquals((int) (0.4 * ITERATION_TIMES), index - (int) (0.3 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter4() {
- String sqlStr =
- "select udf(s2, s1), udf(s1, s2), s1, s2, udf(s1, s2), udf(s2, s1), s1, s2 from root.vehicle.d2, root.vehicle.d3"
- + String.format(
- " where root.vehicle.d2.s1 >= %d and root.vehicle.d3.s2 < %d",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES));
-
- Set<Integer> s1s2 =
- new HashSet<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15, 16, 17, 18, 19));
- Set<Integer> s1 = new HashSet<>(Arrays.asList(8, 9, 20, 21));
- Set<Integer> s2 = new HashSet<>(Arrays.asList(10, 11, 22, 23));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.3 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 4 * 2 + 4 + 4 * 2 + 4, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- if (s1s2.contains(i - 2)) {
- assertEquals(index * 2, Double.parseDouble(actualString), 0);
- } else if (s1.contains(i - 2) || s2.contains(i - 2)) {
- assertEquals(index, Double.parseDouble(actualString), 0);
- }
- }
- ++index;
- }
- assertEquals((int) (0.4 * ITERATION_TIMES), index - (int) (0.3 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter5() {
- String sqlStr =
- "select *, udf(*, *), udf(*, *) from root.vehicle.d2, root.vehicle.d3, root.vehicle.d2"
- + String.format(
- " where root.vehicle.d2.s1 >= %d and root.vehicle.d3.s2 < %d",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.3 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 6 + 2 * 2 * 3 * 2 * 3, columnCount); // time + * + 2 * udf(*, *)
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- assertEquals(i - 2 < 6 ? index : 2 * index, Double.parseDouble(actualString), 0);
- }
- ++index;
- }
- assertEquals((int) (0.4 * ITERATION_TIMES), index - (int) (0.3 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter6() {
- String sqlStr =
- "select *, udf(*, *), udf(*, *) from root.vehicle.d2, root.vehicle.d3, root.vehicle.d2"
- + String.format(
- " where root.vehicle.d2.s1 >= %d and root.vehicle.d3.s2 < %d ",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES))
- + String.format(" limit %d offset %d", LIMIT, OFFSET);
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.3 * ITERATION_TIMES) + OFFSET;
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + 6 + 2 * 2 * 3 * 2 * 3, columnCount); // time + * + 2 * udf(*, *)
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- assertEquals(i - 2 < 6 ? index : 2 * index, Double.parseDouble(actualString), 0);
- }
- ++index;
- }
- assertEquals(LIMIT, index - ((int) (0.3 * ITERATION_TIMES) + OFFSET));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter7() {
- String sqlStr =
- "select *, udf(*, *), udf(*, *) from root.vehicle.d2, root.vehicle.d3, root.vehicle.d2"
- + String.format(
- " where root.vehicle.d2.s1 >= %d and root.vehicle.d3.s2 < %d ",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES))
- + String.format(" slimit %d soffset %d", SLIMIT, SOFFSET);
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- int index = (int) (0.3 * ITERATION_TIMES);
- int columnCount = resultSet.getMetaData().getColumnCount();
- assertEquals(1 + SLIMIT, columnCount);
- while (resultSet.next()) {
- for (int i = 2; i <= columnCount; ++i) {
- String actualString = resultSet.getString(i);
- assertEquals(
- i - 2 + SOFFSET < 6 ? index : 2 * index, Double.parseDouble(actualString), 0);
- }
- ++index;
- }
- assertEquals((int) (0.4 * ITERATION_TIMES), index - (int) (0.3 * ITERATION_TIMES));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void queryWithValueFilter8() {
- String sqlStr =
- "select max(s1), max(s2) from root.vehicle.d4"
- + String.format(
- " where root.vehicle.d4.s1 >= %d and root.vehicle.d4.s2 < %d ",
- (int) (0.3 * ITERATION_TIMES), (int) (0.7 * ITERATION_TIMES));
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
-
- assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
- assertEquals("Time", resultSet.getMetaData().getColumnName(1));
-
- String columnS1 = "max(root.vehicle.d4.s1)";
- String columnS2 = "max(root.vehicle.d4.s2)";
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(2))
- || columnS2.equals(resultSet.getMetaData().getColumnName(2)));
- assertTrue(
- columnS1.equals(resultSet.getMetaData().getColumnName(3))
- || columnS2.equals(resultSet.getMetaData().getColumnName(3)));
-
- assertFalse(resultSet.next());
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
@Test
public void queryWithValueFilter9() {
String sqlStr =
@@ -772,77 +217,4 @@ public class IoTDBUDTFAlignByTimeQueryIT {
fail(throwable.getMessage());
}
}
-
- @Test
- public void queryNonexistentSeries() {
- String sqlStr =
- "select max(s100), udf(*, s100), udf(*, s100), udf(s100, s100) from root.vehicle.d4";
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- ResultSet resultSet = statement.executeQuery(sqlStr);
- assertEquals(1, resultSet.getMetaData().getColumnCount());
- assertEquals("Time", resultSet.getMetaData().getColumnName(1));
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
-
- @Test
- public void testRowByRowUDFWithConstants() {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- String query = "SELECT udf(s1, 1) FROM root.vehicle.d2";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 0; i < ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getLong(2), 0.001);
- }
- Assert.assertFalse(rs.next());
- }
-
- query = "SELECT udf(s1, (1 + 4) * 2 / 10) FROM root.vehicle.d2";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 0; i < ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getLong(2), 0.001);
- }
- Assert.assertFalse(rs.next());
- }
-
- query = "SELECT udf(s1 + 1, 0) FROM root.vehicle.d2";
- try (ResultSet rs = statement.executeQuery(query)) {
- for (int i = 0; i < ITERATION_TIMES; i++) {
- Assert.assertTrue(rs.next());
- Assert.assertEquals(i, rs.getLong(1));
- Assert.assertEquals(i + 1.0D, rs.getLong(2), 0.001);
- }
- Assert.assertFalse(rs.next());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
-
- // Aligned timeseries is not supported in UDF/Arithmetic expressions/nested expressions queries
- // for now.
- // This case can be removed once aligned timeseries is supported in above queries.
- @Test
- public void testAlignedTimeseriesNotSupported() {
- try (Connection connection = EnvFactory.getEnv().getConnection()) {
- try (Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery("select sin(s1) + cos(s2) from root.sg1")) {
- fail();
- } catch (SQLException e) {
- assertTrue(
- e.getMessage()
- .contains("Aligned timeseries is not supported in current query for now."));
- }
- } catch (SQLException throwable) {
- fail(throwable.getMessage());
- }
- }
}