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:

Reply via email to