@Override
        public UnsafeRow apply(InternalRow row) {
            int i = 0;
            for (Expression expr : exprs) {
                DataType dataType = expr.dataType();
                switch (dataType) {
                    case BooleanType:
                        result.setBoolean(i, expr.evalUniformVal(row) != 0);
                        break;
                    case IntegerType:
                        result.setInt(i, expr.evalInt(row));
                        break;
                    case LongType:
                        result.setLong(i, expr.evalLong(row));
                        break;
                    case FloatType:
                        result.setFloat(i, expr.evalFloat(row));
                        break;
                    case DoubleType:
                        result.setDouble(i, expr.evalDouble(row));
                        break;
                    case StringType:
                        result.setString(i, expr.evalString(row));
                        break;
                    default:
                        throw new IllegalStateException();
                }
                i++;
            }
            return result;
        }
Returns an UnsafeProjection for given sequence of Expressions, which will be bound to
`inputSchema`.
indexr-query-opt/src/main/java/io/indexr/query/expr/project/UnsafeProjection.java