Skip to content

Commit

Permalink
Merge pull request #1707 from mabel-dev/#1698-2
Browse files Browse the repository at this point in the history
  • Loading branch information
joocer authored May 29, 2024
2 parents 1124c7b + b7a39ad commit 7917c65
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 9 deletions.
2 changes: 1 addition & 1 deletion opteryx/__version__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__build__ = 535
__build__ = 537

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
8 changes: 4 additions & 4 deletions opteryx/functions/string_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,12 +234,12 @@ def concat_ws(separator, list_values):
return result


def starts_w(arr, test):
return compute.starts_with(arr, test[0])
def starts_w(arr, test, ignore_case=[False]):
return compute.starts_with(arr, test[0], ignore_case=ignore_case[0])


def ends_w(arr, test):
return compute.ends_with(arr, test[0])
def ends_w(arr, test, ignore_case=[False]):
return compute.ends_with(arr, test[0], ignore_case=ignore_case[0])


def substring(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ def _rewrite_predicate(predicate):
):
predicate.value = LIKE_REWRITES[predicate.value]
return predicate
if predicate.value == "Like" and predicate.right.value:
if predicate.value in {"Like", "ILike"} and predicate.right.value:
ignore_case = predicate.value == "ILike"
# Rewrite LIKEs as STARTS_WITH
if (
predicate.right.node_type == NodeType.LITERAL
Expand All @@ -79,7 +80,15 @@ def _rewrite_predicate(predicate):
predicate.right.value = predicate.right.value[:-1]
predicate.node_type = NodeType.FUNCTION
predicate.value = "STARTS_WITH"
predicate.parameters = [predicate.left, predicate.right]
predicate.parameters = [
predicate.left,
predicate.right,
Node(
node_type=NodeType.LITERAL,
type=OrsoTypes.BOOLEAN,
value=ignore_case,
),
]
return predicate
# Rewrite LIKEs as ENDS_WITH
if (
Expand All @@ -91,7 +100,15 @@ def _rewrite_predicate(predicate):
predicate.right.value = predicate.right.value[1:]
predicate.node_type = NodeType.FUNCTION
predicate.value = "ENDS_WITH"
predicate.parameters = [predicate.left, predicate.right]
predicate.parameters = [
predicate.left,
predicate.right,
Node(
node_type=NodeType.LITERAL,
type=OrsoTypes.BOOLEAN,
value=ignore_case,
),
]
return predicate
if (
predicate.right.node_type == NodeType.LITERAL
Expand All @@ -106,7 +123,11 @@ def _rewrite_predicate(predicate):
predicate.parameters = [
predicate.left,
predicate.right,
Node(node_type=NodeType.LITERAL, type=OrsoTypes.BOOLEAN, value=False),
Node(
node_type=NodeType.LITERAL,
type=OrsoTypes.BOOLEAN,
value=ignore_case,
),
]
return predicate
if predicate.value in IN_REWRITES:
Expand Down

0 comments on commit 7917c65

Please sign in to comment.