From 9d238d142aa7d18daad697576cacf3a523d3a3d2 Mon Sep 17 00:00:00 2001 From: Teddy Date: Fri, 3 Nov 2023 15:03:03 +0100 Subject: [PATCH] fix: handle postgres migration error (#13844) * fix: handle postgres migration error * fix: removed MySQL comment --- .../service/migration/utils/v120/MigrationUtil.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v120/MigrationUtil.java b/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v120/MigrationUtil.java index ba585110bb0..64685c61993 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v120/MigrationUtil.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v120/MigrationUtil.java @@ -13,7 +13,9 @@ import org.openmetadata.service.Entity; import org.openmetadata.service.jdbi3.CollectionDAO; import org.openmetadata.service.jdbi3.GlossaryTermRepository; import org.openmetadata.service.jdbi3.QueryRepository; +import org.openmetadata.service.resources.databases.DatasourceConfig; import org.openmetadata.service.util.JsonUtils; +import org.postgresql.util.PGobject; @Slf4j public class MigrationUtil { @@ -136,7 +138,15 @@ public class MigrationUtil { .mapToMap() .forEach( row -> { - GlossaryTerm term = JsonUtils.readValue((String) row.get("json"), GlossaryTerm.class); + String jsonRow; + if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) { + jsonRow = (String) row.get("json"); + } else { + // Postgres stores JSON as a JSONB, so we can't just cast it as a string + PGobject pgObject = (PGobject) row.get("json"); + jsonRow = pgObject.getValue(); + } + GlossaryTerm term = JsonUtils.readValue(jsonRow, GlossaryTerm.class); if (term.getStatus() == GlossaryTerm.Status.DRAFT) { term.setStatus(GlossaryTerm.Status.APPROVED); collectionDAO.glossaryTermDAO().update(term);