Examples of Insert


Examples of org.teiid.query.sql.lang.Insert

      }
        attachLast(projectNode, sourceNode);

        //for INTO query, attach source and project nodes
        if(!usingTriggerAction && command instanceof Insert){
          Insert insert = (Insert)command;
          if (insert.getQueryExpression() != null) {
              PlanNode plan = generatePlan(insert.getQueryExpression());
              attachLast(sourceNode, plan);
              mergeTempMetadata(insert.getQueryExpression(), insert);
              projectNode.setProperty(NodeConstants.Info.INTO_GROUP, insert.getGroup());
          }
        }
       
        return projectNode;
  }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

     */
    private Insert rewriteSelectInto(Query query) throws TeiidProcessingException{
        Into into = query.getInto();
        try {
            List<ElementSymbol> allIntoElements = Util.deepClone(ResolverUtil.resolveElementsInGroup(into.getGroup(), metadata), ElementSymbol.class);
            Insert insert = new Insert(into.getGroup(), allIntoElements, Collections.emptyList());
            query.setInto(null);
            insert.setQueryExpression(query);
            return rewriteInsert(correctDatatypes(insert));
        } catch (QueryMetadataException err) {
            throw new QueryValidatorException(err, err.getMessage());
        } catch (TeiidComponentException err) {
            throw new QueryValidatorException(err, err.getMessage());
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

     */
    public void resolveProceduralCommand(Command command, TempMetadataAdapter metadata)
        throws QueryMetadataException, QueryResolverException, TeiidComponentException {

        // Cast to known type
        Insert insert = (Insert) command;
       
        if (insert.getValues() != null) {
          QueryResolver.resolveSubqueries(command, metadata, null);
          //variables and values must be resolved separately to account for implicitly defined temp groups
          resolveList(insert.getValues(), metadata, insert.getExternalGroupContexts(), null);
      }
        //resolve subquery if there
        if(insert.getQueryExpression() != null) {
          QueryResolver.setChildMetadata(insert.getQueryExpression(), command);
           
            QueryResolver.resolveCommand(insert.getQueryExpression(), metadata.getMetadata(), false);
        }

        Set<GroupSymbol> groups = new HashSet<GroupSymbol>();
        groups.add(insert.getGroup());
       
     // resolve any functions in the values
        List values = insert.getValues();
        boolean usingQuery = insert.getQueryExpression() != null;
       
        if (usingQuery) {
            values = insert.getQueryExpression().getProjectedSymbols();
        }
       
        if (insert.getVariables().isEmpty()) {
            if (insert.getGroup().isResolved()) {
                List variables = ResolverUtil.resolveElementsInGroup(insert.getGroup(), metadata);
                for (Iterator i = variables.iterator(); i.hasNext();) {
                    insert.addVariable((ElementSymbol)((ElementSymbol)i.next()).clone());
                }
            } else {
                for (int i = 0; i < values.size(); i++) {
                  if (usingQuery) {
                    SingleElementSymbol ses = (SingleElementSymbol)values.get(i);
                      ElementSymbol es = new ElementSymbol(ses.getShortName());
                      es.setType(ses.getType());
                      insert.addVariable(es);
                    } else {
                      insert.addVariable(new ElementSymbol("expr" + i)); //$NON-NLS-1$
                    }
                }
            }
        } else if (insert.getGroup().isResolved()) {
            resolveVariables(metadata, insert, groups);
        }

        resolveTypes(insert, metadata, values, usingQuery);
       
        if (!insert.getGroup().isResolved()) { //define the implicit temp group
            if(insert.getQueryExpression() != null) {
                ResolverUtil.resolveImplicitTempGroup(metadata, insert.getGroup(), insert.getQueryExpression().getProjectedSymbols());
            }else {
                ResolverUtil.resolveImplicitTempGroup(metadata, insert.getGroup(), insert.getVariables());
            }
            resolveVariables(metadata, insert, groups);
           
            //ensure that the types match
            resolveTypes(insert, metadata, values, usingQuery);
        }
       
        if (insert.getQueryExpression() != null && metadata.isVirtualGroup(insert.getGroup().getMetadataID())) {
          List<Reference> references = new ArrayList<Reference>(insert.getVariables().size());
          for (int i = 0; i < insert.getVariables().size(); i++) {
            Reference ref = new Reference(i);
            ref.setType(((ElementSymbol)insert.getVariables().get(i)).getType());
        references.add(ref);
      }
          insert.setValues(references);
        }
    }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

     * @see org.teiid.query.resolver.CommandResolver#getVariableValues(org.teiid.query.sql.lang.Command, org.teiid.query.metadata.QueryMetadataInterface)
     */
    public Map<ElementSymbol, Expression> getVariableValues(Command command, boolean changingOnly,
                                 QueryMetadataInterface metadata) throws QueryMetadataException, QueryResolverException, TeiidComponentException {
       
        Insert insert = (Insert) command;
       
        Map<ElementSymbol, Expression> result = new HashMap<ElementSymbol, Expression>();
       
        // iterate over the variables and values they should be the same number
        Iterator<ElementSymbol> varIter = insert.getVariables().iterator();
        Iterator valIter = null;
        if (insert.getQueryExpression() != null) {
          valIter = insert.getQueryExpression().getProjectedSymbols().iterator();
        } else {
            valIter = insert.getValues().iterator();
        }
        while (varIter.hasNext()) {
            ElementSymbol varSymbol = varIter.next().clone();
           
            varSymbol.getGroupSymbol().setName(ProcedureReservedWords.CHANGING);
            result.put(varSymbol, new Constant(Boolean.TRUE));
            if (!changingOnly) {
              varSymbol = varSymbol.clone();
              varSymbol.getGroupSymbol().setName(ProcedureReservedWords.INPUTS);
              result.put(varSymbol, (Expression)valIter.next());
            }
        }
       
        Collection<ElementSymbol> insertElmnts = ResolverUtil.resolveElementsInGroup(insert.getGroup(), metadata);

        insertElmnts.removeAll(insert.getVariables());

        Iterator<ElementSymbol> defaultIter = insertElmnts.iterator();
        while(defaultIter.hasNext()) {
            ElementSymbol varSymbol = defaultIter.next().clone();
            varSymbol.getGroupSymbol().setName(ProcedureReservedWords.CHANGING);
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

    switch(node.getType()) {
      case NodeConstants.Types.PROJECT:
                GroupSymbol intoGroup = (GroupSymbol) node.getProperty(NodeConstants.Info.INTO_GROUP);
                if(intoGroup != null) {
                    try {
                      Insert insert = (Insert)node.getFirstChild().getProperty(Info.VIRTUAL_COMMAND);
                        List<ElementSymbol> allIntoElements = insert.getVariables();
                       
                        Object groupID = intoGroup.getMetadataID();
                        Object modelID = metadata.getModelID(groupID);
                        String modelName = metadata.getFullName(modelID);
                        if (metadata.isVirtualGroup(groupID)) {
                          InsertPlanExecutionNode ipen = new InsertPlanExecutionNode(getID(), metadata);
                          ipen.setProcessorPlan((ProcessorPlan)node.getFirstChild().getProperty(Info.PROCESSOR_PLAN));
                          ipen.setReferences(insert.getValues());
                          processNode = ipen;
                        } else {
                          ProjectIntoNode pinode = new ProjectIntoNode(getID());
                          pinode.setIntoGroup(intoGroup);
                          pinode.setIntoElements(allIntoElements);
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

   
    /**
     * Test for defect 12087 - Insert with implicit conversion from integer to short
     */
    @Test public void testImplConversionBetweenIntAndShort() throws Exception {      
      Insert command = (Insert)QueryParser.getQueryParser().parseCommand("Insert into pm5.g3(e2) Values(100)"); //$NON-NLS-1$
        QueryResolver.resolveCommand(command, metadata);
        assertTrue(((Expression)command.getValues().get(0)).getType() == DataTypeManager.DefaultDataClasses.SHORT);
    }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

    }
   
    @Test public void testInsertWithNullLiteral() {
        String sql = "insert into #temp (x) values (null)"; //$NON-NLS-1$
       
        Insert insert = (Insert)helpResolve(sql);
       
        TempMetadataStore store = new TempMetadataStore(insert.getTemporaryMetadata());
       
        TempMetadataID id = store.getTempElementID("#temp.x"); //$NON-NLS-1$
       
        assertEquals(DataTypeManager.DefaultDataClasses.STRING, id.getType());
    }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

    @Test public void testInsertWithoutColumnsPasses() {
        String sql = "Insert into pm1.g1 values (1, 2, true, 4)"; //$NON-NLS-1$
       
        helpResolve(sql);
        Insert command = (Insert)helpResolve(sql);
        assertEquals(4, command.getVariables().size());
    }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

    }

    @Test public void testInsertWithoutColumnsUndefinedTemp() {
        String sql = "Insert into #temp values (1, 2)"; //$NON-NLS-1$

        Insert command = (Insert)helpResolve(sql);
        assertEquals(2, command.getVariables().size());
    }
View Full Code Here

Examples of org.teiid.query.sql.lang.Insert

          create.setTable(withCommand.getGroupSymbol());
          this.root.getDataManager().registerRequest(getContext(), create, TempMetadataAdapter.TEMP_MODEL.getID(), null, 0, -1);
          }
          while (true) {
            TupleBatch batch = withProcessor.nextBatch();
            Insert insert = new Insert(withCommand.getGroupSymbol(), withCommand.getColumns(), null);
                insert.setTupleSource(new CollectionTupleSource(batch.getTuples().iterator()));
                this.root.getDataManager().registerRequest(getContext(), insert, TempMetadataAdapter.TEMP_MODEL.getID(), null, 0, -1);
            if (batch.getTerminationFlag()) {
              break;
            }
          }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.