package org.yamcs.yarch.streamsql;
import org.yamcs.yarch.ColumnDefinition;
import org.yamcs.yarch.CompiledExpression;
import org.yamcs.yarch.FieldReturnCompiledExpression;
import org.yamcs.yarch.streamsql.Expression;
import org.yamcs.yarch.streamsql.GenericStreamSqlException;
import org.yamcs.yarch.streamsql.ParseException;
import org.yamcs.yarch.streamsql.StreamSqlException;
/**
* Represents a column in a query, for example x and y below:
* select x from table where y > 0
* @author nm
*
*/
public class ColumnExpression extends Expression {
String name;
//after binding
ColumnDefinition cdef;
ColumnExpression(String name) throws ParseException {
super(null);
this.name=name;
this.colName=name;
}
public String getName() {
return name;
}
@Override
public void doBind() throws StreamSqlException {
cdef=inputDef.getColumn(name);
if(cdef==null) throw new GenericStreamSqlException("'"+name+"' is not an input column");
type=cdef.getType();
}
@Override
public void fillCode_getValueReturn(StringBuilder code) throws StreamSqlException {
code.append("col"+name);
}
@Override
public CompiledExpression compile() throws StreamSqlException {
return new FieldReturnCompiledExpression(name, cdef);
}
@Override
public String toString() {
return name;
}
}