Fix migration for postgres db (#15009)

* Fix openmetadata-ops.sh migrate for Postgres

* Fix openmetadata-ops.sh migrate for Postgres
This commit is contained in:
Sriharsha Chintalapani 2024-02-02 09:54:51 -08:00 committed by GitHub
parent b91a689399
commit 5839efcbf1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 16 deletions

View File

@ -71,10 +71,10 @@ public interface MigrationDAO {
@ConnectionAwareSqlUpdate(
value =
"INSERT INTO server_change_log (version, migrationFileName, checksum, metrics, installed_on)"
+ "VALUES (:version, :migrationFileName, :checksum, to_jsonb(:metrics::text), current_timestamp) "
+ "VALUES (:version, :migrationFileName, :checksum, (:metrics :: jsonb), current_timestamp) "
+ "ON CONFLICT (version) DO UPDATE SET "
+ "migrationFileName = EXCLUDED.migrationFileName, "
+ "metrics = to_jsonb(:metrics::text),"
+ "metrics = (:metrics :: jsonb),"
+ "checksum = EXCLUDED.checksum, "
+ "installed_on = EXCLUDED.installed_on",
connectionType = POSTGRES)
@ -124,7 +124,8 @@ public interface MigrationDAO {
String checkIfQueryPreviouslyRan(@Bind("checksum") String checksum);
@SqlQuery(
"SELECT installed_rank, version, migrationFileName, checksum, installed_on, metrics FROM SERVER_CHANGE_LOG ORDER BY version ASC")
value =
"SELECT installed_rank, version, migrationFileName, checksum, installed_on, metrics FROM SERVER_CHANGE_LOG ORDER BY version ASC")
@RegisterRowMapper(FromServerChangeLogMapper.class)
List<ServerChangeLog> listMetricsFromDBMigrations();

View File

@ -443,19 +443,26 @@ public class OpenMetadataOperations implements Callable<Integer> {
migrationDAO.listMetricsFromDBMigrations();
Set<String> columns = new LinkedHashSet<>(Set.of("version", "installedOn"));
List<List<String>> rows = new ArrayList<>();
for (MigrationDAO.ServerChangeLog serverChangeLog : serverChangeLogs) {
List<String> row = new ArrayList<>();
JsonObject metricsJson = new Gson().fromJson(serverChangeLog.getMetrics(), JsonObject.class);
Set<String> keys = metricsJson.keySet();
columns.addAll(keys);
row.add(serverChangeLog.getVersion());
row.add(serverChangeLog.getInstalledOn());
row.addAll(
metricsJson.entrySet().stream()
.map(Map.Entry::getValue)
.map(JsonElement::toString)
.toList());
rows.add(row);
try {
for (MigrationDAO.ServerChangeLog serverChangeLog : serverChangeLogs) {
List<String> row = new ArrayList<>();
if (serverChangeLog.getMetrics() != null) {
JsonObject metricsJson =
new Gson().fromJson(serverChangeLog.getMetrics(), JsonObject.class);
Set<String> keys = metricsJson.keySet();
columns.addAll(keys);
row.add(serverChangeLog.getVersion());
row.add(serverChangeLog.getInstalledOn());
row.addAll(
metricsJson.entrySet().stream()
.map(Map.Entry::getValue)
.map(JsonElement::toString)
.toList());
rows.add(row);
}
}
} catch (Exception e) {
LOG.warn("Failed to generate migration metrics due to", e);
}
printToAsciiTable(columns.stream().toList(), rows, "No Server Change log found");
}