Skip to content

Commit

Permalink
MONDRIAN:
Browse files Browse the repository at this point in the history
       AggGen
           Did not handle snowflakes, have to try to use table alias
               or is "real" name when reflecting on database metadata.
           Added more logging - both debug level and, when there is a
               failure, warning messages.
       FastBatchingCellReader
           Remember this is where AggGen is call, if its a virtual cube
               print out a message to that effect.(rather than to do
               nothing in silence).

[git-p4: depot-paths = "//open/mondrian/": change = 3680]
  • Loading branch information
Richard Emberson committed Jun 10, 2005
1 parent a0737da commit fea5214
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 22 deletions.
31 changes: 19 additions & 12 deletions src/main/mondrian/rolap/FastBatchingCellReader.java
Expand Up @@ -206,19 +206,26 @@ public void add(CellRequest request) {
}

void loadAggregation() {
if (generateAggregateSql &&
! FastBatchingCellReader.this.cube.isVirtual()) {

mondrian.rolap.aggmatcher.AggGen aggGen =
new mondrian.rolap.aggmatcher.AggGen(
FastBatchingCellReader.this.cube.getStar(), columns);
if (aggGen.isReady()) {
System.out.println(aggGen.createLost());
System.out.println(aggGen.insertIntoLost());
System.out.println(aggGen.createCollapsed());
System.out.println(aggGen.insertIntoCollapsed());
if (generateAggregateSql) {
if (FastBatchingCellReader.this.cube.isVirtual()) {
StringBuffer buf = new StringBuffer(64);
buf.append("AggGen: Sorry, can not create SQL for virtual Cube \"");
buf.append(FastBatchingCellReader.this.cube.getName());
buf.append("\", operation not currently supported");
System.out.println(buf.toString());

} else {
System.out.println("AggGen failed");
mondrian.rolap.aggmatcher.AggGen aggGen =
new mondrian.rolap.aggmatcher.AggGen(
FastBatchingCellReader.this.cube.getStar(), columns);
if (aggGen.isReady()) {
System.out.println(aggGen.createLost());
System.out.println(aggGen.insertIntoLost());
System.out.println(aggGen.createCollapsed());
System.out.println(aggGen.insertIntoCollapsed());
} else {
System.out.println("AggGen failed");
}
}
}

Expand Down
15 changes: 15 additions & 0 deletions src/main/mondrian/rolap/RolapStar.java
Expand Up @@ -1087,6 +1087,21 @@ private String chooseAlias() {
public String getAlias() {
return alias;
}

/**
* Sometimes one need to get to the "real" name when the table has
* been given an alias.
*
* @return
*/
public String getTableName() {
if (relation instanceof MondrianDef.Table) {
MondrianDef.Table t = (MondrianDef.Table) relation;
return t.name;
} else {
return null;
}
}
synchronized void makeMeasure(RolapStoredMeasure storedMeasure) {
RolapStar.Measure measure = new RolapStar.Measure(
storedMeasure.getName(),
Expand Down
106 changes: 96 additions & 10 deletions src/main/mondrian/rolap/aggmatcher/AggGen.java
Expand Up @@ -87,6 +87,12 @@ protected SqlQuery getSqlQuery() {
protected String getFactCount() {
return "fact_count";
}
protected JdbcSchema.Table getTable(JdbcSchema db, RolapStar.Table rt) {
JdbcSchema.Table jt = getTable(db, rt.getAlias());
return (jt == null)
? getTable(db, rt.getTableName())
: jt;
}
protected JdbcSchema.Table getTable(JdbcSchema db, String name) {
try {
return db.getTable(name);
Expand Down Expand Up @@ -136,10 +142,17 @@ private void init() {

JdbcSchema.Table factTable = getTable(db, getFactTableName());
if (factTable == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Init: ");
buf.append("No fact table with name \"");
buf.append(getFactTableName());
buf.append("\"");
getLogger().warn(buf.toString());
return;
}
if (getLogger().isDebugEnabled()) {
StringBuffer buf = new StringBuffer(512);
buf.append("Init: ");
buf.append("RolapStar:");
buf.append(Util.nl);
buf.append(getFactTable());
Expand All @@ -155,6 +168,7 @@ private void init() {
RolapStar.Column column = columns[i];
if (getLogger().isDebugEnabled()) {
StringBuffer buf = new StringBuffer(64);
buf.append("Init: ");
buf.append("Column: ");
buf.append(column);
getLogger().debug(buf.toString());
Expand Down Expand Up @@ -216,6 +230,13 @@ private void init() {
RolapStar.Column rColumn = (RolapStar.Column) it.next();
String name = getRolapStarColumnName(rColumn);
if (name == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Init: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get column name for RolapStar.Column: ");
buf.append(rColumn);
getLogger().warn(buf.toString());
return;
}
if (! (rColumn instanceof RolapStar.Measure)) {
Expand Down Expand Up @@ -248,17 +269,33 @@ private void init() {
// If we got to here, then everything is ok.
isReady = true;
}
private boolean addSpecialCollapsedColumn(JdbcSchema db,
RolapStar.Column rColumn) {
private boolean addSpecialCollapsedColumn(final JdbcSchema db,
final RolapStar.Column rColumn) {
String rname = getRolapStarColumnName(rColumn);
if (rname == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Special Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get column name for RolapStar.Column: ");
buf.append(rColumn);
getLogger().warn(buf.toString());
return false;
}
// this is in fact the fact table.
RolapStar.Table rt = rColumn.getTable();

JdbcSchema.Table jt = getTable(db, rt.getAlias());
JdbcSchema.Table jt = getTable(db, rt);
if (jt == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Special Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get jdbc schema table ");
buf.append("for RolapStar.Table with alias \"");
buf.append(rt.getAlias());
buf.append("\"");
getLogger().warn(buf.toString());
return false;
}

Expand All @@ -270,15 +307,37 @@ private boolean addSpecialCollapsedColumn(JdbcSchema db,

JdbcSchema.Table.Column c = jt.getColumn(rname);
if (c == null) {
getLogger().warn("Can not find column: " +rname);
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Special Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get jdbc schema column ");
buf.append("for RolapStar.Table with alias \"");
buf.append(rt.getAlias());
buf.append("\" and column name \"");
buf.append(rname);
buf.append("\"");
getLogger().warn(buf.toString());
return false;
}
list.add(c.newUsage(JdbcSchema.FOREIGN_KEY_COLUMN_TYPE));

while (rColumn.getParentColumn() != null) {
rColumn = rColumn.getParentColumn();
rname = getRolapStarColumnName(rColumn);
RolapStar.Column prColumn = rColumn;
while (prColumn.getParentColumn() != null) {
prColumn = prColumn.getParentColumn();
rname = getRolapStarColumnName(prColumn);
if (rname == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Special Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get parent column name");
buf.append("for RolapStar.Column \"");
buf.append(rname);
buf.append("\" for RolapStar.Table with alias \"");
buf.append(rt.getAlias());
buf.append("\"");
getLogger().warn(buf.toString());
return false;
}
c = jt.getColumn(rname);
Expand All @@ -292,18 +351,34 @@ private boolean addSpecialCollapsedColumn(JdbcSchema db,
return true;
}

private boolean addCollapsedColumn(JdbcSchema db,
RolapStar.Column rColumn) {
private boolean addCollapsedColumn(final JdbcSchema db,
final RolapStar.Column rColumn) {
// TODO: if column is "id" column, then there is no collapse
String rname = getRolapStarColumnName(rColumn);
if (rname == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get column name for RolapStar.Column: ");
buf.append(rColumn);
getLogger().warn(buf.toString());
return false;
}

RolapStar.Table rt = rColumn.getTable();

JdbcSchema.Table jt = getTable(db, rt.getAlias());
JdbcSchema.Table jt = getTable(db, rt);
if (jt == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get jdbc schema table ");
buf.append("for RolapStar.Table with alias \"");
buf.append(rt.getAlias());
buf.append("\"");
getLogger().warn(buf.toString());
return false;
}

Expand All @@ -318,6 +393,17 @@ private boolean addCollapsedColumn(JdbcSchema db,
}
String name = getRolapStarColumnName(rc);
if (name == null) {
StringBuffer buf = new StringBuffer(64);
buf.append("Adding Collapsed Column: ");
buf.append("For fact table \"");
buf.append(getFactTableName());
buf.append("\", could not get column name");
buf.append("for RolapStar.Column \"");
buf.append(rc);
buf.append("\" for RolapStar.Table with alias \"");
buf.append(rt.getAlias());
buf.append("\"");
getLogger().warn(buf.toString());
return false;
}
JdbcSchema.Table.Column c = jt.getColumn(name);
Expand Down

0 comments on commit fea5214

Please sign in to comment.