/** * Method to get SELECT Element list from the supplied query * @param query the supplied Query * @return the list of SELECT elements */ private ArrayList<Column> getElementsFromSelectSymbols(Select query) { ArrayList<Column> selectElementList = new ArrayList<Column>(); Iterator<DerivedColumn> selectSymbolItr = query.getDerivedColumns().iterator(); while(selectSymbolItr.hasNext()) { Column e = getElementFromSymbol(selectSymbolItr.next()); selectElementList.add(e); } return selectElementList; }
@Override public List<?> translateCommand(Command command, ExecutionContext context) { if (command instanceof Select) { Select select = (Select)command; if (select.getFrom() == null || select.getFrom().isEmpty()) { List<Object> result = new ArrayList<Object>(); result.add("VALUES("); //$NON-NLS-1$ for (int i = 0; i < select.getDerivedColumns().size(); i++) { DerivedColumn dc = select.getDerivedColumns().get(i); if (i != 0) { result.add(", "); //$NON-NLS-1$ } result.add(dc.getExpression()); } result.add(")"); //$NON-NLS-1$ return result; } } return super.translateCommand(command, context); }
/** * Get the derived column names. Note this only reports alias names. * Any other names may not be consistent throughout the translation process. * @return a String[] containing the column names * @since 4.3 */ public String[] getColumnNames() { List<DerivedColumn> selectSymbols = getProjectedQuery().getDerivedColumns(); String[] columnNames = new String[selectSymbols.size()]; int symbolIndex = 0; for (DerivedColumn column : selectSymbols) { columnNames[symbolIndex++] = column.getAlias(); } return columnNames; }
@Override public Class<?> getType() { return query.getProjectedQuery().getDerivedColumns().get(0).getExpression().getType(); }
@Override public List<?> translateCommand(Command command, ExecutionContext context) { if (!supportsLiteralOnlyWithGrouping() && (command instanceof Select)) { Select select = (Select)command; if (select.getGroupBy() != null && select.getDerivedColumns().size() == 1) { DerivedColumn dc = select.getDerivedColumns().get(0); if (dc.getExpression() instanceof Literal) { dc.setExpression(select.getGroupBy().getElements().get(0)); } } } return super.translateCommand(command, context); }
/** * Get the column types of the output columns for this query * @return a Class[] containing the column names * @since 4.3 */ public Class<?>[] getColumnTypes() { List<DerivedColumn> selectSymbols = getProjectedQuery().getDerivedColumns(); Class<?>[] columnTypes = new Class[selectSymbols.size()]; int symbolIndex = 0; for (DerivedColumn column : selectSymbols) { columnTypes[symbolIndex++] = column.getExpression().getType(); } return columnTypes; }
public ODataQueryExecution(ODataExecutionFactory translator, QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection) throws TranslatorException { super(translator, executionContext, metadata, connection); this.visitor = new ODataSQLVisitor(this.translator, metadata); this.visitor.visitNode(command); if (command instanceof Select) { Select select = (Select)command; if (select.getGroupBy() == null && select.getDerivedColumns().get(0).getExpression() instanceof AggregateFunction) { this.isCount = true; } } if (!this.visitor.exceptions.isEmpty()) { throw visitor.exceptions.get(0); } this.expectedColumnTypes = command.getColumnTypes(); }
private void setProjected(QueryExpression qe) { if (qe instanceof Select) { Select select = (Select)qe; for (DerivedColumn dc : select.getDerivedColumns()) { dc.setProjected(true); } } else { org.teiid.language.SetQuery sq = (org.teiid.language.SetQuery)qe; setProjected(sq.getLeftQuery()); setProjected(sq.getRightQuery()); } }
public void testGetSelectSymbols() throws Exception { List symbols = example(false).getDerivedColumns(); assertNotNull(symbols); assertEquals(4, symbols.size()); for (Iterator i = symbols.iterator(); i.hasNext();) { assertTrue(i.next() instanceof DerivedColumn); } }
private void setProjected(QueryExpression qe) { if (qe instanceof Select) { Select select = (Select)qe; for (DerivedColumn dc : select.getDerivedColumns()) { dc.setProjected(true); } } else { org.teiid.language.SetQuery sq = (org.teiid.language.SetQuery)qe; setProjected(sq.getLeftQuery()); setProjected(sq.getRightQuery()); } }
@Override public void visit(WithItem obj) { if (obj.getColumns() != null) { List<ColumnReference> cols = obj.getColumns(); if(!obj.isRecusive()) { //oracle 10 does not support recursion nor a column list obj.setColumns(null); Select select = obj.getSubquery().getProjectedQuery(); List<DerivedColumn> selectClause = select.getDerivedColumns(); for (int i = 0; i < cols.size(); i++) { selectClause.get(i).setAlias(cols.get(i).getName()); } } } super.visit(obj); }
private void setProjected(QueryExpression qe) { if (qe instanceof Select) { Select select = (Select)qe; for (DerivedColumn dc : select.getDerivedColumns()) { dc.setProjected(true); } } else { org.teiid.language.SetQuery sq = (org.teiid.language.SetQuery)qe; setProjected(sq.getLeftQuery()); setProjected(sq.getRightQuery()); } }
public void testGetSelect() throws Exception { assertNotNull(example(true).getDerivedColumns()); }
@Override public void visit(Select obj) { visitNodes(obj.getFrom()); this.conditionFragments.add(obj.getWhere()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNodes(obj.getDerivedColumns()); }
@Override public void visit(SetQuery obj) { for (int i = 0; i < obj.getColumnNames().length; i++) { DerivedColumn leftDerivedColumn = obj.getLeftQuery().getProjectedQuery().getDerivedColumns().get(i); boolean left_i18n = OracleExecutionFactory.this.isNonAscii(leftDerivedColumn.getExpression()); DerivedColumn rightDerivedColumn = obj.getRightQuery().getProjectedQuery().getDerivedColumns().get(i); boolean right_i18n = OracleExecutionFactory.this.isNonAscii(rightDerivedColumn.getExpression()); if (left_i18n ^ right_i18n) { if (!left_i18n) { leftDerivedColumn.setExpression(toNChar(leftDerivedColumn.getExpression())); } else if (!right_i18n) { rightDerivedColumn.setExpression(toNChar(rightDerivedColumn.getExpression())); } } } super.visit(obj); }
public void testGetSelect() throws Exception { assertNotNull(example().getProjectedQuery().getDerivedColumns()); }
@Override public void visit(Select obj) { visitNodes(obj.getDerivedColumns()); visitNodes(obj.getFrom()); visitNode(obj.getWhere()); visitNode(obj.getGroupBy()); visitNode(obj.getHaving()); visitNode(obj.getOrderBy()); }
public void testGetType() throws Exception { Select query = TstLanguageBridgeFactory.factory.translate(TestQueryImpl.helpExample(true)); Class<?> firstSymbolType = query.getDerivedColumns().get(0).getExpression().getType(); assertEquals("Got incorrect type", firstSymbolType, example().getType()); //$NON-NLS-1$ }
@Override public void visit(Select obj) { visitNodes(obj.getFrom()); obj.setWhere(buildEntityKey(obj.getWhere())); visitNode(obj.getWhere()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNodes(obj.getDerivedColumns()); }
public void visit(Select obj) { visitNode(obj.getWith()); visitNodes(obj.getDerivedColumns()); visitNodes(obj.getFrom()); visitNode(obj.getWhere()); visitNode(obj.getGroupBy()); visitNode(obj.getHaving()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); }