Skip to content

Update syntax: like(string, PATTERN[, case_sensitive])#4837

Merged
qianheng-aws merged 11 commits intoopensearch-project:mainfrom
LantaoJin:pr/issues/4835
Nov 25, 2025
Merged

Update syntax: like(string, PATTERN[, case_sensitive])#4837
qianheng-aws merged 11 commits intoopensearch-project:mainfrom
LantaoJin:pr/issues/4835

Conversation

@LantaoJin
Copy link
Copy Markdown
Member

@LantaoJin LantaoJin commented Nov 20, 2025

Description

  1. We miss a case-sensitive like function.
  2. To align with SparkSQL and SPL behavior, add case-sensitive argument tolike function and add a new case-sensitive ilike function.

LIKE

Usage: like(string, PATTERN[, case_sensitive]) return true if the string match the PATTERN. case_sensitive is optional. When set to true, PATTERN is case-sensitive. Default: Determined by plugins.ppl.syntax.legacy.preferred.

  • When plugins.ppl.syntax.legacy.preferred=true, case_sensitive defaults to false
  • When plugins.ppl.syntax.legacy.preferred=false, case_sensitive defaults to true

Plan:
where like(firstname, '%mbe%', true)(PPL)
⬇️
LogicalFilter(condition=[LIKE($1, '%mbe%', '\')])(RelNode)
⬇️
WHERE firstname LIKE '%mbe%' ESCAPE '\'(SparkSQL)

ILIKE

Usage: ilike(string, PATTERN) return true if the string match the PATTERN, PATTERN is case-insensitive.

Plan
where ilike(firstname, '%mbe%') or where like(firstname, '%mbe%', false)(PPL)
⬇️
LogicalFilter(condition=[ILIKE($1, '%mbe%', '\')])(RelNode)
⬇️
WHERE firstname ILIKE '%mbe%' ESCAPE '\'(SparkSQL)

Related Issues

Resolves #4835

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • New functionality has javadoc added.
  • New functionality has a user manual doc added.
  • New PPL command checklist all confirmed.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff or -s.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

…tive

Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
@LantaoJin LantaoJin changed the title Change like function to case-sensitive and add ilike for case-insensive Change like function to case-sensitive and add ilike for case-insensitive Nov 20, 2025
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
@LantaoJin LantaoJin changed the title Change like function to case-sensitive and add ilike for case-insensitive Update syntax: like(string, PATTERN[, case_sensitive]) Nov 21, 2025
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
yuancu
yuancu previously approved these changes Nov 24, 2025
Signed-off-by: Lantao Jin <ltjin@amazon.com>
@qianheng-aws qianheng-aws merged commit 164c3f0 into opensearch-project:main Nov 25, 2025
37 checks passed
@opensearch-trigger-bot
Copy link
Copy Markdown
Contributor

The backport to 2.19-dev failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/sql/backport-2.19-dev 2.19-dev
# Navigate to the new working tree
pushd ../.worktrees/sql/backport-2.19-dev
# Create a new branch
git switch --create backport/backport-4837-to-2.19-dev
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 164c3f08754ac6b945c7dfa9a0bf8041e1a6671a
# Push it to GitHub
git push --set-upstream origin backport/backport-4837-to-2.19-dev
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/sql/backport-2.19-dev

Then, create a pull request where the base branch is 2.19-dev and the compare/head branch is backport/backport-4837-to-2.19-dev.

LantaoJin added a commit to LantaoJin/search-plugins-sql that referenced this pull request Nov 26, 2025
…oject#4837)

* Change like function to case-sensitive and add ilike for case-insensitive

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* change plan in clickbench

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix ut

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix UT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* Update syntax: like(string, PATTERN[, case_sensitive])

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix IT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* Fix IT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* revert import merging

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* support like(string, PATTERN, bool) in v2

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* dedup ut

Signed-off-by: Lantao Jin <ltjin@amazon.com>

---------

Signed-off-by: Lantao Jin <ltjin@amazon.com>
(cherry picked from commit 164c3f0)
@LantaoJin LantaoJin added the backport-manually Filed a PR to backport manually. label Nov 26, 2025
LantaoJin added a commit that referenced this pull request Nov 26, 2025
* Change like function to case-sensitive and add ilike for case-insensitive



* change plan in clickbench



* fix ut



* fix UT



* Update syntax: like(string, PATTERN[, case_sensitive])



* fix IT



* Fix IT



* revert import merging



* support like(string, PATTERN, bool) in v2



* dedup ut



---------


(cherry picked from commit 164c3f0)

Signed-off-by: Lantao Jin <ltjin@amazon.com>
asifabashar pushed a commit to asifabashar/sql that referenced this pull request Dec 10, 2025
…oject#4837)

* Change like function to case-sensitive and add ilike for case-insensitive

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* change plan in clickbench

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix ut

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix UT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* Update syntax: like(string, PATTERN[, case_sensitive])

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* fix IT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* Fix IT

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* revert import merging

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* support like(string, PATTERN, bool) in v2

Signed-off-by: Lantao Jin <ltjin@amazon.com>

* dedup ut

Signed-off-by: Lantao Jin <ltjin@amazon.com>

---------

Signed-off-by: Lantao Jin <ltjin@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] The like function is case insensitive in PPL but it should be case sensitive

3 participants