public void addSelectAlias(String alias, String spacedAlias) { selectAliases.add(alias); if (!StringUtils.isBlank(spacedAlias)) { selectFinalAliases.add("`" + spacedAlias + "`"); } else { selectFinalAliases.add(alias); } }
private void getQLString( QBJoinTree joinTree, StringBuilder builder, CandidateFact fact, Map<Dimension, CandidateDim> dimsToQuery) throws LensException { List<String> joiningTables = new ArrayList<>(); if (joinTree.getBaseSrc()[0] == null) { if (joinTree.getJoinSrc() != null) { getQLString(joinTree.getJoinSrc(), builder, fact, dimsToQuery); } } else { // (joinTree.getBaseSrc()[0] != null){ String alias = joinTree.getBaseSrc()[0].toLowerCase(); builder.append(getStorageStringWithAlias(fact, dimsToQuery, alias)); joiningTables.add(alias); } if (joinTree.getJoinCond() != null) { builder.append(JoinUtils.getJoinTypeStr(joinTree.getJoinCond()[0].getJoinType())); builder.append(" JOIN "); } if (joinTree.getBaseSrc()[1] == null) { if (joinTree.getJoinSrc() != null) { getQLString(joinTree.getJoinSrc(), builder, fact, dimsToQuery); } } else { // (joinTree.getBaseSrc()[1] != null){ String alias = joinTree.getBaseSrc()[1].toLowerCase(); builder.append(getStorageStringWithAlias(fact, dimsToQuery, alias)); joiningTables.add(alias); } String joinCond = joinConds.get(joinTree); if (joinCond != null) { builder.append(" ON "); builder.append(joinCond); // joining tables will contain all tables involved in joins. // we need to push storage filters for Dimensions into join conditions, thus the following // code // takes care of the same. for (String joiningTable : joiningTables) { if (cubeTbls.get(joiningTable) instanceof Dimension) { DimOnlyHQLContext.appendWhereClause( builder, getWhereClauseWithAlias(dimsToQuery, joiningTable), true); dimsToQuery.get(cubeTbls.get(joiningTable)).setWhereClauseAdded(joiningTable); } } } else { throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAILABLE.getLensErrorInfo()); } }