This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/ty/TableModelGrammar by this
push:
new 69ba813c0f7 Add date type support for topk
69ba813c0f7 is described below
commit 69ba813c0f7303b6d96b0d607ef9e5105c2b5ac5
Author: Beyyes <[email protected]>
AuthorDate: Fri Aug 2 19:20:44 2024 +0800
Add date type support for topk
---
.../it/query/old/orderBy/IoTDBStreamSortIT.java | 24 +++++++++++++++++++---
.../execution/operator/process/TopKOperator.java | 2 ++
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/orderBy/IoTDBStreamSortIT.java
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/orderBy/IoTDBStreamSortIT.java
index b186d529813..9414e836b3e 100644
---
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/orderBy/IoTDBStreamSortIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/orderBy/IoTDBStreamSortIT.java
@@ -48,7 +48,7 @@ public class IoTDBStreamSortIT {
"CREATE DATABASE db",
"USE db",
"CREATE TABLE table0 (device string id, level string id, attr1 string
attribute, attr2 string attribute, num int32 measurement, bigNum int64
measurement, "
- + "floatNum double measurement, str TEXT measurement, bool BOOLEAN
measurement)",
+ + "floatNum double measurement, str TEXT measurement, bool BOOLEAN
measurement, date DATE measurement)",
"insert into table0(device, level, attr1, attr2,
time,num,bigNum,floatNum,str,bool) values('d1', 'l1', 'c', 'd',
0,3,2947483648,231.2121,'coconut',FALSE)",
"insert into table0(device, level, attr1, attr2,
time,num,bigNum,floatNum,str,bool) values('d1', 'l2', 'y', 'z',
20,2,2147483648,434.12,'pineapple',TRUE)",
"insert into table0(device, level, attr1, attr2,
time,num,bigNum,floatNum,str,bool) values('d1', 'l3', 't', 'a',
40,1,2247483648,12.123,'apricot',TRUE)",
@@ -63,7 +63,7 @@ public class IoTDBStreamSortIT {
"insert into table0(device, level, attr1, attr2,
time,num,bigNum,floatNum,str,bool) values('d1', 'l2', 'yy', 'zz',
41536000000,12,2146483648,45.231,'strawberry',FALSE)",
"insert into table0(device, level, time,num,bigNum,floatNum,str,bool)
values('d1', 'l3',41536000020,14,2907483648,231.34,'cherry',FALSE)",
"insert into table0(device, level, time,num,bigNum,floatNum,str,bool)
values('d1', 'l4',41536900000,13,2107483648,54.12,'lychee',TRUE)",
- "insert into table0(device, level, time,num,bigNum,floatNum,str,bool)
values('d1', 'l5',51536000000,15,3147483648,235.213,'watermelon',TRUE)"
+ "insert into table0(device, level,
time,num,bigNum,floatNum,str,bool,date) values('d1',
'l5',51536000000,15,3147483648,235.213,'watermelon',TRUE,'2022-01-01')"
};
private static final String[] sql2 =
@@ -82,7 +82,7 @@ public class IoTDBStreamSortIT {
"insert into table0(device,level,time,num,bigNum,floatNum,str,bool)
values('d2','l2',41536000000,12,2146483648,45.231,'strawberry',FALSE)",
"insert into table0(device,level,time,num,bigNum,floatNum,str,bool)
values('d2','l3',41536000020,14,2907483648,231.34,'cherry',FALSE)",
"insert into table0(device,level,time,num,bigNum,floatNum,str,bool)
values('d2','l4',41536900000,13,2107483648,54.12,'lychee',TRUE)",
- "insert into table0(device,level,time,num,bigNum,floatNum,str,bool)
values('d2','l5',51536000000,15,3147483648,235.213,'watermelon',TRUE)"
+ "insert into
table0(device,level,time,num,bigNum,floatNum,str,bool,date)
values('d2','l5',51536000000,15,3147483648,235.213,'watermelon',TRUE,'2023-01-01')"
};
@BeforeClass
@@ -219,4 +219,22 @@ public class IoTDBStreamSortIT {
retArray,
DATABASE_NAME);
}
+
+ @Test
+ public void dateTypeTopKTest() {
+ String[] expectedHeader = new String[] {"time", "level", "attr1",
"device", "num", "date"};
+ String[] retArray =
+ new String[] {
+ "1971-08-20T11:33:20.000Z,l5,null,d2,15,2023-01-01,",
+ "1971-08-20T11:33:20.000Z,l5,null,d1,15,2022-01-01,",
+ "1971-04-26T18:01:40.000Z,l4,null,d2,13,null,",
+ "1971-04-26T18:01:40.000Z,l4,null,d1,13,null,",
+ "1971-04-26T17:46:40.020Z,l3,null,d2,14,null,",
+ };
+ tableResultSetEqualTest(
+ "select time,level,attr1,device,num,date from table0 order by time
desc,device desc limit 5",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
index ce60ff75ea0..4668da6413e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
@@ -280,6 +280,7 @@ public abstract class TopKOperator implements
ProcessOperator {
new boolean[positionCount]);
break;
case INT32:
+ case DATE:
columns[i] =
new IntColumn(
positionCount, Optional.of(new boolean[positionCount]), new
int[positionCount]);
@@ -369,6 +370,7 @@ public abstract class TopKOperator implements
ProcessOperator {
break;
case INT32:
case FLOAT:
+ case DATE:
memory += 4;
break;
case INT64: