datafusion icon indicating copy to clipboard operation
datafusion copied to clipboard

Do't throw the error when projected columns are not in the table schema

Open liukun4515 opened this issue 3 years ago • 0 comments

In the case where the table has projected columns (like in parquet_multiple_partitions where we project columns from the hive partition directory structure) then the projected columns are not in the table schema.

If the predicate contains any such projected columns then we ignore it anyway. So I think this change is fine but with the one adjustment that we don't return an error. So maybe

if let Ok(field) self.table_schema.field_with_name(name) {
    // return the null value corresponding to the data type
    let null_value = ScalarValue::try_from(field.data_type())?;
    return Ok(Expr::Literal(null_value));
}

In this case we just won't rewrite the expression but also FilterCandidateBuilder.projected_columns will be true so we won't crate a row filter predicate for the Expr.

Originally posted by @thinkharderdev in https://github.com/apache/arrow-datafusion/pull/3470#discussion_r970907156

liukun4515 avatar Sep 15 '22 00:09 liukun4515