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

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 17e2ca0f1a408a1ab598e28ea71d8c344a7bdc5f
Author: DorrisRuixuanZhang <dorriszh...@hotmail.com>
AuthorDate: Fri Mar 10 17:27:04 2023 +0800

    KYLIN-5570 To fix sql with grouping sets returns incorrect result
---
 .../java/org/apache/kylin/metadata/tuple/TupleInfo.java   |  2 ++
 .../org/apache/kylin/query/relnode/OLAPProjectRel.java    | 15 ++++++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/TupleInfo.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/TupleInfo.java
index 58c761ae7e..eb4ec4865e 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/TupleInfo.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/TupleInfo.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import lombok.Getter;
 import org.apache.kylin.metadata.model.TblColRef;
 
 /**
@@ -33,6 +34,7 @@ import org.apache.kylin.metadata.model.TblColRef;
 public class TupleInfo {
 
     private final Map<String, Integer> fieldMap;
+    @Getter
     private final Map<TblColRef, Integer> columnMap;
 
     private final List<String> fields;
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
index 3ca5f0be6a..909f4e9b57 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
@@ -283,6 +283,19 @@ public class OLAPProjectRel extends Project implements 
OLAPRel {
                 pw.item(fieldName, rewriteProjects.get(field.i));
             }
         }
-        return pw.item("ctx", context == null ? "" : 
String.valueOf(context.id) + "@" + context.realization);
+
+        if (context != null) {
+            pw.item("ctx", String.valueOf(context.id) + "@" + 
context.realization);
+            if (context.getGroupByColumns() != null && context.returnTupleInfo 
!= null
+                    && context.returnTupleInfo.getColumnMap() != null) {
+                context.getGroupByColumns().forEach(colRef -> {
+                    Integer colId = 
context.returnTupleInfo.getColumnMap().get(colRef);
+                    pw.item("groupByColumns", String.valueOf(colId));
+                });
+            }
+        } else {
+            pw.item("ctx", "");
+        }
+        return pw;
     }
 }

Reply via email to