mirror of
https://github.com/open-metadata/OpenMetadata
synced 2026-05-24 09:39:11 +00:00
50 lines
1.9 KiB
MySQL
50 lines
1.9 KiB
MySQL
|
|
WITH version_metadata AS (
|
||
|
|
SELECT
|
||
|
|
e.id,
|
||
|
|
e.extension,
|
||
|
|
split_part(e.extension, '.version.', 2)::DOUBLE PRECISION AS version_num,
|
||
|
|
COALESCE(
|
||
|
|
(
|
||
|
|
SELECT jsonb_agg(field_name ORDER BY field_name)
|
||
|
|
FROM (
|
||
|
|
SELECT DISTINCT
|
||
|
|
field_change ->> 'name' AS field_name
|
||
|
|
FROM jsonb_array_elements(
|
||
|
|
COALESCE(e.json -> 'changeDescription' -> 'fieldsAdded', '[]'::jsonb)
|
||
|
|
) AS field_change
|
||
|
|
WHERE field_change ->> 'name' IS NOT NULL
|
||
|
|
AND field_change ->> 'name' <> ''
|
||
|
|
|
||
|
|
UNION
|
||
|
|
|
||
|
|
SELECT DISTINCT
|
||
|
|
field_change ->> 'name' AS field_name
|
||
|
|
FROM jsonb_array_elements(
|
||
|
|
COALESCE(e.json -> 'changeDescription' -> 'fieldsUpdated', '[]'::jsonb)
|
||
|
|
) AS field_change
|
||
|
|
WHERE field_change ->> 'name' IS NOT NULL
|
||
|
|
AND field_change ->> 'name' <> ''
|
||
|
|
|
||
|
|
UNION
|
||
|
|
|
||
|
|
SELECT DISTINCT
|
||
|
|
field_change ->> 'name' AS field_name
|
||
|
|
FROM jsonb_array_elements(
|
||
|
|
COALESCE(e.json -> 'changeDescription' -> 'fieldsDeleted', '[]'::jsonb)
|
||
|
|
) AS field_change
|
||
|
|
WHERE field_change ->> 'name' IS NOT NULL
|
||
|
|
AND field_change ->> 'name' <> ''
|
||
|
|
) AS exact_field_names
|
||
|
|
),
|
||
|
|
'[]'::jsonb
|
||
|
|
) AS changed_field_keys
|
||
|
|
FROM entity_extension AS e
|
||
|
|
WHERE e.extension LIKE '%.version.%'
|
||
|
|
)
|
||
|
|
UPDATE entity_extension AS e
|
||
|
|
SET versionNum = version_metadata.version_num,
|
||
|
|
changedFieldKeys = version_metadata.changed_field_keys
|
||
|
|
FROM version_metadata
|
||
|
|
WHERE e.id = version_metadata.id
|
||
|
|
AND e.extension = version_metadata.extension;
|