/** * To switch directions from left to right or right to left. Joins * that are not LEFT OUTER or RIGHT OUTER are returned unchanged. * @return New JoinType constant for the reverse join type */ public JoinType getReverseType() { if(this.equals(JOIN_RIGHT_OUTER)) { return JOIN_LEFT_OUTER; } else if(this.equals(JOIN_LEFT_OUTER)) { return JOIN_RIGHT_OUTER; } return this; }
/** * To switch directions from left to right or right to left. Joins * that are not LEFT OUTER or RIGHT OUTER are returned unchanged. * @return New JoinType constant for the reverse join type */ public JoinType getReverseType() { if(this.equals(JOIN_RIGHT_OUTER)) { return JOIN_LEFT_OUTER; } else if(this.equals(JOIN_LEFT_OUTER)) { return JOIN_RIGHT_OUTER; } return this; }
/** * To switch directions from left to right or right to left. Joins * that are not LEFT OUTER or RIGHT OUTER are returned unchanged. * @return New JoinType constant for the reverse join type */ public JoinType getReverseType() { if(this.equals(JOIN_RIGHT_OUTER)) { return JOIN_LEFT_OUTER; } else if(this.equals(JOIN_LEFT_OUTER)) { return JOIN_RIGHT_OUTER; } return this; }
@Override public void visit( JoinType obj ) { String[] output = null; if (obj.equals(JoinType.JOIN_INNER)) { output = new String[] {INNER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_CROSS)) { output = new String[] {CROSS, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_LEFT_OUTER)) { output = new String[] {LEFT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_RIGHT_OUTER)) { output = new String[] {RIGHT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_FULL_OUTER)) { output = new String[] {FULL, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_UNION)) { output = new String[] {UNION, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_SEMI)) { output = new String[] {"SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else if (obj.equals(JoinType.JOIN_ANTI_SEMI)) { output = new String[] {"ANTI SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else { throw new AssertionError(); } for (String part : output) { append(part); } }
@Override public void visit( JoinType obj ) { String[] output = null; if (obj.equals(JoinType.JOIN_INNER)) { output = new String[] {INNER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_CROSS)) { output = new String[] {CROSS, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_LEFT_OUTER)) { output = new String[] {LEFT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_RIGHT_OUTER)) { output = new String[] {RIGHT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_FULL_OUTER)) { output = new String[] {FULL, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_UNION)) { output = new String[] {UNION, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_SEMI)) { output = new String[] {"SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else if (obj.equals(JoinType.JOIN_ANTI_SEMI)) { output = new String[] {"ANTI SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else { throw new AssertionError(); } for (String part : output) { append(part); } }
@Override public void visit( JoinType obj ) { String[] output = null; if (obj.equals(JoinType.JOIN_INNER)) { output = new String[] {INNER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_CROSS)) { output = new String[] {CROSS, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_LEFT_OUTER)) { output = new String[] {LEFT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_RIGHT_OUTER)) { output = new String[] {RIGHT, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_FULL_OUTER)) { output = new String[] {FULL, SPACE, OUTER, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_UNION)) { output = new String[] {UNION, SPACE, JOIN}; } else if (obj.equals(JoinType.JOIN_SEMI)) { output = new String[] {"SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else if (obj.equals(JoinType.JOIN_ANTI_SEMI)) { output = new String[] {"ANTI SEMI", SPACE, JOIN}; //$NON-NLS-1$ } else { throw new AssertionError(); } for (String part : output) { append(part); } }
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
Join translate(JoinPredicate join) { List crits = join.getJoinCriteria(); Criteria crit = null; if (crits.size() == 1) { crit = (Criteria)crits.get(0); } else if (crits.size() > 1) { crit = new CompoundCriteria(crits); } Join.JoinType joinType = Join.JoinType.INNER_JOIN; if(join.getJoinType().equals(JoinType.JOIN_INNER)) { joinType = Join.JoinType.INNER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_LEFT_OUTER)) { joinType = Join.JoinType.LEFT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_RIGHT_OUTER)) { joinType = Join.JoinType.RIGHT_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_FULL_OUTER)) { joinType = Join.JoinType.FULL_OUTER_JOIN; } else if(join.getJoinType().equals(JoinType.JOIN_CROSS)) { joinType = Join.JoinType.CROSS_JOIN; } return new Join(translate(join.getLeftClause()), translate(join.getRightClause()), joinType, translate(crit)); }
public static JoinType getJoinTypePreventingCriteriaOptimization(PlanNode joinNode, Set<GroupSymbol> groups) { JoinType joinType = (JoinType) joinNode.getProperty(NodeConstants.Info.JOIN_TYPE); if(!joinType.isOuter()) { return null; } if(joinType.equals(JoinType.JOIN_FULL_OUTER)) { return joinType; } Set<GroupSymbol> innerGroups = getInnerSideJoinNodes(joinNode)[0].getGroups(); for (GroupSymbol group : groups) { if (innerGroups.contains(group)) { return joinType; } } return null; }
public static JoinType getJoinTypePreventingCriteriaOptimization(PlanNode joinNode, Set<GroupSymbol> groups) { JoinType joinType = (JoinType) joinNode.getProperty(NodeConstants.Info.JOIN_TYPE); if(!joinType.isOuter()) { return null; } if(joinType.equals(JoinType.JOIN_FULL_OUTER)) { return joinType; } Set<GroupSymbol> innerGroups = getInnerSideJoinNodes(joinNode)[0].getGroups(); for (GroupSymbol group : groups) { if (innerGroups.contains(group)) { return joinType; } } return null; }
public static JoinType getJoinTypePreventingCriteriaOptimization(PlanNode joinNode, Set<GroupSymbol> groups) { JoinType joinType = (JoinType) joinNode.getProperty(NodeConstants.Info.JOIN_TYPE); if(!joinType.isOuter()) { return null; } if(joinType.equals(JoinType.JOIN_FULL_OUTER)) { return joinType; } Set<GroupSymbol> innerGroups = getInnerSideJoinNodes(joinNode)[0].getGroups(); for (GroupSymbol group : groups) { if (innerGroups.contains(group)) { return joinType; } } return null; }
if(jtype.equals(JoinType.JOIN_CROSS)) { sourceNode.recordDebugAnnotation("parent join is CROSS", null, "Rejecting dependent join", analysisRecord, null); //$NON-NLS-1$ //$NON-NLS-2$ return false;
if(jtype.equals(JoinType.JOIN_CROSS)) { sourceNode.recordDebugAnnotation("parent join is CROSS", null, "Rejecting dependent join", analysisRecord, null); //$NON-NLS-1$ //$NON-NLS-2$ return false;
if(jtype.equals(JoinType.JOIN_CROSS)) { sourceNode.recordDebugAnnotation("parent join is CROSS", null, "Rejecting dependent join", analysisRecord, null); //$NON-NLS-1$ //$NON-NLS-2$ return false;
public static boolean supportsJoin(Object modelID, JoinType joinType, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) throws QueryMetadataException, TeiidComponentException { if (metadata.isVirtualModel(modelID)){ return false; } // Find capabilities SourceCapabilities caps = getCapabilities(modelID, metadata, capFinder); if (!joinType.isOuter()) { return caps.supportsCapability(Capability.QUERY_FROM_JOIN_INNER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER); } if(! caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER)) { return false; } return !joinType.equals(JoinType.JOIN_FULL_OUTER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER_FULL); }
public static boolean supportsJoin(Object modelID, JoinType joinType, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) throws QueryMetadataException, TeiidComponentException { if (metadata.isVirtualModel(modelID)){ return false; } // Find capabilities SourceCapabilities caps = getCapabilities(modelID, metadata, capFinder); if (!joinType.isOuter()) { return caps.supportsCapability(Capability.QUERY_FROM_JOIN_INNER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER); } if(! caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER)) { return false; } return !joinType.equals(JoinType.JOIN_FULL_OUTER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER_FULL); }
public static boolean supportsJoin(Object modelID, JoinType joinType, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) throws QueryMetadataException, TeiidComponentException { if (metadata.isVirtualModel(modelID)){ return false; } // Find capabilities SourceCapabilities caps = getCapabilities(modelID, metadata, capFinder); if (!joinType.isOuter()) { return caps.supportsCapability(Capability.QUERY_FROM_JOIN_INNER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER); } if(! caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER)) { return false; } return !joinType.equals(JoinType.JOIN_FULL_OUTER) || caps.supportsCapability(Capability.QUERY_FROM_JOIN_OUTER_FULL); }
DocumentNode joinTable(DocumentNode joinResource, EdmNavigationProperty property, JoinType joinType) throws TeiidException { Criteria crit = null; if (!joinType.equals(JoinType.JOIN_CROSS)) { crit = buildJoinCriteria(joinResource, property); } FromClause fromClause; if (joinResource.getKeyPredicates() != null && joinResource.getKeyPredicates().size() > 0) { // here the previous entityset is verbose; need to be canonicalized fromClause = new UnaryFromClause(joinResource.getGroupSymbol()); } else { fromClause = new JoinPredicate(this.getFromClause(), new UnaryFromClause(joinResource.getGroupSymbol()), joinType, crit); } joinResource.setFromClause(fromClause); return joinResource; }
if(jtype.equals(JoinType.JOIN_CROSS)) { return;