Skip to content

Add regression tests for TopCount/BottomCount functions.#145

Merged
rsim merged 3 commits into
masterfrom
bugfix/top_count
Jan 7, 2026
Merged

Add regression tests for TopCount/BottomCount functions.#145
rsim merged 3 commits into
masterfrom
bugfix/top_count

Conversation

@jjustaments
Copy link
Copy Markdown
Collaborator

Mondrian patch:

diff --git a/mondrian/src/main/java/mondrian/rolap/SqlTupleReader.java b/mondrian/src/main/java/mondrian/rolap/SqlTupleReader.java
index ffe73f09c..c19fc6221 100644
--- a/mondrian/src/main/java/mondrian/rolap/SqlTupleReader.java
+++ b/mondrian/src/main/java/mondrian/rolap/SqlTupleReader.java
@@ -34,6 +34,7 @@ import mondrian.rolap.sql.MemberChildrenConstraint;
 import mondrian.rolap.sql.MemberListCrossJoinArg;
 import mondrian.rolap.sql.SqlQuery;
 import mondrian.rolap.sql.TupleConstraint;
+import mondrian.rolap.RolapNativeTopCount;
 import mondrian.server.Execution;
 import mondrian.server.Locus;
 import mondrian.server.monitor.SqlStatementEvent;
@@ -1209,11 +1210,14 @@ public class SqlTupleReader implements TupleReader {
     Evaluator evaluator = getEvaluator( constraint );
     AggStar aggStar = chooseAggStar( constraint, evaluator, baseCube );
 
-    // PATCH: Add constraints at first to ensure that level tables are added last
+    // PATCH: Apply constraints first so that level tables are added last.
+    // Exclude TopCountConstraint because it adds a SUM(...) expression to the SELECT list,
+    // which must come after the level columns to preserve column ordering.
     boolean prependConstraint = false;
     SqlContextConstraint sqlContextConstraint = constraint instanceof SqlContextConstraint ?
       (SqlContextConstraint) constraint : null;
-    if (sqlContextConstraint != null && sqlContextConstraint.isJoinRequired()) {
+    if (sqlContextConstraint != null && sqlContextConstraint.isJoinRequired()
+        && !(sqlContextConstraint instanceof RolapNativeTopCount.TopCountConstraint)) {
       if(aggStar != null) {
         aggStar.getFactTable().addToFrom(sqlQuery, false, false);
         prependConstraint = true;

@rsim rsim merged commit 22dd64e into master Jan 7, 2026
6 checks passed
@rsim rsim deleted the bugfix/top_count branch January 7, 2026 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants