Skip to content

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

@alamb

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

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