Search in sources :

Example 1 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class AccumuloQueryVisitor method visit.

@Override
public void visit(AggregateFunction obj) {
    if (!obj.getParameters().isEmpty()) {
        visitNodes(obj.getParameters());
    }
    if (obj.getName().equals(AggregateFunction.COUNT)) {
        HashMap<String, String> options = new HashMap<String, String>();
        options.put(CountStarIterator.ALIAS, this.currentAlias);
        IteratorSetting it = new IteratorSetting(this.iteratorPriority++, CountStarIterator.class, options);
        // expression expects a column
        Column c = new Column();
        c.setName(this.currentAlias);
        // $NON-NLS-1$
        c.setDatatype(SystemMetadata.getInstance().getSystemStore().getDatatypes().get("integer"));
        c.setProperty(AccumuloMetadataProcessor.CF, this.currentAlias);
        this.scanIterators.add(it);
        this.onGoingExpression.push(c);
    } else if (obj.getName().equals(AggregateFunction.AVG)) {
    } else if (obj.getName().equals(AggregateFunction.SUM)) {
    } else if (obj.getName().equals(AggregateFunction.MIN)) {
    } else if (obj.getName().equals(AggregateFunction.MAX)) {
    } else {
    }
}
Also used : IteratorSetting(org.apache.accumulo.core.client.IteratorSetting) HashMap(java.util.HashMap) Column(org.teiid.metadata.Column)

Example 2 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class AccumuloQueryVisitor method visit.

@Override
public void visit(DerivedColumn obj) {
    this.currentAlias = buildAlias(obj.getAlias());
    visitNode(obj.getExpression());
    Column column = (Column) this.onGoingExpression.pop();
    String CF = column.getProperty(AccumuloMetadataProcessor.CF, false);
    String CQ = column.getProperty(AccumuloMetadataProcessor.CQ, false);
    if (CQ != null) {
        // $NON-NLS-1$
        this.keybasedColumnMap.put(CF + "/" + CQ, column);
    } else {
        this.keybasedColumnMap.put(CF, column);
    }
    // no expressions in select are allowed.
    this.selectColumns.add(column);
}
Also used : Column(org.teiid.metadata.Column)

Example 3 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class AccumuloUpdateExecution method getRowId.

private byte[] getRowId(List<ColumnReference> columns, List<Expression> values) throws TranslatorException {
    for (int i = 0; i < columns.size(); i++) {
        Column column = columns.get(i).getMetadataObject();
        String rowId = SQLStringVisitor.getRecordName(column);
        if (rowId.equalsIgnoreCase(AccumuloMetadataProcessor.ROWID) || AccumuloQueryVisitor.isPartOfPrimaryKey(column)) {
            Object value = values.get(i);
            if (value instanceof Literal) {
                return AccumuloDataTypeManager.serialize(((Literal) value).getValue());
            }
            throw new TranslatorException(AccumuloPlugin.Event.TEIID19006, AccumuloPlugin.Util.gs(AccumuloPlugin.Event.TEIID19006));
        }
    }
    return null;
}
Also used : Column(org.teiid.metadata.Column) Literal(org.teiid.language.Literal) TranslatorException(org.teiid.translator.TranslatorException)

Example 4 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class AccumuloUpdateExecution method writeMutation.

private void writeMutation(BatchWriter writer, List<ColumnReference> columns, List<Expression> values) throws MutationsRejectedException, TranslatorException {
    byte[] rowId = getRowId(columns, values);
    Mutation mutation = new Mutation(rowId);
    for (int i = 0; i < columns.size(); i++) {
        Column column = columns.get(i).getMetadataObject();
        if (SQLStringVisitor.getRecordName(column).equalsIgnoreCase(AccumuloMetadataProcessor.ROWID)) {
            continue;
        }
        Object value = values.get(i);
        if (value instanceof Literal) {
            buildMutation(mutation, column, ((Literal) value).getValue());
        } else {
            buildMutation(mutation, column, value);
        }
    }
    writer.addMutation(mutation);
}
Also used : Column(org.teiid.metadata.Column) Literal(org.teiid.language.Literal) Mutation(org.apache.accumulo.core.data.Mutation)

Example 5 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class TestAccumuloQueryVisitor method testSelectColumn.

@Test
public void testSelectColumn() throws Exception {
    Command cmd = this.utility.parseCommand("select firstname from Customer");
    AccumuloQueryVisitor visitor = buildVisitor(cmd);
    assertEquals("customer", visitor.getScanTable().getName());
    assertTrue(visitor.getRanges().isEmpty());
    assertNotNull(visitor.projectedColumns());
    List<Column> columns = visitor.projectedColumns();
    assertEquals(1, columns.size());
    Column name = columns.get(0);
    assertEquals("firstName", name.getName());
    assertEquals("customer", name.getProperty(AccumuloMetadataProcessor.CF, false));
    assertEquals("firstNameAttribute", name.getProperty(AccumuloMetadataProcessor.CQ, false));
}
Also used : Command(org.teiid.language.Command) Column(org.teiid.metadata.Column) Test(org.junit.Test)

Aggregations

Column (org.teiid.metadata.Column)210 Table (org.teiid.metadata.Table)72 ArrayList (java.util.ArrayList)47 TranslatorException (org.teiid.translator.TranslatorException)47 Test (org.junit.Test)39 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)21 MetadataFactory (org.teiid.metadata.MetadataFactory)20 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)19 KeyRecord (org.teiid.metadata.KeyRecord)18 Schema (org.teiid.metadata.Schema)18 MetadataStore (org.teiid.metadata.MetadataStore)17 Procedure (org.teiid.metadata.Procedure)14 RealMetadataFactory (org.teiid.query.unittest.RealMetadataFactory)14 ColumnReference (org.teiid.language.ColumnReference)12 DerivedColumn (org.teiid.language.DerivedColumn)12 Expression (org.teiid.language.Expression)12 Literal (org.teiid.language.Literal)10 QueryNode (org.teiid.query.mapping.relational.QueryNode)9 Connection (java.sql.Connection)7 ResultSet (java.sql.ResultSet)7