Skip to content

Commit

Permalink
MONDRIAN: Fixes to AggGen. (Contributed by Ati Rosselet.)
Browse files Browse the repository at this point in the history
[git-p4: depot-paths = "//open/mondrian/": change = 10108]
  • Loading branch information
julianhyde committed Oct 26, 2007
1 parent d6fbf3a commit 7261b9f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
3 changes: 2 additions & 1 deletion src/main/mondrian/rolap/FastBatchingCellReader.java
Expand Up @@ -610,7 +610,8 @@ private void generateAggregateSql() {
BATCH_LOGGER.error(buf.toString());

} else {
final AggGen aggGen = new AggGen(cube.getStar(), columns);
final AggGen aggGen =
new AggGen(cube.getName(), cube.getStar(), columns);
if (aggGen.isReady()) {
// PRINT TO STDOUT - DO NOT USE BATCH_LOGGER
System.out.println("createLost:" +
Expand Down
36 changes: 23 additions & 13 deletions src/main/mondrian/rolap/aggmatcher/AggGen.java
Expand Up @@ -39,27 +39,36 @@
public class AggGen {
private static final Logger LOGGER = Logger.getLogger(AggGen.class);

private final String cubeName;
private final RolapStar star;
private final RolapStar.Column[] columns;

/** map RolapStar.Table to list of JdbcSchema Column Usages */
private final Map<RolapStar.Table, List<JdbcSchema.Table.Column.Usage>> collapsedColumnUsages;
private final Map<RolapStar.Table, List<JdbcSchema.Table.Column.Usage>>
collapsedColumnUsages =
new HashMap<RolapStar.Table, List<JdbcSchema.Table.Column.Usage>>();

/** set of JdbcSchema Column Usages */
private final Set<JdbcSchema.Table.Column.Usage> notLostColumnUsages;
private final Set<JdbcSchema.Table.Column.Usage> notLostColumnUsages =
new HashSet<JdbcSchema.Table.Column.Usage>();

/** list of JdbcSchema Column Usages */
private final List<JdbcSchema.Table.Column.Usage> measures;
private final List<JdbcSchema.Table.Column.Usage> measures =
new ArrayList<JdbcSchema.Table.Column.Usage>();

private boolean isReady;

public AggGen(RolapStar star, RolapStar.Column[] columns) {
public AggGen(
String cubeName,
RolapStar star,
RolapStar.Column[] columns)
{
this.cubeName = cubeName;
this.star = star;
this.columns = columns;
this.notLostColumnUsages = new HashSet<JdbcSchema.Table.Column.Usage>();
this.collapsedColumnUsages = new HashMap<RolapStar.Table, List<JdbcSchema.Table.Column.Usage>>();
this.measures = new ArrayList<JdbcSchema.Table.Column.Usage>();
init();
}

private Logger getLogger() {
return LOGGER;
}
Expand Down Expand Up @@ -285,16 +294,17 @@ private void init() {
getLogger().warn(buf.toString());
return;
}
RolapAggregator aggregator;
if (!(rColumn instanceof RolapStar.Measure)) {
// TODO: whats the solution to this?
// its a funky dimension column in the fact table!!!
getLogger().warn("not a measure: " + name);
continue;
} else {
RolapStar.Measure rMeasure = (RolapStar.Measure) rColumn;
aggregator = rMeasure.getAggregator();
}
RolapStar.Measure rMeasure = (RolapStar.Measure) rColumn;
if (!rMeasure.getCubeName().equals(cubeName)) {
continue;
}
final RolapAggregator aggregator = rMeasure.getAggregator();
JdbcSchema.Table.Column c = getColumn(factTable, name);
if (c == null) {
StringBuilder buf = new StringBuilder(64);
Expand Down Expand Up @@ -640,7 +650,7 @@ public String insertIntoLost() {
pw.print(prefix);
pw.print(
agg.getExpression(sqlQuery.getDialect().quoteIdentifier(
factTableName, c.getName())).toUpperCase());
factTableName, c.getName())));
pw.print(" AS ");
pw.print(sqlQuery.getDialect().quoteIdentifier(c.getName()));
pw.println(',');
Expand Down Expand Up @@ -775,7 +785,7 @@ public String insertIntoCollapsed() {
pw.print(prefix);
pw.print(
agg.getExpression(sqlQuery.getDialect().quoteIdentifier(
t.getName(), c.getName())).toUpperCase());
t.getName(), c.getName())));
pw.print(" AS ");
pw.print(sqlQuery.getDialect().quoteIdentifier(c.getName()));
pw.println(',');
Expand Down

0 comments on commit 7261b9f

Please sign in to comment.