/** * Compare two Froms for equality. Order is not important in the from, so * this is a set comparison. */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof From)) { return false; } return EquivalenceUtil.areEqual(getClauses(), ((From)obj).getClauses()); }
/** * Compare two Froms for equality. Order is not important in the from, so * this is a set comparison. */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof From)) { return false; } return EquivalenceUtil.areEqual(getClauses(), ((From)obj).getClauses()); }
/** * Merges the from clause into a single join predicate if there are more than 1 from clauses */ private static FromClause mergeClauseTrees(From from) { List<FromClause> clauses = from.getClauses(); while (clauses.size() > 1) { FromClause first = from.getClauses().remove(0); FromClause second = from.getClauses().remove(0); JoinPredicate jp = new JoinPredicate(first, second, JoinType.JOIN_CROSS); clauses.add(0, jp); } return clauses.get(0); }
/** * Merges the from clause into a single join predicate if there are more than 1 from clauses */ private static FromClause mergeClauseTrees(From from) { List<FromClause> clauses = from.getClauses(); while (clauses.size() > 1) { FromClause first = from.getClauses().remove(0); FromClause second = from.getClauses().remove(0); JoinPredicate jp = new JoinPredicate(first, second, JoinType.JOIN_CROSS); clauses.add(0, jp); } return clauses.get(0); }
/** * Merges the from clause into a single join predicate if there are more than 1 from clauses */ private static FromClause mergeClauseTrees(From from) { List<FromClause> clauses = from.getClauses(); while (clauses.size() > 1) { FromClause first = from.getClauses().remove(0); FromClause second = from.getClauses().remove(0); JoinPredicate jp = new JoinPredicate(first, second, JoinType.JOIN_CROSS); clauses.add(0, jp); } return clauses.get(0); }
public void visit(From obj) { assert currentGroups.isEmpty(); for (FromClause clause : obj.getClauses()) { checkImplicit(clause); } super.visit(obj); addDiscoveredGroups(); }
@Override public void visit( From obj ) { append(FROM); beginClause(1); registerNodes(obj.getClauses(), 0); }
private boolean isSimpleJoin(Query query) { if (query.getFrom() != null) { for (FromClause clause : query.getFrom().getClauses()) { if (RuleCollapseSource.hasOuterJoins(clause)) { return false; } } } return true; }
@Override public void visit( From obj ) { append(FROM); beginClause(1); registerNodes(obj.getClauses(), 0); }
private boolean isSimpleJoin(Query query) { if (query.getFrom() != null) { for (FromClause clause : query.getFrom().getClauses()) { if (RuleCollapseSource.hasOuterJoins(clause)) { return false; } } } return true; }
private boolean isSimpleJoin(Query query) { if (query.getFrom() != null) { for (FromClause clause : query.getFrom().getClauses()) { if (RuleCollapseSource.hasOuterJoins(clause)) { return false; } } } return true; }
public void visit(From obj) { preVisitVisitor(obj); visitNodes(obj.getClauses()); postVisitVisitor(obj); } public void visit(Function obj) {
@Override public void visit( From obj ) { append(FROM); beginClause(1); registerNodes(obj.getClauses(), 0); }
public void visit(From obj) { preVisitVisitor(obj); visitNodes(obj.getClauses()); postVisitVisitor(obj); } public void visit(Function obj) {
public void visit(From obj) { preVisitVisitor(obj); visitNodes(obj.getClauses()); postVisitVisitor(obj); } public void visit(Function obj) {
@Test public void testOptionMakedep() throws Exception { String sql = "SELECT A.alert_id " + //$NON-NLS-1$ "FROM (FSK_ALERT AS A MAKEDEP INNER JOIN Core.FSC_PARTY_DIM AS C ON A.primary_entity_key = C.PARTY_KEY) " +//$NON-NLS-1$ "LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id ";//$NON-NLS-1$ Query command = (Query)new QueryParser().parseCommand(sql); JoinPredicate predicate = (JoinPredicate)command.getFrom().getClauses().get(0); assertTrue(((JoinPredicate)predicate.getLeftClause()).getLeftClause().isMakeDep()); }
@Test public void testTableAliasString() throws Exception { String sql = "select \"pm1g2\".* from pm1.g1 as \"pm1g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1g2", gs.getName()); assertEquals("SELECT pm1g2.* FROM pm1.g1 AS pm1g2", query.toString()); }
@Test public void testSubqueryAliasWithPeriod() throws Exception { String sql = "select \"pm1.g2\".x from (select 1 as x) as \"pm1.g2\""; Query query = (Query)helpResolve(sql); SubqueryFromClause sfc = (SubqueryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = sfc.getGroupSymbol(); assertEquals("pm1.g2", gs.getName()); assertNull(gs.getDefinition()); assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.toString()); assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.clone().toString()); assertEquals("[\"pm1.g2\".x]", query.getProjectedSymbols().toString()); }
@Test public void testTableAliasWithMultiplePeriods() throws Exception { String sql = "select \"pm1..g2\".e1 from pm1.g1 as \"pm1..g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1..g2", gs.getName()); assertEquals("pm1.g1", gs.getDefinition()); assertEquals("SELECT \"pm1..g2\".e1 FROM pm1.g1 AS \"pm1..g2\"", query.toString()); assertEquals("[\"pm1..g2\".e1]", query.getProjectedSymbols().toString()); }
@Test public void testTableAliasWithPeriod() throws Exception { String sql = "select \"pm1.g2\".*, e1, \"pm1.g2\".e2, pm1.g2.e2 from pm1.g1 as \"pm1.g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1.g2", gs.getName()); assertEquals("pm1.g1", gs.getDefinition()); assertFalse(gs.isTempTable()); assertEquals("SELECT \"pm1.g2\".*, e1, \"pm1.g2\".e2, \"pm1.g2\".e2 FROM pm1.g1 AS \"pm1.g2\"", query.toString()); assertEquals("[\"pm1.g2\".e1, \"pm1.g2\".e2, \"pm1.g2\".e3, \"pm1.g2\".e4, e1, \"pm1.g2\".e2, \"pm1.g2\".e2]", query.getProjectedSymbols().toString()); }