Skip to content

Commit

Permalink
MONDRIAN-PACINO: Adds a comparator class which can deal with RolapUti…
Browse files Browse the repository at this point in the history
…l.sqlNullValue.

[git-p4: depot-paths = "//open/mondrian-release/pacino/": change = 14803]
  • Loading branch information
lucboudreau committed Nov 25, 2011
1 parent d996c2e commit 9a4c33c
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
26 changes: 26 additions & 0 deletions src/main/mondrian/olap/Util.java
Expand Up @@ -19,6 +19,8 @@
import mondrian.resource.MondrianResource;
import mondrian.rolap.RolapCube;
import mondrian.rolap.RolapCubeDimension;
import mondrian.rolap.RolapUtil;
import mondrian.rolap.agg.ValueColumnPredicate;
import mondrian.spi.UserDefinedFunction;
import mondrian.util.*;

Expand Down Expand Up @@ -4088,6 +4090,30 @@ public interface Usage {
long getMax();
}
}

/**
* A {@link Comparator} implementation which can deal
* correctly with {@link RolapUtil#sqlNullValue}.
*/
public static class SqlNullSafeComparator
implements Comparator<Comparable<?>>
{
public static final SqlNullSafeComparator instance =
new SqlNullSafeComparator();

private SqlNullSafeComparator() {
}

public int compare(Comparable<?> o1, Comparable<?> o2) {
if (o1 == RolapUtil.sqlNullValue) {
return -1;
}
if (o2 == RolapUtil.sqlNullValue) {
return 1;
}
return ((Comparable) o1).compareTo(o2);
}
}
}

// End Util.java
4 changes: 3 additions & 1 deletion src/main/mondrian/rolap/CacheControlImpl.java
Expand Up @@ -463,7 +463,9 @@ public void visit(MemberCellRegion region) {
entry.getKey(),
null));
} else {
Arrays.sort(keys);
Arrays.sort(
keys,
Util.SqlNullSafeComparator.instance);
list.add(
new ConstrainedColumn(
entry.getKey(),
Expand Down
5 changes: 3 additions & 2 deletions src/main/mondrian/rolap/agg/SegmentBuilder.java
Expand Up @@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.SortedSet;

Expand Down Expand Up @@ -237,7 +236,9 @@ public static ConstrainedColumn[] toConstrainedColumns(
.getExpression().getGenericExpression(),
null));
} else {
Arrays.sort(valuesArray);
Arrays.sort(
valuesArray,
Util.SqlNullSafeComparator.instance);
ccs.add(
new ConstrainedColumn(
predicate.getConstrainedColumn()
Expand Down

0 comments on commit 9a4c33c

Please sign in to comment.