Package org.teiid.query.sql.symbol

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


        RulePushSelectCriteria rpsc = new RulePushSelectCriteria();
        rpsc.setCreatedNodes(new LinkedList<PlanNode>());
       
    for (int i = 0; i < independentExpressions.size(); i++) {
      Expression indExpr = (Expression)independentExpressions.get(i);
      Collection<ElementSymbol> indElements = ElementCollectorVisitor.getElements(indExpr, true);
      float indSymbolNDV = getNDVEstimate(independentNode, metadata, independentCardinality, indElements, true);
      Expression depExpr = (Expression)dependentExpressions.get(i);
     
      LinkedList<Expression> depExpressions = new LinkedList<Expression>();
      LinkedList<PlanNode> targets = determineTargets(dependentNode,
          metadata, capFinder, rpsc, depExpr, depExpressions);
     
      Iterator<Expression> exprIter = depExpressions.iterator();
      for (Iterator<PlanNode> targetIter = targets.iterator(); targetIter.hasNext();) {
        PlanNode target = targetIter.next();
        Expression targerDepExpr = exprIter.next();
        PlanNode accessNode = NodeEditor.findParent(target, NodeConstants.Types.ACCESS);

            float setCriteriaBatchSize = indSymbolNDV;
               
            if (accessNode != null) {
View Full Code Here


                groupNode.setElements(outputElements);
                groupNode.addChild(unionNode);
               
                ProjectNode projectNode = new ProjectNode(getID());
               
                Expression intSum = ResolverUtil.getConversion(sumCount, DataTypeManager.getDataTypeName(sumCount.getType()), DataTypeManager.DefaultDataTypes.INTEGER, false, metadata.getFunctionLibrary());
               
                Expression rowCount = new ExpressionSymbol("RowCount", intSum); //$NON-NLS-1$               
                outputElements = new ArrayList<Expression>(1);               
                outputElements.add(rowCount);                
                projectNode.setElements(outputElements);
                projectNode.setSelectSymbols(outputElements);
                projectNode.addChild(groupNode);
View Full Code Here

          || !(scc.getCommand() instanceof Query)) {
        return result;
      }    

      Query query = (Query)scc.getCommand();
      Expression rightExpr = SymbolMap.getExpression(query.getProjectedSymbols().get(0));
     
      if (result.not && !isNonNull(query, rightExpr)) {
        return result;
      }
      if (result.type == null) {
View Full Code Here

    }
   
    public Expression replaceExpression(Expression element) {
      if (element instanceof Reference) {
        Reference r = (Reference)element;
        Expression ex = refs.getMappedExpression(r.getExpression());
        if (ex != null) {
          if (ex instanceof ElementSymbol) {
            ElementSymbol es = (ElementSymbol) ex.clone();
            es.setIsExternalReference(false);
            ex = es;
          }
          replacedAny = true;
          return ex;
View Full Code Here

    }
   
    public static boolean isNullDependent(QueryMetadataInterface metadata,
                                          final Collection<GroupSymbol> innerGroups,
                                          Expression expr) {
        Expression simplifiedExpression = (Expression)replaceWithNullValues(innerGroups, expr);
        try {
            simplifiedExpression = QueryRewriter.rewriteExpression(simplifiedExpression, null, null, metadata);
        } catch (TeiidException err) {
            //log the exception
            return true;
View Full Code Here

    private void resolveList(Collection elements, TempMetadataAdapter metadata,
                                  GroupContext externalGroups, Set<GroupSymbol> groups) throws TeiidComponentException,
                                             QueryResolverException {
        for (Iterator i = elements.iterator(); i.hasNext();) {
            Expression expr = (Expression)i.next();
            ResolverVisitor.resolveLanguageObject(expr, groups, externalGroups, metadata);
        }
    }
View Full Code Here

       
        Iterator valueIter = values.iterator();
        Iterator varIter = insert.getVariables().iterator();
        while(valueIter.hasNext()) {
            // Walk through both elements and expressions, which should match up
      Expression expression = (Expression) valueIter.next();
      ElementSymbol element = (ElementSymbol) varIter.next();
     
      if (!usingQuery) {
        ResolverUtil.setDesiredType(expression, element.getType(), insert);
      }

            if(element.getType() != null && expression.getType() != null) {
                String elementTypeName = DataTypeManager.getDataTypeName(element.getType());
                if (!usingQuery) {
                    newValues.add(ResolverUtil.convertExpression(expression, elementTypeName, metadata));
                } else if (element.getType() != expression.getType()
                           && !DataTypeManager.isImplicitConversion(DataTypeManager.getDataTypeName(expression.getType()),
                                                                    DataTypeManager.getDataTypeName(element.getType()))) {
                    //TODO: a special case here is a projected literal
                    throw new QueryResolverException(QueryPlugin.Util.getString("InsertResolver.cant_convert_query_type", new Object[] {expression, expression.getType().getName(), element, element.getType().getName()})); //$NON-NLS-1$
                }
            } else if (element.getType() == null && expression.getType() != null && !usingQuery)  {
                element.setType(expression.getType());
                newValues.add(expression);
            } else {
                Assertion.failed("Cannot determine element or expression type"); //$NON-NLS-1$
            }
        }
View Full Code Here

            ElementSymbol varSymbol = defaultIter.next().clone();
            varSymbol.getGroupSymbol().setName(ProcedureReservedWords.CHANGING);
            result.put(varSymbol, new Constant(Boolean.FALSE));
           
            if (!changingOnly) {
                Expression value = ResolverUtil.getDefault(varSymbol, metadata);
              varSymbol = varSymbol.clone();
              varSymbol.getGroupSymbol().setName(ProcedureReservedWords.INPUTS);
              result.put(varSymbol, value);
            }
        }
View Full Code Here

  /**
   * Deep copy of object
   * @return Deep copy of object
   */
  public Object clone() {
        Expression copy = null;
        Expression lowerCopy = null;
        Expression upperCopy = null;
        if(getExpression() != null) {
            copy = (Expression) getExpression().clone();
        }
        if(getLowerExpression() != null) {
            lowerCopy = (Expression) getLowerExpression().clone();
View Full Code Here

    if(symbol instanceof AliasSymbol) {
            symbol = ((AliasSymbol)symbol).getSymbol();
        }
    if(symbol instanceof ExpressionSymbol && !(symbol instanceof AggregateSymbol)) {
        ExpressionSymbol exprSymbol = (ExpressionSymbol) symbol;
        Expression expr = exprSymbol.getExpression();
        
        if(expr instanceof Constant) {                 
            exprSymbol.setExpression(new Constant(null, replacement));
        } else if (expr instanceof AbstractCaseExpression) {
            ((AbstractCaseExpression)expr).setType(replacement);
View Full Code Here

TOP

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

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.