From 9d3ccf789041e62323597b77b83184e82ec560ed Mon Sep 17 00:00:00 2001
From: sonika-shah <58761340+sonika-shah@users.noreply.github.com>
Date: Wed, 6 Aug 2025 10:35:34 +0530
Subject: [PATCH] Fix-22668 Glossary term missing from UI in columns search
(#22764)
* Fix-22668 Glossary term missing from UI in columns searching
* add test
(cherry picked from commit 730b2ff07eab6c430d46790987a4d083a5815995)
---
.../service/jdbi3/TableRepository.java | 4 ++
.../databases/TableResourceTest.java | 66 ++++++++++++++++++-
2 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
index e53093577db..425e424fc56 100644
--- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
+++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
@@ -2028,6 +2028,10 @@ public class TableRepository extends EntityRepository
{
}
}
+ if (fields.contains("tags") || fields.contains("*")) {
+ populateEntityFieldTags(entityType, paginatedResults, table.getFullyQualifiedName(), true);
+ }
+
if (fieldsParam != null && fieldsParam.contains("profile")) {
setColumnProfile(matchingColumns);
populateEntityFieldTags(entityType, matchingColumns, table.getFullyQualifiedName(), true);
diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java
index de20928fa4d..ba19607284f 100644
--- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java
+++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java
@@ -3973,7 +3973,7 @@ public class TableResourceTest extends EntityResourceTest {
List columns = new ArrayList<>();
columns.add(
- getColumn("user_id", INT, null)
+ getColumn("user_id", INT, USER_ADDRESS_TAG_LABEL)
.withOrdinalPosition(1)
.withDescription("Primary key for user identification"));
columns.add(
@@ -4069,13 +4069,75 @@ public class TableResourceTest extends EntityResourceTest {
assertEquals(0, response.getData().size());
assertEquals(0, response.getPaging().getTotal());
+ // Create a custom metric for testing
+ CreateCustomMetric customMetric = new CreateCustomMetric();
+ customMetric
+ .withName("TestMetric")
+ .withDescription("Test custom metric")
+ .withColumnName("user_id")
+ .withExpression("SELECT COUNT(*) FROM test");
+ putCustomMetric(table.getId(), customMetric, ADMIN_AUTH_HEADERS);
+
+ // Test search with tags field
+ target =
+ getResource("tables/" + table.getId() + "/columns/search")
+ .queryParam("q", "user_id")
+ .queryParam("fields", "tags");
+ response = TestUtils.get(target, TableResource.TableColumnList.class, ADMIN_AUTH_HEADERS);
+ assertEquals(1, response.getData().size());
+ Column column = response.getData().getFirst();
+ assertEquals("user_id", column.getName());
+ assertNotNull(column.getTags(), "Column tags should not be null");
+ assertFalse(column.getTags().isEmpty(), "Column tags should not be empty");
+ assertEquals(1, column.getTags().size(), "Column should have exactly 1 tag");
+ TagLabel expectedTag = USER_ADDRESS_TAG_LABEL;
+ TagLabel actualTag = column.getTags().getFirst();
+ assertEquals(expectedTag.getTagFQN(), actualTag.getTagFQN(), "Tag FQN should match");
+
+ // Test search with customMetrics field
+ target =
+ getResource("tables/" + table.getId() + "/columns/search")
+ .queryParam("q", "user_id")
+ .queryParam("fields", "customMetrics");
+ response = TestUtils.get(target, TableResource.TableColumnList.class, ADMIN_AUTH_HEADERS);
+ assertEquals(1, response.getData().size());
+ column = response.getData().getFirst();
+ assertEquals("user_id", column.getName());
+ assertNotNull(column.getCustomMetrics(), "Column custom metrics should not be null");
+ assertFalse(column.getCustomMetrics().isEmpty(), "Column custom metrics should not be empty");
+ assertEquals(1, column.getCustomMetrics().size(), "Column should have exactly 1 custom metric");
+ CustomMetric actualMetric = column.getCustomMetrics().getFirst();
+ assertEquals(customMetric.getName(), actualMetric.getName(), "Custom metric name should match");
+
+ // Test search with both fields together
target =
getResource("tables/" + table.getId() + "/columns/search")
.queryParam("q", "user_id")
.queryParam("fields", "tags,customMetrics");
response = TestUtils.get(target, TableResource.TableColumnList.class, ADMIN_AUTH_HEADERS);
assertEquals(1, response.getData().size());
- assertNotNull(response.getData().get(0)); // Should include requested fields
+ column = response.getData().getFirst();
+ assertEquals("user_id", column.getName());
+ // Verify tags
+ assertNotNull(column.getTags(), "Column tags should not be null");
+ assertFalse(column.getTags().isEmpty(), "Column tags should not be empty");
+ assertEquals(1, column.getTags().size(), "Column should have exactly 1 tag");
+ actualTag = column.getTags().getFirst();
+ assertEquals(expectedTag.getTagFQN(), actualTag.getTagFQN(), "Tag FQN should match");
+ // Verify custom metrics
+ assertNotNull(column.getCustomMetrics(), "Column custom metrics should not be null");
+ assertFalse(column.getCustomMetrics().isEmpty(), "Column custom metrics should not be empty");
+ assertEquals(1, column.getCustomMetrics().size(), "Column should have exactly 1 custom metric");
+ actualMetric = column.getCustomMetrics().getFirst();
+ assertEquals(customMetric.getName(), actualMetric.getName(), "Custom metric name should match");
+
+ target =
+ getResource("tables/" + table.getId() + "/columns/search")
+ .queryParam("q", "user_id")
+ .queryParam("fields", "tags,customMetrics");
+ response = TestUtils.get(target, TableResource.TableColumnList.class, ADMIN_AUTH_HEADERS);
+ assertEquals(1, response.getData().size());
+ assertNotNull(response.getData().getFirst()); // Should include requested fields
final WebTarget invalidTarget =
getResource("tables/" + table.getId() + "/columns/search")