This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 858bc562efd Remove IoTDBOrderByForDebugIT. #17351
858bc562efd is described below
commit 858bc562efdc13622f1bf9e699405a43d894d1c7
Author: Zhihao Shen <[email protected]>
AuthorDate: Wed Mar 25 11:04:21 2026 +0800
Remove IoTDBOrderByForDebugIT. #17351
---
.../db/it/orderBy/IoTDBOrderByForDebugIT.java | 1410 --------------------
1 file changed, 1410 deletions(-)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByForDebugIT.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByForDebugIT.java
deleted file mode 100644
index 2f5807388d1..00000000000
---
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByForDebugIT.java
+++ /dev/null
@@ -1,1410 +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.orderBy;
-
-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.bouncycastle.util.Arrays;
-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.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Objects;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-@RunWith(IoTDBTestRunner.class)
-@Category({LocalStandaloneIT.class, ClusterIT.class})
-public class IoTDBOrderByForDebugIT {
-
- // the data can be viewed in
- //
https://docs.google.com/spreadsheets/d/1OWA1bKraArCwWVnuTjuhJ5yLG0PFLdD78gD6FjquepI/edit#gid=0
- private static final String[] sql =
- new String[] {
- "CREATE DATABASE root.sg",
- "CREATE TIMESERIES root.sg.d.num WITH DATATYPE=INT32, ENCODING=RLE",
- "CREATE TIMESERIES root.sg.d.bigNum WITH DATATYPE=INT64, ENCODING=RLE",
- "CREATE TIMESERIES root.sg.d.floatNum WITH DATATYPE=DOUBLE,
ENCODING=RLE, 'MAX_POINT_NUMBER'='5'",
- "CREATE TIMESERIES root.sg.d.str WITH DATATYPE=TEXT, ENCODING=PLAIN",
- "CREATE TIMESERIES root.sg.d.bool WITH DATATYPE=BOOLEAN,
ENCODING=PLAIN",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(0,3,2947483648,231.2121,\"coconut\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(20,2,2147483648,434.12,\"pineapple\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(40,1,2247483648,12.123,\"apricot\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(80,9,2147483646,43.12,\"apple\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(100,8,2147483964,4654.231,\"papaya\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536000000,6,2147483650,1231.21,\"banana\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536000100,10,3147483648,231.55,\"pumelo\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536000500,4,2147493648,213.1,\"peach\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536001000,5,2149783648,56.32,\"orange\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536010000,7,2147983648,213.112,\"lemon\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(31536100000,11,2147468648,54.121,\"pitaya\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(41536000000,12,2146483648,45.231,\"strawberry\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(41536000020,14,2907483648,231.34,\"cherry\",FALSE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(41536900000,13,2107483648,54.12,\"lychee\",TRUE)",
- "insert into root.sg.d(timestamp,num,bigNum,floatNum,str,bool)
values(51536000000,15,3147483648,235.213,\"watermelon\",TRUE)",
- // Newly added 'flush' command compared to IoTDBOrderByIT
- "flush"
- };
-
- private static final String[] sql2 =
- new String[] {
- "CREATE TIMESERIES root.sg.d2.num WITH DATATYPE=INT32, ENCODING=RLE",
- "CREATE TIMESERIES root.sg.d2.bigNum WITH DATATYPE=INT64,
ENCODING=RLE",
- "CREATE TIMESERIES root.sg.d2.floatNum WITH DATATYPE=DOUBLE,
ENCODING=RLE, 'MAX_POINT_NUMBER'='5'",
- "CREATE TIMESERIES root.sg.d2.str WITH DATATYPE=TEXT, ENCODING=PLAIN",
- "CREATE TIMESERIES root.sg.d2.bool WITH DATATYPE=BOOLEAN,
ENCODING=PLAIN",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(0,3,2947483648,231.2121,\"coconut\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(20,2,2147483648,434.12,\"pineapple\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(40,1,2247483648,12.123,\"apricot\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(80,9,2147483646,43.12,\"apple\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(100,8,2147483964,4654.231,\"papaya\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536000000,6,2147483650,1231.21,\"banana\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536000100,10,3147483648,231.55,\"pumelo\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536000500,4,2147493648,213.1,\"peach\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536001000,5,2149783648,56.32,\"orange\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536010000,7,2147983648,213.112,\"lemon\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(31536100000,11,2147468648,54.121,\"pitaya\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(41536000000,12,2146483648,45.231,\"strawberry\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(41536000020,14,2907483648,231.34,\"cherry\",FALSE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(41536900000,13,2107483648,54.12,\"lychee\",TRUE)",
- "insert into root.sg.d2(timestamp,num,bigNum,floatNum,str,bool)
values(51536000000,15,3147483648,235.213,\"watermelon\",TRUE)",
- // Newly added 'flush' command compared to IoTDBOrderByIT
- "flush"
- };
-
- @BeforeClass
- public static void setUp() throws Exception {
-
EnvFactory.getEnv().getConfig().getDataNodeCommonConfig().setSortBufferSize(1024
* 1024L);
- EnvFactory.getEnv()
- .getConfig()
- .getDataNodeCommonConfig()
- .setQueryMemoryProportion("1:100:200:50:400:200:200:50");
- EnvFactory.getEnv().initClusterEnvironment();
- insertData();
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- EnvFactory.getEnv().cleanClusterEnvironment();
- }
-
- protected static void insertData() {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- for (String sql : sql) {
- statement.execute(sql);
- }
- for (String sql : sql2) {
- statement.execute(sql);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // ordinal data
- String[][] res =
- new String[][] {
- {"0", "3", "2947483648", "231.2121", "coconut", "false"},
- {"20", "2", "2147483648", "434.12", "pineapple", "true"},
- {"40", "1", "2247483648", "12.123", "apricot", "true"},
- {"80", "9", "2147483646", "43.12", "apple", "false"},
- {"100", "8", "2147483964", "4654.231", "papaya", "true"},
- {"31536000000", "6", "2147483650", "1231.21", "banana", "true"},
- {"31536000100", "10", "3147483648", "231.55", "pumelo", "false"},
- {"31536000500", "4", "2147493648", "213.1", "peach", "false"},
- {"31536001000", "5", "2149783648", "56.32", "orange", "false"},
- {"31536010000", "7", "2147983648", "213.112", "lemon", "true"},
- {"31536100000", "11", "2147468648", "54.121", "pitaya", "false"},
- {"41536000000", "12", "2146483648", "45.231", "strawberry", "false"},
- {"41536000020", "14", "2907483648", "231.34", "cherry", "false"},
- {"41536900000", "13", "2107483648", "54.12", "lychee", "true"},
- {"51536000000", "15", "3147483648", "235.213", "watermelon", "true"},
- };
-
- private void checkHeader(ResultSetMetaData resultSetMetaData, String[] title)
- throws SQLException {
- for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
- assertEquals(title[i - 1], resultSetMetaData.getColumnName(i));
- }
- }
-
- private void testNormalOrderBy(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData,
- new String[] {
- "Time",
- "root.sg.d.num",
- "root.sg.d.bigNum",
- "root.sg.d.floatNum",
- "root.sg.d.str",
- "root.sg.d.bool"
- });
- int i = 0;
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- String actualNum = resultSet.getString(2);
- String actualBigNum = resultSet.getString(3);
- double actualFloatNum = resultSet.getDouble(4);
- String actualStr = resultSet.getString(5);
- String actualBool = resultSet.getString(6);
-
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- assertEquals(res[ans[i]][2], actualBigNum);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloatNum,
0.0001);
- assertEquals(res[ans[i]][4], actualStr);
- assertEquals(res[ans[i]][5], actualBool);
-
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- // 1. One-level order by test
- @Test
- public void orderByTest1() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
num";
- int[] ans = {2, 1, 0, 7, 8, 5, 9, 4, 3, 6, 10, 11, 13, 12, 14};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest2() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
bigNum,time";
- int[] ans = {13, 11, 10, 3, 1, 5, 4, 7, 9, 8, 2, 12, 0, 6, 14};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest3() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
floatNum";
- int[] ans = {2, 3, 11, 13, 10, 8, 7, 9, 0, 12, 6, 14, 1, 5, 4};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest4() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
str";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest5() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
num desc";
- int[] ans = {2, 1, 0, 7, 8, 5, 9, 4, 3, 6, 10, 11, 13, 12, 14};
- testNormalOrderBy(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void orderByTest6() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.sg.d order by bigNum
desc, time asc";
- int[] ans = {6, 14, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest7() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
floatNum desc";
- int[] ans = {2, 3, 11, 13, 10, 8, 7, 9, 0, 12, 6, 14, 1, 5, 4};
- testNormalOrderBy(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void orderByTest8() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
str desc";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderBy(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void orderByTest15() {
- String sql = "select num+bigNum,floatNum from root.sg.d order by str";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
-
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData,
- new String[] {"Time", "root.sg.d.num + root.sg.d.bigNum",
"root.sg.d.floatNum"});
- int i = 0;
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- double actualNum = resultSet.getDouble(2);
- double actualFloat = resultSet.getDouble(3);
-
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(
- Long.parseLong(res[ans[i]][1]) + Long.parseLong(res[ans[i]][2]),
actualNum, 0.0001);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloat,
0.0001);
-
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- // 2. Multi-level order by test
- @Test
- public void orderByTest9() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
bool asc, str asc";
- int[] ans = {3, 12, 0, 8, 7, 10, 6, 11, 2, 5, 9, 13, 4, 1, 14};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest10() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
bool asc, num desc";
- int[] ans = {12, 11, 10, 6, 3, 8, 7, 0, 14, 13, 4, 9, 5, 1, 2};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest11() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.sg.d order by bigNum
desc, floatNum desc";
- int[] ans = {14, 6, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest12() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.sg.d order by str desc,
floatNum desc";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderBy(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void orderByTest13() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.sg.d order by
num+floatNum desc, floatNum desc";
- int[] ans = {4, 5, 1, 14, 12, 6, 0, 9, 7, 13, 10, 8, 11, 3, 2};
- testNormalOrderBy(sql, ans);
- }
-
- @Test
- public void orderByTest14() {
- String sql = "select num+bigNum from root.sg.d order by num+floatNum desc,
floatNum desc";
- int[] ans = {4, 5, 1, 14, 12, 6, 0, 9, 7, 13, 10, 8, 11, 3, 2};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(metaData, new String[] {"Time", "root.sg.d.num +
root.sg.d.bigNum"});
- int i = 0;
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- double actualNum = resultSet.getDouble(2);
-
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(
- Long.parseLong(res[ans[i]][1]) + Long.parseLong(res[ans[i]][2]),
actualNum, 0.001);
-
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByTest16() {
- String sql = "select num+floatNum from root.sg.d order by floatNum+num
desc, floatNum desc";
- int[] ans = {4, 5, 1, 14, 12, 6, 0, 9, 7, 13, 10, 8, 11, 3, 2};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(metaData, new String[] {"Time", "root.sg.d.num +
root.sg.d.floatNum"});
- int i = 0;
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- double actualNum = resultSet.getDouble(2);
-
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(
- Long.parseLong(res[ans[i]][1]) +
Double.parseDouble(res[ans[i]][3]),
- actualNum,
- 0.001);
-
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByTest17() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
str desc, str asc";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderBy(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void orderByTest18() {
- String sql = "select num,bigNum,floatNum,str,bool from root.sg.d order by
str, str";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderBy(sql, ans);
- }
-
- // limit cannot be pushed down in ORDER BY
- @Test
- public void orderByTest19() {
- String sql = "select num from root.sg.d order by num limit 5";
- int[] ans = {2, 1, 0, 7, 8};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(metaData, new String[] {"Time", "root.sg.d.num"});
- int i = 0;
- while (resultSet.next()) {
- String actualTime = resultSet.getString(1);
- String actualNum = resultSet.getString(2);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- // 3. aggregation query
- @Test
- public void orderByInAggregationTest() {
- String sql = "select avg(num) from root.sg.d group by session(10000ms)
order by avg(num) desc";
- double[][] ans = new double[][] {{15.0}, {13.0}, {13.0}, {11.0}, {6.4},
{4.6}};
- long[] times =
- new long[] {51536000000L, 41536000000L, 41536900000L, 31536100000L,
31536000000L, 0L};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[i], actualTime);
- assertEquals(ans[i][0], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest2() {
- String sql =
- "select avg(num) from root.sg.d group by session(10000ms) order by
max_value(floatNum)";
- double[][] ans =
- new double[][] {
- {13.0, 54.12},
- {11.0, 54.121},
- {13.0, 231.34},
- {15.0, 235.213},
- {6.4, 1231.21},
- {4.6, 4654.231}
- };
- long[] times =
- new long[] {41536900000L, 31536100000L, 41536000000L, 51536000000L,
31536000000L, 0L};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[i], actualTime);
- assertEquals(ans[i][0], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest3() {
- String sql =
- "select avg(num) from root.sg.d group by session(10000ms) order by
avg(num) desc,max_value(floatNum)";
- double[] ans = new double[] {15.0, 13.0, 13.0, 11.0, 6.4, 4.6};
- long[] times =
- new long[] {51536000000L, 41536900000L, 41536000000L, 31536100000L,
31536000000L, 0L};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[i], actualTime);
- assertEquals(ans[i], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest4() {
- String sql =
- "select avg(num)+avg(floatNum) from root.sg.d group by
session(10000ms) order by avg(num)+avg(floatNum)";
- double[][] ans =
- new double[][] {{1079.56122}, {395.4584}, {65.121}, {151.2855},
{67.12}, {250.213}};
- long[] times =
- new long[] {0L, 31536000000L, 31536100000L, 41536000000L,
41536900000L, 51536000000L};
- int[] order = new int[] {2, 4, 3, 5, 1, 0};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[order[i]], actualTime);
- assertEquals(ans[order[i]][0], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest5() {
- String sql =
- "select min_value(bigNum) from root.sg.d group by session(10000ms)
order by avg(num)+avg(floatNum)";
- long[] ans =
- new long[] {2147483646L, 2147483650L, 2147468648L, 2146483648L,
2107483648L, 3147483648L};
- long[] times =
- new long[] {0L, 31536000000L, 31536100000L, 41536000000L,
41536900000L, 51536000000L};
- int[] order = new int[] {2, 4, 3, 5, 1, 0};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- long actualMinValue = resultSet.getLong(2);
- assertEquals(times[order[i]], actualTime);
- assertEquals(ans[order[i]], actualMinValue, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest6() {
- String sql =
- "select min_value(num)+min_value(bigNum) from root.sg.d group by
session(10000ms) order by avg(num)+avg(floatNum)";
- long[] ans =
- new long[] {2147483647L, 2147483654L, 2147468659L, 2146483660L,
2107483661L, 3147483663L};
- long[] times =
- new long[] {0L, 31536000000L, 31536100000L, 41536000000L,
41536900000L, 51536000000L};
- int[] order = new int[] {2, 4, 3, 5, 1, 0};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualMinValue = resultSet.getDouble(2);
- assertEquals(times[order[i]], actualTime);
- assertEquals(ans[order[i]], actualMinValue, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest7() {
- String sql =
- "select avg(num)+min_value(floatNum) from root.sg.d group by
session(10000ms) order by max_value(floatNum)";
- double[][] ans =
- new double[][] {
- {13.0, 54.12, 54.12},
- {11.0, 54.121, 54.121},
- {13.0, 231.34, 45.231},
- {15.0, 235.213, 235.213},
- {6.4, 1231.21, 56.32},
- {4.6, 4654.231, 12.123}
- };
- long[] times =
- new long[] {41536900000L, 31536100000L, 41536000000L, 51536000000L,
31536000000L, 0L};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[i], actualTime);
- assertEquals(ans[i][0] + ans[i][2], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationTest8() {
- String sql =
- "select avg(num)+avg(floatNum) from root.sg.d group by
session(10000ms) order by avg(floatNum)+avg(num)";
- double[][] ans =
- new double[][] {{1079.56122}, {395.4584}, {65.121}, {151.2855},
{67.12}, {250.213}};
- long[] times =
- new long[] {0L, 31536000000L, 31536100000L, 41536000000L,
41536900000L, 51536000000L};
- int[] order = new int[] {2, 4, 3, 5, 1, 0};
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- double actualAvg = resultSet.getDouble(2);
- assertEquals(times[order[i]], actualTime);
- assertEquals(ans[order[i]][0], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- // 4. raw data query with align by device
- private void testNormalOrderByAlignByDevice(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData, new String[] {"Time", "Device", "num", "bigNum",
"floatNum", "str", "bool"});
- int i = 0;
- int total = 0;
- String device = "root.sg.d";
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- String actualDevice = resultSet.getString(2);
- String actualNum = resultSet.getString(3);
- String actualBigNum = resultSet.getString(4);
- double actualFloatNum = resultSet.getDouble(5);
- String actualStr = resultSet.getString(6);
- String actualBool = resultSet.getString(7);
-
- assertEquals(device, actualDevice);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- assertEquals(res[ans[i]][2], actualBigNum);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloatNum,
0.0001);
- assertEquals(res[ans[i]][4], actualStr);
- assertEquals(res[ans[i]][5], actualBool);
-
- if (device.equals("root.sg.d")) {
- device = "root.sg.d2";
- } else {
- device = "root.sg.d";
- i++;
- }
- total++;
- }
- assertEquals(i, ans.length);
- assertEquals(total, ans.length * 2);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void alignByDeviceOrderByTest1() {
- String sql =
- "select num+bigNum from root.** order by num+floatNum desc, floatNum
desc align by device";
- int[] ans = {4, 5, 1, 14, 12, 6, 0, 9, 7, 13, 10, 8, 11, 3, 2};
- String device = "root.sg.d";
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- String actualTime = resultSet.getString(1);
- String actualDevice = resultSet.getString(2);
- double actualNum = resultSet.getDouble(3);
-
- assertEquals(device, actualDevice);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(
- Long.parseLong(res[ans[i]][1]) + Long.parseLong(res[ans[i]][2]),
actualNum, 0.0001);
- if (device.equals("root.sg.d")) {
- device = "root.sg.d2";
- } else {
- device = "root.sg.d";
- i++;
- }
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void alignByDeviceOrderByTest2() {
- String sql = "select num,bigNum,floatNum,str,bool from root.** order by
num align by device";
- int[] ans = {2, 1, 0, 7, 8, 5, 9, 4, 3, 6, 10, 11, 13, 12, 14};
- testNormalOrderByAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest3() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by floatNum
align by device";
- int[] ans = {2, 3, 11, 13, 10, 8, 7, 9, 0, 12, 6, 14, 1, 5, 4};
- testNormalOrderByAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest4() {
- String sql = "select num,bigNum,floatNum,str,bool from root.** order by
str align by device";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderByAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest5() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by num desc
align by device";
- int[] ans = {2, 1, 0, 7, 8, 5, 9, 4, 3, 6, 10, 11, 13, 12, 14};
- testNormalOrderByAlignByDevice(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void alignByDeviceOrderByTest6() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by str desc
align by device";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderByAlignByDevice(sql, Arrays.reverse(ans));
- }
-
- @Test
- public void alignByDeviceOrderByTest7() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by bool asc,
num desc align by device";
- int[] ans = {12, 11, 10, 6, 3, 8, 7, 0, 14, 13, 4, 9, 5, 1, 2};
- testNormalOrderByAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest8() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by bigNum
desc, floatNum desc align by device";
- int[] ans = {14, 6, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- testNormalOrderByAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest9() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by str desc,
floatNum desc align by device";
- int[] ans = {3, 2, 5, 12, 0, 9, 13, 8, 4, 7, 1, 10, 6, 11, 14};
- testNormalOrderByAlignByDevice(sql, Arrays.reverse(ans));
- }
-
- private void testNormalOrderByMixAlignBy(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData, new String[] {"Time", "Device", "num", "bigNum",
"floatNum", "str", "bool"});
- int i = 0;
- int total = 0;
- String device = "root.sg.d";
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- String actualDevice = resultSet.getString(2);
- String actualNum = resultSet.getString(3);
- String actualBigNum = resultSet.getString(4);
- double actualFloatNum = resultSet.getDouble(5);
- String actualStr = resultSet.getString(6);
- String actualBool = resultSet.getString(7);
-
- assertEquals(device, actualDevice);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- assertEquals(res[ans[i]][2], actualBigNum);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloatNum,
0.0001);
- assertEquals(res[ans[i]][4], actualStr);
- assertEquals(res[ans[i]][5], actualBool);
-
- if (device.equals("root.sg.d2")) {
- i++;
- device = "root.sg.d";
- } else {
- device = "root.sg.d2";
- }
-
- total++;
- }
- assertEquals(total, ans.length * 2);
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- private void testDeviceViewOrderByMixAlignBy(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData, new String[] {"Time", "Device", "num", "bigNum",
"floatNum", "str", "bool"});
- int i = 0;
- int total = 0;
- String device = "root.sg.d2";
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- String actualDevice = resultSet.getString(2);
- String actualNum = resultSet.getString(3);
- String actualBigNum = resultSet.getString(4);
- double actualFloatNum = resultSet.getDouble(5);
- String actualStr = resultSet.getString(6);
- String actualBool = resultSet.getString(7);
-
- assertEquals(device, actualDevice);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- assertEquals(res[ans[i]][2], actualBigNum);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloatNum,
0.0001);
- assertEquals(res[ans[i]][4], actualStr);
- assertEquals(res[ans[i]][5], actualBool);
-
- i++;
- total++;
- if (total == ans.length) {
- i = 0;
- if (device.equals("root.sg.d2")) {
- device = "root.sg.d";
- } else {
- device = "root.sg.d2";
- }
- }
- }
- assertEquals(total, ans.length * 2);
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- private void orderByBigNumAlignByDevice(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- checkHeader(
- metaData, new String[] {"Time", "Device", "num", "bigNum",
"floatNum", "str", "bool"});
- int i = 0;
- int total = 0;
- String device = "root.sg.d";
- while (resultSet.next()) {
-
- String actualTime = resultSet.getString(1);
- String actualDevice = resultSet.getString(2);
- String actualNum = resultSet.getString(3);
- String actualBigNum = resultSet.getString(4);
- double actualFloatNum = resultSet.getDouble(5);
- String actualStr = resultSet.getString(6);
- String actualBool = resultSet.getString(7);
-
- if (total < 4) {
- i = total % 2;
- if (total < 2) {
- device = "root.sg.d2";
- } else {
- device = "root.sg.d";
- }
- }
-
- assertEquals(device, actualDevice);
- assertEquals(res[ans[i]][0], actualTime);
- assertEquals(res[ans[i]][1], actualNum);
- assertEquals(res[ans[i]][2], actualBigNum);
- assertEquals(Double.parseDouble(res[ans[i]][3]), actualFloatNum,
0.0001);
- assertEquals(res[ans[i]][4], actualStr);
- assertEquals(res[ans[i]][5], actualBool);
-
- if (device.equals("root.sg.d2")) {
- device = "root.sg.d";
- } else {
- i++;
- device = "root.sg.d2";
- }
-
- total++;
- }
- assertEquals(i, ans.length);
- assertEquals(total, ans.length * 2);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void alignByDeviceOrderByTest12() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by bigNum
desc, device desc, time asc align by device";
- int[] ans = {6, 14, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- orderByBigNumAlignByDevice(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest13() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by bigNum
desc, time desc, device asc align by device";
- int[] ans = {14, 6, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- testNormalOrderByMixAlignBy(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest14() {
- int[] ans = {14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by time desc,
bigNum desc, device asc align by device";
- testNormalOrderByMixAlignBy(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest15() {
- int[] ans = {6, 14, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by device
desc, bigNum desc, time asc align by device";
- testDeviceViewOrderByMixAlignBy(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest16() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by device
desc, time asc, bigNum desc align by device";
- int[] ans = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
- testDeviceViewOrderByMixAlignBy(sql, ans);
- }
-
- @Test
- public void alignByDeviceOrderByTest17() {
- String sql =
- "select num,bigNum,floatNum,str,bool from root.** order by bigNum
desc, device desc, num asc, time asc align by device";
- int[] ans = {6, 14, 0, 12, 2, 8, 9, 7, 4, 5, 1, 3, 10, 11, 13};
- orderByBigNumAlignByDevice(sql, ans);
- }
-
- // 5. aggregation query align by device
- @Test
- public void orderByInAggregationAlignByDeviceTest() {
- String sql =
- "select avg(num) from root.** group by session(10000ms) order by
avg(num) align by device";
-
- double[] ans = {4.6, 4.6, 6.4, 6.4, 11.0, 11.0, 13.0, 13.0, 13.0, 13.0,
15.0, 15.0};
- long[] times =
- new long[] {
- 0L,
- 0L,
- 31536000000L,
- 31536000000L,
- 31536100000L,
- 31536100000L,
- 41536000000L,
- 41536900000L,
- 41536000000L,
- 41536900000L,
- 51536000000L,
- 51536000000L
- };
- String[] device =
- new String[] {
- "root.sg.d",
- "root.sg.d2",
- "root.sg.d",
- "root.sg.d2",
- "root.sg.d",
- "root.sg.d2",
- "root.sg.d",
- "root.sg.d",
- "root.sg.d2",
- "root.sg.d2",
- "root.sg.d",
- "root.sg.d2"
- };
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- long actualTime = resultSet.getLong(1);
- String actualDevice = resultSet.getString(2);
- double actualAvg = resultSet.getDouble(3);
-
- assertEquals(device[i], actualDevice);
- assertEquals(times[i], actualTime);
- assertEquals(ans[i], actualAvg, 0.0001);
- i++;
- }
- assertEquals(i, ans.length);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest2() {
- String sql = "select avg(num) from root.** order by avg(num) align by
device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- private void checkSingleDouble(String sql, Object value, boolean deviceAsc) {
- String device = "root.sg.d";
- if (!deviceAsc) device = "root.sg.d2";
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- String deviceName = resultSet.getString(1);
- double actualVal = resultSet.getDouble(2);
- assertEquals(deviceName, device);
- assertEquals(Double.parseDouble(value.toString()), actualVal, 1);
- if (device.equals("root.sg.d")) device = "root.sg.d2";
- else device = "root.sg.d";
- i++;
- }
- assertEquals(i, 2);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest3() {
- String sql =
- "select avg(num)+avg(bigNum) from root.** order by max_value(floatNum)
align by device";
- long value = 2388936669L + 8;
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest4() {
-
- String sql =
- "select avg(num)+avg(bigNum) from root.** order by
max_value(floatNum)+min_value(num) align by device";
- long value = 2388936669L + 8;
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest5() {
- String sql =
- "select avg(num) from root.** order by max_value(floatNum)+avg(num)
align by device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest6() {
- String sql =
- "select avg(num) from root.** order by max_value(floatNum)+avg(num),
device asc, time desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest7() {
- String sql =
- "select avg(num) from root.** order by max_value(floatNum)+avg(num),
time asc, device desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, false);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest8() {
- String sql =
- "select avg(num) from root.** order by time asc,
max_value(floatNum)+avg(num), device desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, false);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest9() {
- String sql =
- "select avg(num) from root.** order by device asc,
max_value(floatNum)+avg(num), time desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest10() {
- String sql =
- "select avg(num) from root.** order by max_value(floatNum) desc,time
asc, avg(num) asc, device desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, false);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest11() {
- String sql =
- "select avg(num) from root.** order by max_value(floatNum) desc,device
asc, avg(num) asc, time desc align by device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest12() {
- String sql =
- "select avg(num+floatNum) from root.** order by time,avg(num+floatNum)
align by device";
- String value = "537.34154";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest13() {
- String sql = "select avg(num) from root.** order by time,avg(num+floatNum)
align by device";
- String value = "8";
- checkSingleDouble(sql, value, true);
- }
-
- @Test
- public void orderByInAggregationAlignByDeviceTest14() {
- String sql = "select avg(num+floatNum) from root.** order by time,avg(num)
align by device";
- String value = "537.34154";
- checkSingleDouble(sql, value, true);
- }
-
- String[][] UDFRes =
- new String[][] {
- {"0", "3", "0", "0"},
- {"20", "2", "0", "0"},
- {"40", "1", "0", "0"},
- {"80", "9", "0", "0"},
- {"100", "8", "0", "0"},
- {"31536000000", "6", "0", "0"},
- {"31536000100", "10", "0", "0"},
- {"31536000500", "4", "0", "0"},
- {"31536001000", "5", "0", "0"},
- {"31536010000", "7", "0", "0"},
- {"31536100000", "11", "0", "0"},
- {"41536000000", "12", "2146483648", "0"},
- {"41536000020", "14", "0", "14"},
- {"41536900000", "13", "2107483648", "0"},
- {"51536000000", "15", "0", "15"},
- };
-
- // UDF Test
- private void orderByUDFTest(String sql, int[] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- String time = resultSet.getString(1);
- String num = resultSet.getString(2);
- String topK = resultSet.getString(3);
- String bottomK = resultSet.getString(4);
-
- assertEquals(time, UDFRes[ans[i]][0]);
- assertEquals(num, UDFRes[ans[i]][1]);
- if (Objects.equals(UDFRes[ans[i]][3], "0")) {
- assertNull(topK);
- } else {
- assertEquals(topK, UDFRes[ans[i]][3]);
- }
-
- if (Objects.equals(UDFRes[ans[i]][2], "0")) {
- assertNull(bottomK);
- } else {
- assertEquals(bottomK, UDFRes[ans[i]][2]);
- }
-
- i++;
- }
- assertEquals(i, 15);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void orderByUDFTest1() {
- String sql =
- "select num, top_k(num, 'k'='2'), bottom_k(bigNum, 'k'='2') from
root.sg.d order by top_k(num, 'k'='2') nulls first, bottom_k(bigNum, 'k'='2')
nulls first";
- int[] ans = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 11, 12, 14};
- orderByUDFTest(sql, ans);
- }
-
- @Test
- public void orderByUDFTest2() {
- String sql =
- "select num, top_k(num, 'k'='2'), bottom_k(bigNum, 'k'='2') from
root.sg.d order by top_k(num, 'k'='2'), bottom_k(bigNum, 'k'='2')";
- int[] ans = {12, 14, 13, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- orderByUDFTest(sql, ans);
- }
-
- private void errorTest(String sql, String error) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- statement.executeQuery(sql);
- } catch (Exception e) {
- assertEquals(error, e.getMessage());
- }
- }
-
- @Test
- public void errorTest1() {
- errorTest(
- "select num from root.sg.d order by avg(bigNum)",
- "701: Raw data and aggregation hybrid query is not supported.");
- }
-
- @Test
- public void errorTest2() {
- errorTest(
- "select avg(num) from root.sg.d order by bigNum",
- "701: Raw data and aggregation hybrid query is not supported.");
- }
-
- @Test
- public void errorTest3() {
- errorTest(
- "select bigNum,floatNum from root.sg.d order by s1",
- "701: root.sg.d.s1 in order by clause doesn't exist.");
- }
-
- @Test
- public void errorTest4() {
- errorTest(
- "select bigNum,floatNum from root.** order by bigNum",
- "701: root.**.bigNum in order by clause shouldn't refer to more than
one timeseries.");
- }
-
- @Test
- public void errorTest5() {
- errorTest(
- "select bigNum,floatNum from root.** order by s1 align by device",
- "701: s1 in order by clause doesn't exist.");
- }
-
- @Test
- public void errorTest6() {
- errorTest(
- "select bigNum,floatNum from root.** order by root.sg.d.bigNum align
by device",
- "701: ALIGN BY DEVICE: the suffix paths can only be measurement or
one-level wildcard");
- }
-
- @Test
- public void errorTest7() {
- errorTest(
- "select last bigNum,floatNum from root.** order by root.sg.d.bigNum",
- "701: root.sg.d.bigNum in order by clause doesn't exist in the result
of last query.");
- }
-
- // last query
- public void testLastQueryOrderBy(String sql, String[][] ans) {
- try (Connection connection = EnvFactory.getEnv().getConnection();
- Statement statement = connection.createStatement()) {
- try (ResultSet resultSet = statement.executeQuery(sql)) {
- int i = 0;
- while (resultSet.next()) {
- String time = resultSet.getString(1);
- String num = resultSet.getString(2);
- String value = resultSet.getString(3);
- String dataType = resultSet.getString(4);
-
- assertEquals(time, ans[0][i]);
- assertEquals(num, ans[1][i]);
- assertEquals(value, ans[2][i]);
- assertEquals(dataType, ans[3][i]);
-
- i++;
- }
- assertEquals(i, 4);
- }
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- }
- }
-
- @Test
- public void lastQueryOrderBy() {
- String[][] ans =
- new String[][] {
- {"51536000000", "51536000000", "51536000000", "51536000000"},
- {"root.sg.d.num", "root.sg.d2.num", "root.sg.d.bigNum",
"root.sg.d2.bigNum"},
- {"15", "15", "3147483648", "3147483648"},
- {"INT32", "INT32", "INT64", "INT64"}
- };
- String sql = "select last bigNum,num from root.** order by value,
timeseries";
- testLastQueryOrderBy(sql, ans);
- }
-
- @Test
- public void lastQueryOrderBy2() {
- String[][] ans =
- new String[][] {
- {"51536000000", "51536000000", "51536000000", "51536000000"},
- {"root.sg.d2.num", "root.sg.d2.bigNum", "root.sg.d.num",
"root.sg.d.bigNum"},
- {"15", "3147483648", "15", "3147483648"},
- {"INT32", "INT64", "INT32", "INT64"}
- };
- String sql = "select last bigNum,num from root.** order by timeseries
desc";
- testLastQueryOrderBy(sql, ans);
- }
-
- @Test
- public void lastQueryOrderBy3() {
- String[][] ans =
- new String[][] {
- {"51536000000", "51536000000", "51536000000", "51536000000"},
- {"root.sg.d2.num", "root.sg.d2.bigNum", "root.sg.d.num",
"root.sg.d.bigNum"},
- {"15", "3147483648", "15", "3147483648"},
- {"INT32", "INT64", "INT32", "INT64"}
- };
- String sql = "select last bigNum,num from root.** order by timeseries
desc, value asc";
- testLastQueryOrderBy(sql, ans);
- }
-
- @Test
- public void lastQueryOrderBy4() {
- String[][] ans =
- new String[][] {
- {"51536000000", "51536000000", "51536000000", "51536000000"},
- {"root.sg.d2.num", "root.sg.d.num", "root.sg.d2.bigNum",
"root.sg.d.bigNum"},
- {"15", "15", "3147483648", "3147483648"},
- {"INT32", "INT32", "INT64", "INT64"}
- };
- String sql = "select last bigNum,num from root.** order by value,
timeseries desc";
- testLastQueryOrderBy(sql, ans);
- }
-
- @Test
- public void lastQueryOrderBy5() {
- String[][] ans =
- new String[][] {
- {"51536000000", "51536000000", "51536000000", "51536000000"},
- {"root.sg.d2.num", "root.sg.d.num", "root.sg.d2.bigNum",
"root.sg.d.bigNum"},
- {"15", "15", "3147483648", "3147483648"},
- {"INT32", "INT32", "INT64", "INT64"}
- };
- String sql = "select last bigNum,num from root.** order by datatype,
timeseries desc";
- testLastQueryOrderBy(sql, ans);
- }
-}