Search in sources :

Example 1 with ExpressionValueSource

use of org.teiid.language.ExpressionValueSource in project teiid by teiid.

the class AccumuloUpdateExecution method performInsert.

private void performInsert(Insert insert) throws TranslatorException, TableNotFoundException, MutationsRejectedException {
    Table table = insert.getTable().getMetadataObject();
    this.updateCount = 0;
    Connector connector = this.connection.getInstance();
    BatchWriter writer = createBatchWriter(table, connector);
    List<ColumnReference> columns = insert.getColumns();
    if (insert.getParameterValues() == null) {
        List<Expression> values = ((ExpressionValueSource) insert.getValueSource()).getValues();
        writeMutation(writer, columns, values);
        this.updateCount++;
    } else {
        int batchSize = this.executionContext.getBatchSize();
        // bulk insert; should help
        Iterator<? extends List<Expression>> args = (Iterator<? extends List<Expression>>) insert.getParameterValues();
        while (args.hasNext()) {
            List<Expression> values = args.next();
            writeMutation(writer, columns, values);
            this.updateCount++;
            if ((this.updateCount % batchSize) == 0) {
                writer.close();
                writer = createBatchWriter(table, connector);
            }
        }
    }
    // write the mutation
    writer.close();
}
Also used : Connector(org.apache.accumulo.core.client.Connector) Table(org.teiid.metadata.Table) Expression(org.teiid.language.Expression) Iterator(java.util.Iterator) List(java.util.List) BatchWriter(org.apache.accumulo.core.client.BatchWriter) ColumnReference(org.teiid.language.ColumnReference) ExpressionValueSource(org.teiid.language.ExpressionValueSource)

Example 2 with ExpressionValueSource

use of org.teiid.language.ExpressionValueSource in project teiid by teiid.

the class TestInsertImpl method testGetValues.

public void testGetValues() throws Exception {
    // $NON-NLS-1$
    Insert insert = example("a.b");
    assertNotNull(insert.getValueSource());
    assertEquals(4, ((ExpressionValueSource) insert.getValueSource()).getValues().size());
    for (Iterator i = ((ExpressionValueSource) insert.getValueSource()).getValues().iterator(); i.hasNext(); ) {
        assertTrue(i.next() instanceof Expression);
    }
}
Also used : Expression(org.teiid.language.Expression) Iterator(java.util.Iterator) Insert(org.teiid.language.Insert) ExpressionValueSource(org.teiid.language.ExpressionValueSource)

Example 3 with ExpressionValueSource

use of org.teiid.language.ExpressionValueSource in project teiid by teiid.

the class ODataUpdateVisitor method visit.

@Override
public void visit(Insert obj) {
    this.operationType = OperationType.INSERT;
    visitNode(obj.getTable());
    try {
        // read the properties
        int elementCount = obj.getColumns().size();
        for (int i = 0; i < elementCount; i++) {
            Column column = obj.getColumns().get(i).getMetadataObject();
            List<Expression> values = ((ExpressionValueSource) obj.getValueSource()).getValues();
            Expression expr = values.get(i);
            Object value = resolveExpressionValue(expr);
            this.odataQuery.addInsertProperty(column, ODataMetadataProcessor.getNativeType(column), value);
        }
    } catch (TranslatorException e) {
        this.exceptions.add(e);
    }
}
Also used : Column(org.teiid.metadata.Column) Expression(org.teiid.language.Expression) TranslatorException(org.teiid.translator.TranslatorException) ExpressionValueSource(org.teiid.language.ExpressionValueSource)

Example 4 with ExpressionValueSource

use of org.teiid.language.ExpressionValueSource in project teiid by teiid.

the class InsertExecutionImpl method buildBulkRowPayload.

protected List<com.sforce.async.SObject> buildBulkRowPayload(Insert insert, Iterator<? extends List<?>> it, int rowCount) throws TranslatorException {
    List<com.sforce.async.SObject> rows = new ArrayList<com.sforce.async.SObject>();
    List<ColumnReference> columns = insert.getColumns();
    int boundCount = 0;
    List<Expression> literalValues = ((ExpressionValueSource) insert.getValueSource()).getValues();
    while (it.hasNext()) {
        if (boundCount >= rowCount) {
            break;
        }
        boundCount++;
        List<?> values = it.next();
        com.sforce.async.SObject sobj = new com.sforce.async.SObject();
        for (int i = 0; i < columns.size(); i++) {
            Expression ex = literalValues.get(i);
            ColumnReference element = columns.get(i);
            Column column = element.getMetadataObject();
            Class<?> type = ex.getType();
            Object value = null;
            if (ex instanceof Parameter) {
                value = values.get(((Parameter) ex).getValueIndex());
            } else if (!(ex instanceof Literal)) {
                throw new TranslatorException(SalesForcePlugin.Util.gs(SalesForcePlugin.Event.TEIID13007));
            } else {
                value = ((Literal) ex).getValue();
            }
            sobj.setField(column.getSourceName(), getStringValue(value, type));
        }
        rows.add(sobj);
    }
    return rows;
}
Also used : ArrayList(java.util.ArrayList) Expression(org.teiid.language.Expression) Column(org.teiid.metadata.Column) Literal(org.teiid.language.Literal) SObject(com.sforce.async.SObject) Parameter(org.teiid.language.Parameter) SObject(com.sforce.async.SObject) TranslatorException(org.teiid.translator.TranslatorException) SObject(com.sforce.async.SObject) ColumnReference(org.teiid.language.ColumnReference) ExpressionValueSource(org.teiid.language.ExpressionValueSource)

Example 5 with ExpressionValueSource

use of org.teiid.language.ExpressionValueSource in project teiid by teiid.

the class InsertExecutionImpl method buildSingleRowInsertPayload.

private void buildSingleRowInsertPayload(Insert insert, DataPayload data) throws TranslatorException {
    List<ColumnReference> columns = insert.getColumns();
    List<Expression> values = ((ExpressionValueSource) insert.getValueSource()).getValues();
    if (columns.size() != values.size()) {
        throw new TranslatorException(SalesForcePlugin.Util.gs(SalesForcePlugin.Event.TEIID13006));
    }
    for (int i = 0; i < columns.size(); i++) {
        Column column = columns.get(i).getMetadataObject();
        Object value = values.get(i);
        if (!(value instanceof Literal)) {
            throw new TranslatorException(SalesForcePlugin.Util.gs(SalesForcePlugin.Event.TEIID13007));
        }
        Literal literalValue = (Literal) values.get(i);
        Object val = literalValue.getValue();
        if (val instanceof Timestamp) {
            Calendar cal = Calendar.getInstance();
            cal.setTime((Timestamp) val);
            val = cal;
        }
        data.addField(column.getSourceName(), val);
    }
}
Also used : Expression(org.teiid.language.Expression) Column(org.teiid.metadata.Column) Literal(org.teiid.language.Literal) Calendar(java.util.Calendar) TranslatorException(org.teiid.translator.TranslatorException) SObject(com.sforce.async.SObject) Timestamp(java.sql.Timestamp) ColumnReference(org.teiid.language.ColumnReference) ExpressionValueSource(org.teiid.language.ExpressionValueSource)

Aggregations

ExpressionValueSource (org.teiid.language.ExpressionValueSource)19 Expression (org.teiid.language.Expression)18 Insert (org.teiid.language.Insert)11 ColumnReference (org.teiid.language.ColumnReference)10 Test (org.junit.Test)8 Literal (org.teiid.language.Literal)7 Parameter (org.teiid.language.Parameter)7 ArrayList (java.util.ArrayList)6 Column (org.teiid.metadata.Column)6 TranslatorException (org.teiid.translator.TranslatorException)6 Connection (java.sql.Connection)5 PreparedStatement (java.sql.PreparedStatement)5 FakeExecutionContextImpl (org.teiid.dqp.internal.datamgr.FakeExecutionContextImpl)5 Table (org.teiid.metadata.Table)5 ResultSet (java.sql.ResultSet)3 ResultSetMetaData (java.sql.ResultSetMetaData)3 Iterator (java.util.Iterator)3 List (java.util.List)3 NamedTable (org.teiid.language.NamedTable)3 RuntimeMetadata (org.teiid.metadata.RuntimeMetadata)3