From 5b59b34c1dd90f414205d8d88e857ac3f1fe14d0 Mon Sep 17 00:00:00 2001 From: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Date: Mon, 6 Oct 2025 18:56:11 +0530 Subject: [PATCH] App Screenshots Migration (#23722) * App Screenshots Migration queries * Replace the png only in the appScreenshots * Cast json to jsonb for apps_Data_Store in the migration --- .../mysql/postDataMigrationSQLScript.sql | 50 ++++++++++++++++++- .../postgres/postDataMigrationSQLScript.sql | 39 +++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/bootstrap/sql/migrations/native/1.10.0/mysql/postDataMigrationSQLScript.sql b/bootstrap/sql/migrations/native/1.10.0/mysql/postDataMigrationSQLScript.sql index c759a103d01..abda2315538 100644 --- a/bootstrap/sql/migrations/native/1.10.0/mysql/postDataMigrationSQLScript.sql +++ b/bootstrap/sql/migrations/native/1.10.0/mysql/postDataMigrationSQLScript.sql @@ -12,4 +12,52 @@ SET ) WHERE serviceType in ('Databricks', 'UnityCatalog') - AND JSON_CONTAINS_PATH(json, 'one', '$.connection.config.token'); \ No newline at end of file + AND JSON_CONTAINS_PATH(json, 'one', '$.connection.config.token'); + +-- Migration to remove .png extension from appScreenshots in apps tables +-- Part of fixing appScreenshots extension handling change + +-- Update apps_marketplace table - remove .png extension from appScreenshots only +UPDATE apps_marketplace +SET json = JSON_SET( + json, + '$.appScreenshots', + JSON_EXTRACT( + REPLACE(JSON_EXTRACT(json, '$.appScreenshots'), '.png"', '"'), + '$' + ) +) +WHERE json IS NOT NULL + AND JSON_EXTRACT(json, '$.appScreenshots') IS NOT NULL + AND JSON_LENGTH(JSON_EXTRACT(json, '$.appScreenshots')) > 0 + AND JSON_EXTRACT(json, '$.appScreenshots') LIKE '%.png%'; + +-- Update installed_apps table - remove .png extension from appScreenshots only +UPDATE installed_apps +SET json = JSON_SET( + json, + '$.appScreenshots', + JSON_EXTRACT( + REPLACE(JSON_EXTRACT(json, '$.appScreenshots'), '.png"', '"'), + '$' + ) +) +WHERE json IS NOT NULL + AND JSON_EXTRACT(json, '$.appScreenshots') IS NOT NULL + AND JSON_LENGTH(JSON_EXTRACT(json, '$.appScreenshots')) > 0 + AND JSON_EXTRACT(json, '$.appScreenshots') LIKE '%.png%'; + +-- Update apps_data_store table - remove .png extension from appScreenshots only +UPDATE apps_data_store +SET json = JSON_SET( + json, + '$.appScreenshots', + JSON_EXTRACT( + REPLACE(JSON_EXTRACT(json, '$.appScreenshots'), '.png"', '"'), + '$' + ) +) +WHERE json IS NOT NULL + AND JSON_EXTRACT(json, '$.appScreenshots') IS NOT NULL + AND JSON_LENGTH(JSON_EXTRACT(json, '$.appScreenshots')) > 0 + AND JSON_EXTRACT(json, '$.appScreenshots') LIKE '%.png%'; \ No newline at end of file diff --git a/bootstrap/sql/migrations/native/1.10.0/postgres/postDataMigrationSQLScript.sql b/bootstrap/sql/migrations/native/1.10.0/postgres/postDataMigrationSQLScript.sql index 585493b433c..fea297ddfc1 100644 --- a/bootstrap/sql/migrations/native/1.10.0/postgres/postDataMigrationSQLScript.sql +++ b/bootstrap/sql/migrations/native/1.10.0/postgres/postDataMigrationSQLScript.sql @@ -10,3 +10,42 @@ SET json = jsonb_set( ) WHERE serviceType in ('Databricks', 'UnityCatalog') AND jsonb_exists(json -> 'connection' -> 'config', 'token'); + +-- Migration to remove .png extension from appScreenshots in apps tables +-- Part of fixing appScreenshots extension handling change + +-- Update apps_marketplace table - remove .png extension from appScreenshots only +UPDATE apps_marketplace +SET json = jsonb_set( + json, + '{appScreenshots}', + REPLACE((json -> 'appScreenshots')::text, '.png"', '"')::jsonb +) +WHERE json IS NOT NULL + AND json -> 'appScreenshots' IS NOT NULL + AND jsonb_array_length(json -> 'appScreenshots') > 0 + AND (json -> 'appScreenshots')::text LIKE '%.png%'; + +-- Update installed_apps table - remove .png extension from appScreenshots only +UPDATE installed_apps +SET json = jsonb_set( + json, + '{appScreenshots}', + REPLACE((json -> 'appScreenshots')::text, '.png"', '"')::jsonb +) +WHERE json IS NOT NULL + AND json -> 'appScreenshots' IS NOT NULL + AND jsonb_array_length(json -> 'appScreenshots') > 0 + AND (json -> 'appScreenshots')::text LIKE '%.png%'; + +-- Update apps_data_store table - remove .png extension from appScreenshots only +UPDATE apps_data_store +SET json = jsonb_set( + json::jsonb, + '{appScreenshots}', + REPLACE((json -> 'appScreenshots')::text, '.png"', '"')::jsonb +) +WHERE json IS NOT NULL + AND json -> 'appScreenshots' IS NOT NULL + AND json_array_length((json -> 'appScreenshots')::json) > 0 + AND (json -> 'appScreenshots')::text LIKE '%.png%';