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; } }