Skip to content

Multiple ways to express like / ilike / not like / not ilike  #4765

Description

@alamb

Describe the bug
There are two ways to express pattern matching in datafusion Exprs.

Expr::Like(Like)
..

https://github.com/apache/arrow-datafusion/blob/3abbffb5c83395e8e6e68e5529835e72e7769d0d/datafusion/expr/src/operator.rs#L55-L61

As well as

BinaryExpr {
 left: ..
 op: Operator::Like,
 right: ..
}

This causes issues such as the simplification in #4646 only affects the BinaryExpr form, not the Expr::Like form

The Expr::Like form is more full featured (can have pattern substitution)

Expected behavior
I would like to have a single way to represent these operators. I believe it should be Expr::Like, Expr::ILike, Expr::NotLike and Expr::NotILike as they have more features.

Thus, I would like to remove Operator::Like, Operator::ILike, Operator::NotLike, and Operator::NotILike and update all tests / code to use Expr::Like

Additional context
Noticed while reviewing #4646 from @crepererum

I am marking this as "good first issue" as it is mostly a software engineering exercise and would be guided by the compiler -- it would be a good exercise to get familiar with DataFusion's codebase

Activity

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

    bugSomething isn't workinggood first issueGood for newcomerslogical-exprLogical plan and expressions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions