public DerivedTable createInlineView(QueryExpression query, String name) { return new DerivedTable(query, name); }
public void visit(DerivedTable obj) { if (obj.isLateral()) { appendLateralKeyword(); buffer.append(Tokens.SPACE); } buffer.append(Tokens.LPAREN); append(obj.getQuery()); buffer.append(Tokens.RPAREN); buffer.append(Tokens.SPACE); if(useAsInGroupAlias()) { buffer.append(AS); buffer.append(Tokens.SPACE); } buffer.append(obj.getCorrelationName()); }
@Override public void visit(DerivedTable obj) { buffer.append(Tokens.LPAREN); append(obj.getQuery()); buffer.append(Tokens.RPAREN); buffer.append(Tokens.SPACE); if(useAsInGroupAlias()) { buffer.append(AS); buffer.append(Tokens.SPACE); } buffer.append(obj.getCorrelationName()); }
TableReference translate(SubqueryFromClause clause) { if (clause.getCommand() instanceof StoredProcedure) { NamedProcedureCall result = new NamedProcedureCall(translate((StoredProcedure)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); result.getCall().setTableReference(true); return result; } DerivedTable result = new DerivedTable(translate((QueryCommand)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); return result; }
@Override public void visit(DerivedTable obj) { if (visitSubcommands) { visitNode(obj.getQuery()); } }
public void testGetName() throws Exception { assertEquals("xyz", example().getCorrelationName()); //$NON-NLS-1$ }
private boolean hasLateralJoin(TableReference table) { if (table instanceof DerivedTable) { return ((DerivedTable)table).isLateral(); } else if (table instanceof NamedProcedureCall) { return ((NamedProcedureCall)table).isLateral(); } return false; }
TableReference translate(SubqueryFromClause clause) { if (clause.getCommand() instanceof StoredProcedure) { NamedProcedureCall result = new NamedProcedureCall(translate((StoredProcedure)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); result.getCall().setTableReference(true); return result; } DerivedTable result = new DerivedTable(translate((QueryCommand)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); return result; }
public void testGetQuery() throws Exception { assertEquals("SELECT DISTINCT g1.e1, g1.e2, g1.e3, g1.e4 FROM g1, g2 AS myAlias, g3, g4 WHERE 100 >= 200 AND 500 < 600 GROUP BY g1.e1, g1.e2, g1.e3, g1.e4 HAVING 100 >= 200 AND 500 < 600 ORDER BY g1.e1, g1.e2 DESC, g1.e3, g1.e4 DESC", example().getQuery().toString()); //$NON-NLS-1$ }
TableReference translate(SubqueryFromClause clause) { if (clause.getCommand() instanceof StoredProcedure) { NamedProcedureCall result = new NamedProcedureCall(translate((StoredProcedure)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); result.getCall().setTableReference(true); return result; } DerivedTable result = new DerivedTable(translate((QueryCommand)clause.getCommand()), clause.getOutputName()); result.setLateral(clause.isLateral()); return result; }
@Override public List<?> translateCommand(Command command, ExecutionContext context) { if (command instanceof SetQuery) { SetQuery set = (SetQuery)command; if (!set.isAll()) { //distinct is not supported, convert to an inline view and add distinct Select s = new Select(); s.setDistinct(true); s.setDerivedColumns(new ArrayList<DerivedColumn>()); s.setOrderBy(set.getOrderBy()); for (DerivedColumn dc : set.getProjectedQuery().getDerivedColumns()) { Assertion.assertTrue(dc.getAlias() != null); //it's expected that the columns will be aliases ColumnReference cr = new ColumnReference(null, dc.getAlias(), null, dc.getExpression().getType()); s.getDerivedColumns().add(new DerivedColumn(null, cr)); } set.setOrderBy(null); s.setLimit(set.getLimit()); set.setLimit(null); set.setAll(true); s.setFrom(Arrays.asList((TableReference)new DerivedTable(set, "x"))); //$NON-NLS-1$ return Arrays.asList(s); } } return super.translateCommand(command, context); }