Package org.teiid.query.sql.proc

Examples of org.teiid.query.sql.proc.ExpressionStatement


        }
        return ifStmt;
            case Statement.TYPE_ERROR:
            case Statement.TYPE_DECLARE:
            case Statement.TYPE_ASSIGNMENT:
        ExpressionStatement exprStmt = (ExpressionStatement) statement;
        // replace variables to references, these references are later
        // replaced in the processor with variable values
        Expression expr = exprStmt.getExpression();
        if (expr != null) {
          expr = rewriteExpressionDirect(expr);
                  exprStmt.setExpression(expr);
        }
        return exprStmt;
            case Statement.TYPE_COMMAND:
        CommandStatement cmdStmt = (CommandStatement) statement;
                rewriteSubqueryContainer(cmdStmt, false);
View Full Code Here


                break;
            case Statement.TYPE_ERROR:
            case Statement.TYPE_ASSIGNMENT:
            case Statement.TYPE_DECLARE:
        ExpressionStatement exprStmt = (ExpressionStatement) statement;
                //first resolve the value.  this ensures the value cannot use the variable being defined
              if (exprStmt.getExpression() != null) {
                    Expression expr = exprStmt.getExpression();
                    for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(expr)) {
                      resolveEmbeddedCommand(metadata, externalGroups, container.getCommand());
                    }
                    ResolverVisitor.resolveLanguageObject(expr, null, externalGroups, metadata);
              }
               
                //second resolve the variable
                if(statement.getType() == Statement.TYPE_DECLARE) {
                    collectDeclareVariable((DeclareStatement)statement, variables, metadata, externalGroups);
                } else if (statement.getType() == Statement.TYPE_ASSIGNMENT) {
                  AssignmentStatement assStmt = (AssignmentStatement)statement;
                    ResolverVisitor.resolveLanguageObject(assStmt.getVariable(), null, externalGroups, metadata);
                    if (!metadata.elementSupports(assStmt.getVariable().getMetadataID(), SupportConstants.Element.UPDATE)) {
                        throw new QueryResolverException(QueryPlugin.Util.getString("UpdateProcedureResolver.only_variables", assStmt.getVariable())); //$NON-NLS-1$
                    }
                    //don't allow variable assignments to be external
                    assStmt.getVariable().setIsExternalReference(false);
                }
               
                //third ensure the type matches
                if (exprStmt.getExpression() != null) {
                  Class<?> varType = exprStmt.getExpectedType();
              Class<?> exprType = exprStmt.getExpression().getType();
              if (exprType == null) {
                  throw new QueryResolverException(QueryPlugin.Util.getString("ResolveVariablesVisitor.datatype_for_the_expression_not_resolvable")); //$NON-NLS-1$
              }
              String varTypeName = DataTypeManager.getDataTypeName(varType);
              exprStmt.setExpression(ResolverUtil.convertExpression(exprStmt.getExpression(), varTypeName, metadata));         
                }
                break;
            case Statement.TYPE_WHILE:
                WhileStatement whileStmt = (WhileStatement) statement;
                Criteria whileCrit = whileStmt.getCondition();
View Full Code Here

TOP

Related Classes of org.teiid.query.sql.proc.ExpressionStatement

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.