String getQBFromString(CandidateFact fact, Map<Dimension, CandidateDim> dimsToQuery) throws LensException { String fromString; if (getJoinAST() == null) { if (cube != null) { if (dimensions.size() > 0) { throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAILABLE.getLensErrorInfo()); } fromString = fact.getStorageString(getAliasForTableName(cube.getName())); } else { if (dimensions.size() != 1) { throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAILABLE.getLensErrorInfo()); } Dimension dim = dimensions.iterator().next(); fromString = dimsToQuery.get(dim).getStorageString(getAliasForTableName(dim.getName())); } } else { StringBuilder builder = new StringBuilder(); getQLString(qb.getQbJoinTree(), builder, fact, dimsToQuery); fromString = builder.toString(); } return fromString; }
public void print() { if (!log.isDebugEnabled()) { return; } StringBuilder builder = new StringBuilder(); builder.append("ASTNode:" + ast.dump() + "\n"); builder.append("QB:"); builder.append("\n numJoins:" + qb.getNumJoins()); builder.append("\n numGbys:" + qb.getNumGbys()); builder.append("\n numSels:" + qb.getNumSels()); builder.append("\n numSelDis:" + qb.getNumSelDi()); builder.append("\n aliasToTabs:"); Set<String> tabAliases = qb.getTabAliases(); for (String alias : tabAliases) { builder.append("\n\t" + alias + ":" + qb.getTabNameForAlias(alias)); } builder.append("\n aliases:"); for (String alias : qb.getAliases()) { builder.append(alias); builder.append(", "); } builder.append("id:" + qb.getId()); builder.append("isQuery:" + qb.getIsQuery()); builder.append("\n QBParseInfo"); QBParseInfo parseInfo = qb.getParseInfo(); builder.append("\n isSubQ: " + parseInfo.getIsSubQ()); builder.append("\n alias: " + parseInfo.getAlias()); if (parseInfo.getJoinExpr() != null) { builder.append("\n joinExpr: " + parseInfo.getJoinExpr().dump()); } builder.append("\n hints: " + parseInfo.getHints()); builder.append("\n aliasToSrc: "); for (String alias : tabAliases) { builder.append("\n\t" + alias + ": " + parseInfo.getSrcForAlias(alias).dump()); } TreeSet<String> clauses = new TreeSet<String>(parseInfo.getClauseNames()); for (String clause : clauses) { builder.append("\n\t" + clause + ": " + parseInfo.getClauseNamesForDest()); } String clause = clauses.first(); if (parseInfo.getWhrForClause(clause) != null) { builder.append("\n whereexpr: " + parseInfo.getWhrForClause(clause).dump()); } if (parseInfo.getGroupByForClause(clause) != null) { builder.append("\n groupby expr: " + parseInfo.getGroupByForClause(clause).dump()); } if (parseInfo.getSelForClause(clause) != null) { builder.append("\n sel expr: " + parseInfo.getSelForClause(clause).dump()); } if (parseInfo.getHavingForClause(clause) != null) { builder.append("\n having expr: " + parseInfo.getHavingForClause(clause).dump()); } if (parseInfo.getDestLimit(clause) != null) { builder.append("\n limit: " + parseInfo.getDestLimit(clause)); } if (parseInfo.getAllExprToColumnAlias() != null && !parseInfo.getAllExprToColumnAlias().isEmpty()) { builder.append("\n exprToColumnAlias:"); for (Map.Entry<ASTNode, String> entry : parseInfo.getAllExprToColumnAlias().entrySet()) { builder.append("\n\t expr: " + entry.getKey().dump() + " ColumnAlias: " + entry.getValue()); } } if (parseInfo.getAggregationExprsForClause(clause) != null) { builder.append("\n aggregateexprs:"); for (Map.Entry<String, ASTNode> entry : parseInfo.getAggregationExprsForClause(clause).entrySet()) { builder.append("\n\t key: " + entry.getKey() + " expr: " + entry.getValue().dump()); } } if (parseInfo.getDistinctFuncExprsForClause(clause) != null) { builder.append("\n distinctFuncExprs:"); for (ASTNode entry : parseInfo.getDistinctFuncExprsForClause(clause)) { builder.append("\n\t expr: " + entry.dump()); } } if (qb.getQbJoinTree() != null) { builder.append("\n\n JoinTree"); QBJoinTree joinTree = qb.getQbJoinTree(); printJoinTree(joinTree, builder); } if (qb.getParseInfo().getDestForClause(clause) != null) { builder.append("\n Destination:"); builder.append("\n\t dest expr:" + qb.getParseInfo().getDestForClause(clause).dump()); } log.debug(builder.toString()); }