Search in sources :

Example 6 with Update

use of org.teiid.query.sql.lang.Update in project teiid by teiid.

the class TestGroupCollectorVisitor method testBatchedUpdateCommand.

public void testBatchedUpdateCommand() {
    GroupSymbol g1 = exampleGroupSymbol(1);
    GroupSymbol g2 = exampleGroupSymbol(2);
    GroupSymbol g3 = exampleGroupSymbol(3);
    Insert insert = new Insert();
    insert.setGroup(g1);
    Update update = new Update();
    update.setGroup(g2);
    Delete delete = new Delete();
    delete.setGroup(g3);
    List updates = new ArrayList(3);
    updates.add(insert);
    updates.add(update);
    updates.add(delete);
    Set groups = new HashSet();
    groups.add(g1);
    groups.add(g2);
    groups.add(g3);
    helpTestGroups(new BatchedUpdateCommand(updates), true, groups);
}
Also used : Delete(org.teiid.query.sql.lang.Delete) Set(java.util.Set) HashSet(java.util.HashSet) GroupSymbol(org.teiid.query.sql.symbol.GroupSymbol) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) Insert(org.teiid.query.sql.lang.Insert) Update(org.teiid.query.sql.lang.Update) BatchedUpdateCommand(org.teiid.query.sql.lang.BatchedUpdateCommand) HashSet(java.util.HashSet)

Example 7 with Update

use of org.teiid.query.sql.lang.Update in project teiid by teiid.

the class TestStaticSymbolMappingVisitor method testVisitUpdate1.

public void testVisitUpdate1() {
    Update update = new Update();
    update.setGroup(exampleGroup(true, 0));
    // $NON-NLS-1$
    update.addChange(exampleElement(true, 0), new Constant("abc"));
    // $NON-NLS-1$
    update.addChange(exampleElement(true, 1), new Constant("abc"));
    helpTest(update, getSymbolMap());
}
Also used : Constant(org.teiid.query.sql.symbol.Constant) Update(org.teiid.query.sql.lang.Update)

Example 8 with Update

use of org.teiid.query.sql.lang.Update in project teiid by teiid.

the class LanguageBridgeFactory method translate.

public org.teiid.language.Command translate(Command command) {
    try {
        if (command == null) {
            return null;
        }
        if (command instanceof Query) {
            Select result = translate((Query) command);
            result.setDependentValues(this.dependentSets);
            setProjected(result);
            return result;
        } else if (command instanceof SetQuery) {
            org.teiid.language.SetQuery result = translate((SetQuery) command);
            setProjected(result);
            return result;
        } else if (command instanceof Insert) {
            return translate((Insert) command);
        } else if (command instanceof Update) {
            return translate((Update) command);
        } else if (command instanceof Delete) {
            return translate((Delete) command);
        } else if (command instanceof StoredProcedure) {
            return translate((StoredProcedure) command);
        } else if (command instanceof BatchedUpdateCommand) {
            return translate((BatchedUpdateCommand) command);
        }
        // $NON-NLS-1$
        throw new AssertionError(command.getClass().getName() + " " + command);
    } finally {
        this.allValues.clear();
        this.dependentSets = null;
        this.valueIndex = 0;
    }
}
Also used : Delete(org.teiid.query.sql.lang.Delete) SetQuery(org.teiid.query.sql.lang.SetQuery) SetQuery(org.teiid.query.sql.lang.SetQuery) Select(org.teiid.language.Select) Insert(org.teiid.query.sql.lang.Insert) Update(org.teiid.query.sql.lang.Update)

Example 9 with Update

use of org.teiid.query.sql.lang.Update in project teiid by teiid.

the class TestAccessNode method testShouldExecuteUpdate.

@Test
public void testShouldExecuteUpdate() throws Exception {
    Update update = new Update();
    // $NON-NLS-1$
    update.setGroup(new GroupSymbol("test"));
    // $NON-NLS-1$ //$NON-NLS-2$
    update.addChange(new ElementSymbol("e1"), new Constant("1"));
    assertTrue(RelationalNodeUtil.shouldExecute(update, false));
    update.setChangeList(new SetClauseList());
    assertFalse(RelationalNodeUtil.shouldExecute(update, false));
}
Also used : ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) Constant(org.teiid.query.sql.symbol.Constant) GroupSymbol(org.teiid.query.sql.symbol.GroupSymbol) SetClauseList(org.teiid.query.sql.lang.SetClauseList) Update(org.teiid.query.sql.lang.Update) Test(org.junit.Test)

Example 10 with Update

use of org.teiid.query.sql.lang.Update in project teiid by teiid.

the class RuleAccessPatternValidation method validateAccessPatterns.

/**
 * @param node
 * @throws QueryPlannerException
 */
private void validateAccessPatterns(PlanNode node) throws QueryPlannerException {
    if (!node.hasCollectionProperty(NodeConstants.Info.ACCESS_PATTERNS)) {
        return;
    }
    Criteria criteria = null;
    if (node.hasProperty(NodeConstants.Info.ATOMIC_REQUEST)) {
        Object req = node.getProperty(NodeConstants.Info.ATOMIC_REQUEST);
        if (req instanceof Insert) {
            return;
        }
        if (req instanceof Delete) {
            criteria = ((Delete) req).getCriteria();
        } else if (req instanceof Update) {
            criteria = ((Update) req).getCriteria();
        }
    }
    List accessPatterns = (List) node.getProperty(NodeConstants.Info.ACCESS_PATTERNS);
    if (criteria != null) {
        for (Criteria crit : Criteria.separateCriteriaByAnd(criteria)) {
            Collection<ElementSymbol> elements = ElementCollectorVisitor.getElements(crit, true);
            if (RulePushSelectCriteria.satisfyAccessPatterns(accessPatterns, elements)) {
                return;
            }
        }
    }
    Object groups = node.getGroups();
    throw new QueryPlannerException(QueryPlugin.Event.TEIID30278, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30278, new Object[] { groups, accessPatterns }));
}
Also used : Delete(org.teiid.query.sql.lang.Delete) ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) List(java.util.List) Criteria(org.teiid.query.sql.lang.Criteria) Insert(org.teiid.query.sql.lang.Insert) Update(org.teiid.query.sql.lang.Update) QueryPlannerException(org.teiid.api.exception.query.QueryPlannerException)

Aggregations

Update (org.teiid.query.sql.lang.Update)15 SQLException (java.sql.SQLException)5 Constant (org.teiid.query.sql.symbol.Constant)5 ODataApplicationException (org.apache.olingo.server.api.ODataApplicationException)4 TeiidException (org.teiid.core.TeiidException)4 UpdateResponse (org.teiid.odata.api.UpdateResponse)4 Delete (org.teiid.query.sql.lang.Delete)4 Insert (org.teiid.query.sql.lang.Insert)4 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)4 GroupSymbol (org.teiid.query.sql.symbol.GroupSymbol)4 HashSet (java.util.HashSet)3 List (java.util.List)3 EdmProperty (org.apache.olingo.commons.api.edm.EdmProperty)3 ArrayList (java.util.ArrayList)2 Set (java.util.Set)2 EdmEntityType (org.apache.olingo.commons.api.edm.EdmEntityType)2 UriParameter (org.apache.olingo.server.api.uri.UriParameter)2 Test (org.junit.Test)2 Criteria (org.teiid.query.sql.lang.Criteria)2 URISyntaxException (java.net.URISyntaxException)1