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 {
}
}
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);
}
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;
}
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);
}
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));
}
Aggregations