Skip to content

The data type of predicate in the row filter should be same in the binary expr #3469

Closed

Description

@liukun4515

@alamb @thinkharderdev
I find a issue caused by this rewrite in my work #3396
if we have two parquet, one has c1,c2, the other has c1,c3.
If the filter is c2 = 1, then it will produce a expr NULL = 1 for the parquet with c1,c3 column.
After I remove the binary type coercion in the physical phase, the binary physical expr of NULL = INT(1) can't be created, because we don't need to support type coercion in creation physical expr.

Originally posted by @liukun4515 in #3380 (comment)

Activity

  1. liukun4515 commented on Sep 14, 2022

    @liukun4515
    ContributorAuthor

    why not build the build_row_filter from the phy expr?

  2. liukun4515 commented on Sep 14, 2022

    @liukun4515
    ContributorAuthor

    If the table schema is c1,c2,c3, the file schema is c1,c3 with filter c2 = lit.

    Why not push the predicate = false to the parquet file directly to replace the c2 = NULL

  3. alamb commented on Sep 14, 2022

    @alamb
    Contributor

    Why not push the predicate = false to the parquet file directly to replace the c2 = NULL

    seems like a reasonable thing to me

  4. liukun4515 commented on Sep 15, 2022

    @liukun4515
    ContributorAuthor

    If the table schema is c1,c2,c3, the file schema is c1,c3 with filter c2 = lit.

    Why not push the predicate = false to the parquet file directly to replace the c2 = NULL

    cc @thinkharderdev

  5. alamb commented on Sep 15, 2022

    @alamb
    Contributor

    I think the more general flow here is to take a predicate like c2 = lit and a schema of c1, c3 and replace c2 with NULL -- which is what the code changed in #3470 is.

    Then the predicate is NULL = lit which can be reduced to false if we run the constant evaluator on it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions