This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch fix_topk_1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/fix_topk_1.3 by this push:
     new 211f55847e2 fix unsupported data type in topk
211f55847e2 is described below

commit 211f55847e28c224aca2566340243049931b8300
Author: Beyyes <[email protected]>
AuthorDate: Thu Dec 5 15:12:45 2024 +0800

    fix unsupported data type in topk
---
 .../apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java | 23 +++++++++++-----------
 .../process/join/merge/MergeSortComparator.java    |  4 ++++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
index 889a1fab242..097fa98281f 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
@@ -100,11 +100,8 @@ public class IoTDBOrderByIT {
 
   private static final String[] sql3 =
       new String[] {
-        "CREATE TIMESERIES root.sg33.d.v_timestamp WITH DATATYPE=TIMESTAMP, 
ENCODING=RLE",
-        "CREATE TIMESERIES root.sg33.d.v_string WITH DATATYPE=STRING, 
ENCODING=RLE",
-        "CREATE TIMESERIES root.sg33.d.v_date WITH DATATYPE=DATE, 
ENCODING=RLE",
-        "CREATE TIMESERIES root.sg33.d.v_blob WITH DATATYPE=BLOB, 
ENCODING=PLAIN",
-        "insert into root.sg33.d(timestamp,v_timestamp,v_string,v_date,v_blob) 
values(1,2024-09-20T06:15:35.000+00:00,'sss','2012-12-12',X'108DCD62')",
+        "create aligned timeseries root.test.dev (v_timestamp TIMESTAMP, 
v_string STRING, v_date DATE, v_blob BLOB encoding=PLAIN, v_int32 INT32);",
+        "insert into root.test.dev(timestamp, v_timestamp, v_string, v_date, 
v_blob, v_int32) aligned values(1, 2024-09-20T06:15:35.000+00:00, 'e1', 
'2012-12-12', X'108DCD62', 1);"
       };
 
   @BeforeClass
@@ -205,15 +202,19 @@ public class IoTDBOrderByIT {
 
   @Test
   public void newDataTypeTest() {
-    String[] expectedHeader = new String[] {"Time,,s3,s1,s2"};
+    String[] expectedHeader =
+        new String[] 
{"Time,Device,v_int32,v_blob,v_date,v_timestamp,v_string"};
     String[] retArray =
         new String[] {
-          "1,root.sg1.d2,11,11.1,false,",
+          "1,root.test.dev,1,0x108dcd62,2012-12-12,1726812935000,e1,",
         };
-    resultSetEqualTest(
-        "SELECT * FROM root.db.** LIMIT 2 ORDER BY timestamp ALIGN BY DEVICE",
-        expectedHeader,
-        retArray);
+
+    for (String key : new String[] {"time", "v_int32", "v_date", 
"v_timestamp", "v_string"}) {
+      resultSetEqualTest(
+          String.format("SELECT * FROM root.test.dev ORDER BY %s LIMIT 1 ALIGN 
BY DEVICE", key),
+          expectedHeader,
+          retArray);
+    }
   }
 
   // 1. One-level order by test
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
index c299a368e73..4b8afe4e39e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
@@ -70,11 +70,13 @@ public class MergeSortComparator {
     Comparator<SortKey> comparator;
     switch (dataType) {
       case INT32:
+      case DATE:
         comparator =
             Comparator.comparingInt(
                 (SortKey sortKey) -> 
sortKey.tsBlock.getColumn(index).getInt(sortKey.rowIndex));
         break;
       case INT64:
+      case TIMESTAMP:
         comparator =
             Comparator.comparingLong(
                 (SortKey sortKey) -> 
sortKey.tsBlock.getColumn(index).getLong(sortKey.rowIndex));
@@ -90,6 +92,8 @@ public class MergeSortComparator {
                 (SortKey sortKey) -> 
sortKey.tsBlock.getColumn(index).getDouble(sortKey.rowIndex));
         break;
       case TEXT:
+      case BLOB:
+      case STRING:
         comparator =
             Comparator.comparing(
                 (SortKey sortKey) -> 
sortKey.tsBlock.getColumn(index).getBinary(sortKey.rowIndex));

Reply via email to