You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2024/03/05 15:32:25 UTC
(syncope) branch master updated: Fixing Elasticsearch and OpenSearch ILIKE / IEQ for values with underscore
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new af0af5a227 Fixing Elasticsearch and OpenSearch ILIKE / IEQ for values with underscore
af0af5a227 is described below
commit af0af5a2272ce38c56b0c23a55474d4b4a935912
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Mar 5 15:27:42 2024 +0100
Fixing Elasticsearch and OpenSearch ILIKE / IEQ for values with underscore
---
.../persistence/elasticsearch/dao/ElasticsearchAnySearchDAO.java | 5 +++--
.../core/persistence/opensearch/dao/OpenSearchAnySearchDAO.java | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAnySearchDAO.java b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAnySearchDAO.java
index 5707c710f5..afbbae98c3 100644
--- a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAnySearchDAO.java
+++ b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAnySearchDAO.java
@@ -531,7 +531,7 @@ public class ElasticsearchAnySearchDAO extends AbstractAnySearchDAO {
case ILIKE:
StringBuilder output = new StringBuilder();
- for (char c : cond.getExpression().toLowerCase().toCharArray()) {
+ for (char c : cond.getExpression().toLowerCase().replace("\\_", "_").toCharArray()) {
if (c == '%') {
output.append(".*");
} else if (Character.isLetter(c)) {
@@ -549,7 +549,8 @@ public class ElasticsearchAnySearchDAO extends AbstractAnySearchDAO {
case LIKE:
query = new Query.Builder().wildcard(QueryBuilders.wildcard().
- field(schema.getKey()).value(cond.getExpression().replace('%', '*')).build()).build();
+ field(schema.getKey()).value(cond.getExpression().replace('%', '*').replace("\\_", "_")).
+ build()).build();
break;
case IEQ:
diff --git a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAnySearchDAO.java b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAnySearchDAO.java
index 6d4e05c669..37b93ea42a 100644
--- a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAnySearchDAO.java
+++ b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAnySearchDAO.java
@@ -530,7 +530,7 @@ public class OpenSearchAnySearchDAO extends AbstractAnySearchDAO {
case ILIKE:
StringBuilder output = new StringBuilder();
- for (char c : cond.getExpression().toLowerCase().toCharArray()) {
+ for (char c : cond.getExpression().toLowerCase().replace("\\_", "_").toCharArray()) {
if (c == '%') {
output.append(".*");
} else if (Character.isLetter(c)) {
@@ -548,7 +548,8 @@ public class OpenSearchAnySearchDAO extends AbstractAnySearchDAO {
case LIKE:
query = new Query.Builder().wildcard(QueryBuilders.wildcard().
- field(schema.getKey()).value(cond.getExpression().replace('%', '*')).build()).build();
+ field(schema.getKey()).value(cond.getExpression().replace('%', '*').replace("\\_", "_")).
+ build()).build();
break;
case IEQ: