From af85b9629d2ac9e03e8aa9674a95647b3ad2f3c5 Mon Sep 17 00:00:00 2001 From: Parth Panchal <83201188+parthp2107@users.noreply.github.com> Date: Tue, 1 Nov 2022 18:20:03 +0530 Subject: [PATCH] Fixed#8239: Query mismatch while searching for - and _ makes data overlap (#8476) * Fixed#8239: Query mismatch while searching for - and _ makes data overlap * Fixed#8239: Query mismatch while searching for - and _ makes data overlap --- .../java/org/openmetadata/service/jdbi3/ListFilter.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java index defa3e056de..acc5605dc6e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/ListFilter.java @@ -93,6 +93,9 @@ public class ListFilter { } private String getFqnPrefixCondition(String tableName, String fqnPrefix) { + if (fqnPrefix.contains("_") || fqnPrefix.contains("-")) { + fqnPrefix = format(fqnPrefix); + } return tableName == null ? String.format("fullyQualifiedName LIKE '%s%s%%'", fqnPrefix, Entity.SEPARATOR) : String.format("%s.fullyQualifiedName LIKE '%s%s%%'", tableName, fqnPrefix, Entity.SEPARATOR); @@ -138,4 +141,8 @@ public class ListFilter { private String escape(String name) { return name.replace("'", "''"); } + + private String format(String name) { + return name.contains("-") ? name.replaceAll("-", "\\\\-") : name.replaceAll("_", "\\\\_"); + } }