From ef51fc8dbde7457b4b0207bc491134fee44f2676 Mon Sep 17 00:00:00 2001 From: Vivek Ratnavel Subramanian Date: Fri, 7 Oct 2022 18:21:26 -0700 Subject: [PATCH] Fix #7908 Backend: Glossary term deletion executes partial deletion (#8042) --- .../org/openmetadata/service/jdbi3/CollectionDAO.java | 11 ++++++++--- .../resources/glossary/GlossaryTermResourceTest.java | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java index 07e1bbbfca4..07660897ebc 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java @@ -24,7 +24,9 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import lombok.Builder; import lombok.Getter; @@ -36,6 +38,7 @@ import org.jdbi.v3.sqlobject.CreateSqlObject; import org.jdbi.v3.sqlobject.config.RegisterRowMapper; import org.jdbi.v3.sqlobject.customizer.Bind; import org.jdbi.v3.sqlobject.customizer.BindList; +import org.jdbi.v3.sqlobject.customizer.BindMap; import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; import org.jdbi.v3.sqlobject.statement.SqlUpdate; @@ -1454,12 +1457,14 @@ public interface CollectionDAO { default void deleteAllByPrefix(String fqnPrefix) { String prefix = String.format("%s%s%%", fqnPrefix, Entity.SEPARATOR); - String cond = String.format("WHERE (toFQN LIKE '%s' OR fromFQN LIKE '%s')", prefix, prefix); - deleteAllByPrefixInternal(cond); + String condition = "WHERE (toFQN LIKE :prefix OR fromFQN LIKE :prefix)"; + Map bindMap = new HashMap<>(); + bindMap.put("prefix", prefix); + deleteAllByPrefixInternal(condition, bindMap); } @SqlUpdate("DELETE from field_relationship ") - void deleteAllByPrefixInternal(@Define("cond") String cond); + void deleteAllByPrefixInternal(@Define("cond") String cond, @BindMap Map bindings); @SqlUpdate( "DELETE from field_relationship WHERE fromFQN = :fromFQN AND toFQN = :toFQN AND fromType = :fromType " diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryTermResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryTermResourceTest.java index 0b463e6f957..0edfed525d4 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryTermResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryTermResourceTest.java @@ -246,7 +246,7 @@ public class GlossaryTermResourceTest extends EntityResourceTest