Skip to content

Commit

Permalink
MONDRIAN: further backing out 13366
Browse files Browse the repository at this point in the history
[git-p4: depot-paths = "//open/mondrian-release/3.2/": change = 13500]
  • Loading branch information
Matt Campbell authored and Matt Campbell committed Mar 22, 2010
1 parent 47b5d25 commit 440b581
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 121 deletions.
2 changes: 1 addition & 1 deletion src/main/mondrian/rolap/RolapAggregationManager.java
Expand Up @@ -95,7 +95,7 @@ public static CellRequest makeDrillThroughRequest(
public static CellRequest makeRequest(
RolapEvaluator evaluator)
{
final Member[] currentMembers = evaluator.getNonAllMembers();
final Member[] currentMembers = evaluator.getMembers();
final List<List<Member[]>> aggregationLists =
evaluator.getAggregationLists();

Expand Down
2 changes: 1 addition & 1 deletion src/main/mondrian/rolap/RolapEvaluator.java
Expand Up @@ -627,7 +627,7 @@ public final Object getProperty(String name, Object defaultValue) {
Object o = defaultValue;
int maxSolve = Integer.MIN_VALUE;
int i = -1;
for (Member member : getNonAllMembers()) {
for (Member member : getMembers()) {
i++;
// more than one usage
if (member == null) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/mondrian/rolap/SqlConstraintUtils.java
Expand Up @@ -54,7 +54,7 @@ public static void addContextConstraint(
boolean restrictMemberTypes)
{
// Add constraint using the current evaluator context
Member[] members = evaluator.getNonAllMembers();
Member[] members = evaluator.getMembers();

if (restrictMemberTypes) {
if (containsCalculatedMember(members)) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/mondrian/rolap/SqlMemberSource.java
Expand Up @@ -686,7 +686,7 @@ private static AggStar chooseAggStar(

// Convert global ordinal to cube based ordinal (the 0th dimension
// is always [Measures])
final Member[] members = evaluator.getNonAllMembers();
final Member[] members = evaluator.getMembers();

// if measure is calculated, we can't continue
if (!(members[0] instanceof RolapBaseCubeMeasure)) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/mondrian/rolap/SqlTupleReader.java
Expand Up @@ -1143,7 +1143,7 @@ AggStar chooseAggStar(Evaluator evaluator) {
// Convert global ordinal to cube based ordinal (the 0th dimension
// is always [Measures]). In the case of filter constraint this will
// be the measure on which the filter will be done.
final Member[] members = evaluator.getNonAllMembers();
final Member[] members = evaluator.getMembers();

// if measure is calculated, we can't continue
if (!(members[0] instanceof RolapBaseCubeMeasure)) {
Expand Down
138 changes: 22 additions & 116 deletions testsrc/main/mondrian/test/PerformanceTest.java
Expand Up @@ -214,127 +214,18 @@ public void testBugMondrian639() {

/***
* Tests performance of a larger schema with a large number of result cells
* Runs in 12.2 seconds when RolapEvaluator.getProperty uses currentMemmber
* Runs in 7.5 seconds when RolapEvaluator.getProperty uses nonAllMemberMap
* Runs in 186 seconds when RolapEvaluator.getProperty uses currentMemmber
* Runs in 20 seconds when RolapEvaluator.getProperty uses nonAllMemberMap
* Runs in 8 seconds when the default FoodMart schema is used
* The performance boost gets more significant as the schema size grows
*/
public void testBigResultsWithBigSchemaPerforms() {
if (!DEBUG) {
return;
}
TestContext testContext = TestContext.createSubstitutingCube(
"Sales",
"<Dimension name=\"Gender2\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender3\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender4\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender5\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender6\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender7\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender8\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender9\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender10\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender11\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender12\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender13\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender14\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender15\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender16\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender17\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender18\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender19\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>"
+ "<Dimension name=\"Gender20\" foreignKey=\"customer_id\">\n"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">\n"
+ " <Table name=\"customer\"/>\n"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>\n"
+ " </Hierarchy>"
+ "</Dimension>",
extraGenders(1000),
null);
String mdx =
"with "
Expand All @@ -353,6 +244,21 @@ public void testBigResultsWithBigSchemaPerforms() {
printDuration("getProperty taking a long time", start);
}

private String extraGenders(final int numGenders) {
final StringBuilder builder = new StringBuilder();
for (int i = 0; i < numGenders;i++) {
builder.append(
String.format(
"<Dimension name=\"Gender%d \" foreignKey=\"customer_id\">"
+ "<Hierarchy hasAll=\"true\" allMemberName=\"All Gender\" primaryKey=\"customer_id\">"
+ " <Table name=\"customer\"/>"
+ " <Level name=\"Gender\" column=\"gender\" uniqueMembers=\"true\"/>"
+ " </Hierarchy>"
+ "</Dimension>", i));
}
return builder.toString();
}

/**
* Runs a query that performs a lot of in-memory calculation.
*
Expand Down

0 comments on commit 440b581

Please sign in to comment.