Package org.teiid.query.sql.symbol

Examples of org.teiid.query.sql.symbol.SingleElementSymbol


      throws QueryValidatorException {
    if (symbols.size() != projectedSymbols.size()) {
      throw new QueryValidatorException(QueryPlugin.Util.getString("QueryResolver.wrong_view_symbols", virtualGroup, symbols.size(), projectedSymbols.size())); //$NON-NLS-1$
    }
    for (int i = 0; i < projectedSymbols.size(); i++) {
      SingleElementSymbol projectedSymbol = projectedSymbols.get(i);
     
      ResolverUtil.setTypeIfNull(projectedSymbol, symbols.get(i).getType());
     
      if (projectedSymbol.getType() != symbols.get(i).getType()) {
        throw new QueryValidatorException(QueryPlugin.Util.getString("QueryResolver.wrong_view_symbol_type", virtualGroup, i+1//$NON-NLS-1$
            DataTypeManager.getDataTypeName(symbols.get(i).getType()), DataTypeManager.getDataTypeName(projectedSymbol.getType())));
      }
    }
  }
View Full Code Here


    public ResultsMessage createResultsMessage(List[] batch, List columnSymbols) {
        String[] columnNames = new String[columnSymbols.size()];
        String[] dataTypes = new String[columnSymbols.size()];

        for(int i=0; i<columnSymbols.size(); i++) {
            SingleElementSymbol symbol = (SingleElementSymbol) columnSymbols.get(i);
            columnNames[i] = SingleElementSymbol.getShortName(symbol.getOutputName());
            dataTypes[i] = DataTypeManager.getDataTypeName(symbol.getType());
        }
        ResultsMessage result = new ResultsMessage(requestMsg, batch, columnNames, dataTypes);
        setAnalysisRecords(result);
        return result;
    }
View Full Code Here

        registerNodes(obj.getOrderByItems(), 0);
    }

    @Override
    public void visit( OrderByItem obj ) {
        SingleElementSymbol ses = obj.getSymbol();
        if (ses instanceof AliasSymbol) {
            AliasSymbol as = (AliasSymbol)ses;
            outputDisplayName(as.getOutputName());
        } else {
            visitNode(ses);
View Full Code Here

    public void visit(Select obj) {
        super.visit(obj);
        List selectSymbols = obj.getSymbols();
        HashMap<SingleElementSymbol, String> symbols = new HashMap<SingleElementSymbol, String>(selectSymbols.size());               
        for (int i = 0; i < selectSymbols.size(); i++) {
            SingleElementSymbol symbol = (SingleElementSymbol)selectSymbols.get(i);

            boolean needsAlias = visitor.namingContext.aliasColumns;
           
            String newAlias = "c_" + i; //$NON-NLS-1$
           
            Expression expr = SymbolMap.getExpression(symbol);
           
            SingleElementSymbol newSymbol = symbol;
           
            if (!(expr instanceof SingleElementSymbol)) {
                newSymbol = new ExpressionSymbol(newSymbol.getShortName(), expr);
            } else if (expr instanceof ElementSymbol) {
                newSymbol = (ElementSymbol)expr;
              if (!needsAlias) {
                newAlias = newSymbol.getOutputName();
              } else {
                    needsAlias &= needsAlias(newAlias, (ElementSymbol)expr);
                }
            } else {
                newSymbol = (SingleElementSymbol)expr;
            }
                       
            symbols.put(symbol, newAlias);
            if (visitor.namingContext.aliasColumns && needsAlias) {
                newSymbol = new AliasSymbol(symbol.getShortName(), newSymbol);
                newSymbol.setOutputName(newAlias);
            }
            selectSymbols.set(i, newSymbol);
        }
       
        visitor.namingContext.currentSymbols = symbols;
View Full Code Here

   
    public void visit(OrderBy obj) {
      //add/correct aliases if necessary
        for (int i = 0; i < obj.getVariableCount(); i++) {
            OrderByItem item = obj.getOrderByItems().get(i);
            SingleElementSymbol element = item.getSymbol();
            if (item.isUnrelated()) {
              visitNode(element);
              continue;
            }
            String name = visitor.namingContext.getElementName(element, false);
            boolean needsAlias = visitor.namingContext.aliasColumns;
            if (name != null) {
             
              Expression expr = SymbolMap.getExpression(element);
                         
              if (!(expr instanceof SingleElementSymbol)) {
                  expr = new ExpressionSymbol(element.getShortName(), expr);
              } else if (expr instanceof ElementSymbol) {
                needsAlias &= needsAlias(name, (ElementSymbol)expr);
              }
                         
              if (needsAlias) {
                  element = new AliasSymbol(element.getShortName(), (SingleElementSymbol)expr);
              } else if (expr instanceof ElementSymbol) {
                element = (ElementSymbol)expr;
                visitNode(element);
              }
              item.setSymbol(element);
              element.setOutputName(name);
            }
        }
    }
View Full Code Here

   
    private void helpCheckExpressionsSymbols(OrderBy langObj,
                                             String[] functionsNames) {
      int expCount = 0;
        for (Iterator i = langObj.getSortKeys().iterator(); i.hasNext();) {
          SingleElementSymbol ses = (SingleElementSymbol)i.next();
            if (ses instanceof ExpressionSymbol) {
                assertEquals("Expression Symbols does not match: ", functionsNames[expCount++], ses.toString()); //$NON-NLS-1$                           
            }
        }
        assertEquals("Wrong number of Symbols: ", functionsNames.length, expCount); //$NON-NLS-1$
    }
View Full Code Here

        try {
          top = createInlineViewQuery(new GroupSymbol("X"), query, metadata, select.getProjectedSymbols()); //$NON-NLS-1$
      Iterator<SingleElementSymbol> iter = top.getSelect().getProjectedSymbols().iterator();
        HashMap<Expression, SingleElementSymbol> expressionMap = new HashMap<Expression, SingleElementSymbol>();
        for (SingleElementSymbol symbol : select.getProjectedSymbols()) {
          SingleElementSymbol ses = iter.next();
            expressionMap.put(SymbolMap.getExpression(symbol), ses);
            expressionMap.put(new ElementSymbol(symbol.getName()), ses);
        }
        ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap);
        //now the order by should only contain element symbols
View Full Code Here

      final OrderBy orderBy, final List projectedSymbols,
      LinkedList<OrderByItem> unrelatedItems) {
    boolean hasUnrelatedExpression = false;
    HashSet<Expression> previousExpressions = new HashSet<Expression>();
        for (int i = 0; i < orderBy.getVariableCount(); i++) {
          SingleElementSymbol querySymbol = orderBy.getVariable(i);
          int index = orderBy.getExpressionPosition(i);
        boolean isUnrelated = false;
          if (index == -1) {
          unrelatedItems.add(orderBy.getOrderByItems().get(i));
          isUnrelated = (querySymbol instanceof ExpressionSymbol);
          } else {
            querySymbol = (SingleElementSymbol)projectedSymbols.get(index);
          }
          Expression expr = SymbolMap.getExpression(querySymbol);
          if (!previousExpressions.add(expr) || (queryCommand instanceof Query && EvaluatableVisitor.willBecomeConstant(expr))) {
                orderBy.removeOrderByItem(i--);
          } else if (!isUnrelated) {
            orderBy.getOrderByItems().get(i).setSymbol((SingleElementSymbol)querySymbol.clone());
          } else {
            hasUnrelatedExpression = true;
          }
        }
        if (orderBy.getVariableCount() == 0) {
View Full Code Here

    }

  private Insert correctDatatypes(Insert insert) {
    boolean needsView = false;
    for (int i = 0; !needsView && i < insert.getVariables().size(); i++) {
        SingleElementSymbol ses = insert.getVariables().get(i);
        if (ses.getType() != insert.getQueryExpression().getProjectedSymbols().get(i).getType()) {
            needsView = true;
        }
    }
    if (needsView) {
        try {
View Full Code Here

          return rewriteCriteria(result);
        }
        CompareCriteria cc = new CompareCriteria();
        cc.setLeftExpression(criteria.getLeftExpression());
        Query q = createInlineViewQuery(new GroupSymbol("X"), criteria.getCommand(), metadata, criteria.getCommand().getProjectedSymbols()); //$NON-NLS-1$
        SingleElementSymbol ses = q.getProjectedSymbols().get(0);
        Expression expr = SymbolMap.getExpression(ses);
        q.getSelect().clearSymbols();
        AggregateSymbol.Type type = Type.MAX;
        if (criteria.getOperator() == CompareCriteria.GT || criteria.getOperator() == CompareCriteria.GE) {
          type = Type.MIN;
        }
        q.getSelect().addSymbol(new AggregateSymbol(ses.getName(), type.name(), false, expr));
        cc.setRightExpression(new ScalarSubquery(q));
      cc.setOperator(criteria.getOperator());
        return rewriteCriteria(cc);
      }
View Full Code Here

TOP

Related Classes of org.teiid.query.sql.symbol.SingleElementSymbol

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.