private void setProjectedTypes(SetQuery setQuery, List<Class<?>> firstProjectTypes, QueryMetadataInterface metadata) throws QueryResolverException { for (QueryCommand subCommand : setQuery.getQueryCommands()) { if (!(subCommand instanceof SetQuery)) { continue; } SetQuery child = (SetQuery)subCommand; List projectedSymbols = child.getProjectedSymbols(); if (child.getOrderBy() != null) { for (int j = 0; j < projectedSymbols.size(); j++) { Expression ses = (Expression)projectedSymbols.get(j); Class<?> targetType = firstProjectTypes.get(j); if (ses.getType() != targetType && orderByContainsVariable(child.getOrderBy(), ses, j)) { String sourceTypeName = DataTypeManager.getDataTypeName(ses.getType()); String targetTypeName = DataTypeManager.getDataTypeName(targetType); throw new QueryResolverException(QueryPlugin.Util.getString("UnionQueryResolver.type_conversion", //$NON-NLS-1$ new Object[] {ses, sourceTypeName, targetTypeName})); } } } child.setProjectedTypes(firstProjectTypes, metadata); setProjectedTypes(child, firstProjectTypes, metadata); } }
private void setProjectedTypes(SetQuery setQuery, List<Class<?>> firstProjectTypes, QueryMetadataInterface metadata) throws QueryResolverException { for (QueryCommand subCommand : setQuery.getQueryCommands()) { if (!(subCommand instanceof SetQuery)) { continue; } SetQuery child = (SetQuery)subCommand; List projectedSymbols = child.getProjectedSymbols(); if (child.getOrderBy() != null) { for (int j = 0; j < projectedSymbols.size(); j++) { Expression ses = (Expression)projectedSymbols.get(j); Class<?> targetType = firstProjectTypes.get(j); if (ses.getType() != targetType && orderByContainsVariable(child.getOrderBy(), ses, j)) { String sourceTypeName = DataTypeManager.getDataTypeName(ses.getType()); String targetTypeName = DataTypeManager.getDataTypeName(targetType); throw new QueryResolverException(QueryPlugin.Util.getString("UnionQueryResolver.type_conversion", //$NON-NLS-1$ new Object[] {ses, sourceTypeName, targetTypeName})); } } } child.setProjectedTypes(firstProjectTypes, metadata); setProjectedTypes(child, firstProjectTypes, metadata); } }
private void setProjectedTypes(SetQuery setQuery, List<Class<?>> firstProjectTypes, QueryMetadataInterface metadata) throws QueryResolverException { for (QueryCommand subCommand : setQuery.getQueryCommands()) { if (!(subCommand instanceof SetQuery)) { continue; } SetQuery child = (SetQuery)subCommand; List projectedSymbols = child.getProjectedSymbols(); if (child.getOrderBy() != null) { for (int j = 0; j < projectedSymbols.size(); j++) { Expression ses = (Expression)projectedSymbols.get(j); Class<?> targetType = firstProjectTypes.get(j); if (ses.getType() != targetType && orderByContainsVariable(child.getOrderBy(), ses, j)) { String sourceTypeName = DataTypeManager.getDataTypeName(ses.getType()); String targetTypeName = DataTypeManager.getDataTypeName(targetType); throw new QueryResolverException(QueryPlugin.Util.getString("UnionQueryResolver.type_conversion", //$NON-NLS-1$ new Object[] {ses, sourceTypeName, targetTypeName})); } } } child.setProjectedTypes(firstProjectTypes, metadata); setProjectedTypes(child, firstProjectTypes, metadata); } }
public void visit(SetQuery obj) { preVisitVisitor(obj); visitNodes(obj.getWith()); visitNodes(obj.getQueryCommands()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNode(obj.getOption()); postVisitVisitor(obj); }
private void verifyProjectedTypesOnUnionBranches(String unionQuery, Class<?>[] types) throws TeiidComponentException, TeiidProcessingException { SetQuery union = (SetQuery)QueryParser.getQueryParser().parseCommand(unionQuery); QueryResolver.resolveCommand(union, RealMetadataFactory.example1Cached()); union = (SetQuery)QueryRewriter.rewrite(union, RealMetadataFactory.example1Cached(), null); for (QueryCommand query : union.getQueryCommands()) { List<Expression> projSymbols = query.getProjectedSymbols(); for(int i=0; i<projSymbols.size(); i++) { assertEquals("Found type mismatch at column " + i, types[i], projSymbols.get(i).getType()); //$NON-NLS-1$ } } }
public void visit(SetQuery obj) { preVisitVisitor(obj); visitNodes(obj.getWith()); visitNodes(obj.getQueryCommands()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNode(obj.getOption()); postVisitVisitor(obj); }
public void visit(SetQuery obj) { preVisitVisitor(obj); visitNodes(obj.getWith()); visitNodes(obj.getQueryCommands()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNode(obj.getOption()); postVisitVisitor(obj); }
protected void validateSetQuery(SetQuery query) { // Walk through sub queries - validate each one separately and // also check the columns of each for comparability for (QueryCommand subQuery : query.getQueryCommands()) { if (subQuery instanceof Query && ((Query)subQuery).getInto() != null) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.union_insert"), query); //$NON-NLS-1$ } } if (!query.isAll() || query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT) { validateSortable(query.getProjectedSymbols()); } if (query.isAll() && (query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT)) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.excpet_intersect_all"), query); //$NON-NLS-1$ } }
protected void validateSetQuery(SetQuery query) { // Walk through sub queries - validate each one separately and // also check the columns of each for comparability for (QueryCommand subQuery : query.getQueryCommands()) { if (subQuery instanceof Query && ((Query)subQuery).getInto() != null) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.union_insert"), query); //$NON-NLS-1$ } } if (!query.isAll() || query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT) { validateSortable(query.getProjectedSymbols()); } if (query.isAll() && (query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT)) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.excpet_intersect_all"), query); //$NON-NLS-1$ } }
private SetQuery rewriteSetQuery(SetQuery setQuery) throws TeiidComponentException, TeiidProcessingException{ if (setQuery.getProjectedTypes() != null) { for (QueryCommand command : setQuery.getQueryCommands()) { if (!(command instanceof Query)) { continue; } correctProjectedTypes(setQuery.getProjectedTypes(), (Query)command); } setQuery.setProjectedTypes(null, null); } setQuery.setLeftQuery((QueryCommand)rewriteCommand(setQuery.getLeftQuery(), true)); setQuery.setRightQuery((QueryCommand)rewriteCommand(setQuery.getRightQuery(), true)); rewriteOrderBy(setQuery); if (setQuery.getLimit() != null) { setQuery.setLimit(rewriteLimitClause(setQuery.getLimit())); } return setQuery; }
private SetQuery rewriteSetQuery(SetQuery setQuery) throws TeiidComponentException, TeiidProcessingException{ if (setQuery.getProjectedTypes() != null) { for (QueryCommand command : setQuery.getQueryCommands()) { if (!(command instanceof Query)) { continue; } correctProjectedTypes(setQuery.getProjectedTypes(), (Query)command); } setQuery.setProjectedTypes(null, null); } setQuery.setLeftQuery((QueryCommand)rewriteCommand(setQuery.getLeftQuery(), true)); setQuery.setRightQuery((QueryCommand)rewriteCommand(setQuery.getRightQuery(), true)); rewriteOrderBy(setQuery); if (setQuery.getLimit() != null) { setQuery.setLimit(rewriteLimitClause(setQuery.getLimit())); } return setQuery; }
private SetQuery rewriteSetQuery(SetQuery setQuery) throws TeiidComponentException, TeiidProcessingException{ if (setQuery.getProjectedTypes() != null) { for (QueryCommand command : setQuery.getQueryCommands()) { if (!(command instanceof Query)) { continue; } correctProjectedTypes(setQuery.getProjectedTypes(), (Query)command); } setQuery.setProjectedTypes(null, null); } setQuery.setLeftQuery((QueryCommand)rewriteCommand(setQuery.getLeftQuery(), true)); setQuery.setRightQuery((QueryCommand)rewriteCommand(setQuery.getRightQuery(), true)); rewriteOrderBy(setQuery); if (setQuery.getLimit() != null) { setQuery.setLimit(rewriteLimitClause(setQuery.getLimit())); } return setQuery; }
protected void validateSetQuery(SetQuery query) { // Walk through sub queries - validate each one separately and // also check the columns of each for comparability for (QueryCommand subQuery : query.getQueryCommands()) { if(isXMLCommand(subQuery)) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0034"), query); //$NON-NLS-1$ } if (subQuery instanceof Query && ((Query)subQuery).getInto() != null) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.union_insert"), query); //$NON-NLS-1$ } } if (!query.isAll() || query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT) { validateSortable(query.getProjectedSymbols()); } if (query.isAll() && (query.getOperation() == Operation.EXCEPT || query.getOperation() == Operation.INTERSECT)) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.excpet_intersect_all"), query); //$NON-NLS-1$ } }
SetQuery union = (SetQuery) queryCommand; boolean shouldExecute = false; for (QueryCommand innerQuery : union.getQueryCommands()) { boolean shouldInner = shouldExecute(innerQuery, simplifyCriteria, duringPlanning); if(shouldInner) {
SetQuery union = (SetQuery) queryCommand; boolean shouldExecute = false; for (QueryCommand innerQuery : union.getQueryCommands()) { boolean shouldInner = shouldExecute(innerQuery, simplifyCriteria, duringPlanning); if(shouldInner) {
SetQuery union = (SetQuery) queryCommand; boolean shouldExecute = false; for (QueryCommand innerQuery : union.getQueryCommands()) { boolean shouldInner = shouldExecute(innerQuery, simplifyCriteria, duringPlanning); if(shouldInner) {