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 19cc2cfac77..5418e079726 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 @@ -3203,12 +3203,17 @@ public interface CollectionDAO { } if (filter.getQueryParam("provider") != null) { - String providerCondition = String.format(" and %s", filter.getProviderCondition()); + String providerCondition = + String.format(" and %s", filter.getProviderCondition(getTableName())); condition += providerCondition; } Map bindMap = new HashMap<>(); String serviceType = filter.getQueryParam("serviceType"); + String provider = filter.getQueryParam("provider"); + if (!nullOrEmpty(provider)) { + bindMap.put("provider", provider); + } if (!nullOrEmpty(serviceType)) { condition = @@ -3244,12 +3249,17 @@ public interface CollectionDAO { } if (filter.getQueryParam("provider") != null) { - String providerCondition = String.format(" and %s", filter.getProviderCondition()); + String providerCondition = + String.format(" and %s", filter.getProviderCondition(getTableName())); condition += providerCondition; } Map bindMap = new HashMap<>(); String serviceType = filter.getQueryParam("serviceType"); + String provider = filter.getQueryParam("provider"); + if (!nullOrEmpty(provider)) { + bindMap.put("provider", provider); + } if (!nullOrEmpty(serviceType)) { condition = @@ -3290,12 +3300,17 @@ public interface CollectionDAO { } if (filter.getQueryParam("provider") != null) { - String providerCondition = String.format(" and %s", filter.getProviderCondition()); + String providerCondition = + String.format(" and %s", filter.getProviderCondition(getTableName())); condition += providerCondition; } Map bindMap = new HashMap<>(); String serviceType = filter.getQueryParam("serviceType"); + String provider = filter.getQueryParam("provider"); + if (!nullOrEmpty(provider)) { + bindMap.put("provider", provider); + } if (!nullOrEmpty(serviceType)) { condition = String.format( 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 1c917426e2d..993af29e4ea 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 @@ -55,7 +55,7 @@ public class ListFilter extends Filter { conditions.add(getWorkflowDefinitionIdCondition()); conditions.add(getEntityLinkCondition()); conditions.add(getAgentTypeCondition()); - conditions.add(getProviderCondition()); + conditions.add(getProviderCondition(tableName)); String condition = addCondition(conditions); return condition.isEmpty() ? "WHERE TRUE" : "WHERE " + condition; } @@ -119,15 +119,19 @@ public class ListFilter extends Filter { } } - public String getProviderCondition() { + public String getProviderCondition(String tableName) { String provider = queryParams.get("provider"); if (provider == null) { return ""; } else { if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) { - return String.format("JSON_EXTRACT(json, '$.provider') = '%s'", provider); + return tableName == null + ? "JSON_EXTRACT(json, '$.provider') = :provider" + : String.format("JSON_EXTRACT(%s.json, '$.provider') = :provider", tableName); } else { - return String.format("json->>'provider' = '%s'", provider); + return tableName == null + ? "json->>'provider' = :provider" + : String.format("%s.json->>'provider' = :provider", tableName); } } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/ingestionpipelines/IngestionPipelineResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/ingestionpipelines/IngestionPipelineResourceTest.java index 83d65c818e2..c17b3896692 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/ingestionpipelines/IngestionPipelineResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/ingestionpipelines/IngestionPipelineResourceTest.java @@ -869,6 +869,15 @@ public class IngestionPipelineResourceTest ResultList resultList = listEntities(queryParams, ADMIN_AUTH_HEADERS); assertEquals(1, resultList.getData().size()); assertEquals(ingestionPipeline.getId(), resultList.getData().get(0).getId()); + + Map multipleQueryParams = new HashMap<>(); + multipleQueryParams.put("provider", ProviderType.AUTOMATION.value()); + multipleQueryParams.put("serviceType", "databaseService"); + multipleQueryParams.put("pipelineType", "metadata"); + ResultList multipleParamsResult = + listEntities(multipleQueryParams, ADMIN_AUTH_HEADERS); + assertEquals(1, multipleParamsResult.getData().size()); + assertEquals(ingestionPipeline.getId(), multipleParamsResult.getData().get(0).getId()); } private IngestionPipeline updateIngestionPipeline(