mirror of
https://github.com/open-metadata/OpenMetadata
synced 2026-05-24 09:39:11 +00:00
* Chore: Remove iceberg standalone connector * add migration scripts * Update generated TypeScript types * py_format * address comments * Addressed changes * add tests * migrate to custom database * fix tests * fix tests * fix migrations * hard delete exising ingestion pipelines for iceberg * Update generated TypeScript types * Delete openmetadata-ui/src/main/resources/ui/src/generated/entity/services/ingestionPipelines/ingestionPipeline.ts * Delete openmetadata-ui/src/main/resources/ui/src/generated/entity/automations/workflow.ts * Delete openmetadata-ui/src/main/resources/ui/src/generated/api/automations/createWorkflow.ts * Delete openmetadata-ui/src/main/resources/ui/src/generated/api/services/ingestionPipelines/createIngestionPipeline.ts * Delete openmetadata-ui/src/main/resources/ui/src/generated/api/services/createDatabaseService.ts * Delete openmetadata-ui/src/main/resources/ui/src/generated/entity/automations/testServiceConnection.ts * Update generated TypeScript types * Update bootstrap/sql/migrations/native/1.13.0/mysql/postDataMigrationSQLScript.sql Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
69 lines
6.2 KiB
SQL
69 lines
6.2 KiB
SQL
UPDATE ingestion_pipeline_entity
|
|
SET json = JSON_REMOVE(json, '$.sourceConfig.config.computeMetrics')
|
|
WHERE JSON_EXTRACT(json, '$.sourceConfig.config.computeMetrics') IS NOT NULL
|
|
AND pipelineType = 'profiler';
|
|
|
|
-- Hard-delete ingestion pipelines for Iceberg services (must run before service migration)
|
|
DELETE ipe FROM ingestion_pipeline_entity ipe
|
|
JOIN dbservice_entity dse
|
|
ON JSON_UNQUOTE(JSON_EXTRACT(ipe.json, '$.service.id')) = dse.id
|
|
WHERE dse.serviceType = 'Iceberg'
|
|
AND JSON_UNQUOTE(JSON_EXTRACT(ipe.json, '$.service.type')) = 'databaseService';
|
|
|
|
-- Migrate Iceberg database services to CustomDatabase (connector removed)
|
|
-- serviceType is a GENERATED column derived from json, so only update json
|
|
UPDATE dbservice_entity
|
|
SET json = JSON_SET(
|
|
json,
|
|
'$.serviceType', 'CustomDatabase',
|
|
'$.connection.config.type', 'CustomDatabase'
|
|
)
|
|
WHERE serviceType = 'Iceberg';
|
|
|
|
-- Migrate serviceType in child entities (serviceType is in JSON blob only, no generated column)
|
|
UPDATE database_entity
|
|
SET json = JSON_SET(json, '$.serviceType', 'CustomDatabase')
|
|
WHERE JSON_UNQUOTE(JSON_EXTRACT(json, '$.serviceType')) = 'Iceberg';
|
|
|
|
UPDATE database_schema_entity
|
|
SET json = JSON_SET(json, '$.serviceType', 'CustomDatabase')
|
|
WHERE JSON_UNQUOTE(JSON_EXTRACT(json, '$.serviceType')) = 'Iceberg';
|
|
|
|
UPDATE table_entity
|
|
SET json = JSON_SET(json, '$.serviceType', 'CustomDatabase')
|
|
WHERE JSON_UNQUOTE(JSON_EXTRACT(json, '$.serviceType')) = 'Iceberg';
|
|
|
|
UPDATE stored_procedure_entity
|
|
SET json = JSON_SET(json, '$.serviceType', 'CustomDatabase')
|
|
WHERE JSON_UNQUOTE(JSON_EXTRACT(json, '$.serviceType')) = 'Iceberg';
|
|
|
|
|
|
-- Migrate existing glossary term RELATED_TO relationships to include relationType
|
|
-- For backward compatibility, existing relations without a relationType are set to "relatedTo"
|
|
|
|
UPDATE entity_relationship
|
|
SET json = JSON_SET(COALESCE(json, '{}'), '$.relationType', 'relatedTo')
|
|
WHERE fromEntity = 'glossaryTerm'
|
|
AND toEntity = 'glossaryTerm'
|
|
AND relation = 15
|
|
AND (json IS NULL OR JSON_EXTRACT(json, '$.relationType') IS NULL);
|
|
|
|
-- Insert default glossary term relation settings if they don't exist
|
|
-- This preserves any existing user customizations
|
|
INSERT INTO openmetadata_settings (configType, json)
|
|
SELECT 'glossaryTermRelationSettings', '{"relationTypes":[{"name":"relatedTo","displayName":"Related To","description":"General association between terms that are conceptually connected.","rdfPredicate":"https://open-metadata.org/ontology/relatedTo","isSymmetric":true,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"associative","isSystemDefined":true,"color":"#1890ff"},{"name":"synonym","displayName":"Synonym","description":"Terms that have the same meaning and can be used interchangeably.","rdfPredicate":"http://www.w3.org/2004/02/skos/core#exactMatch","isSymmetric":true,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"equivalence","isSystemDefined":true,"color":"#722ed1"},{"name":"antonym","displayName":"Antonym","description":"Terms that have opposite meanings.","rdfPredicate":"https://open-metadata.org/ontology/antonym","isSymmetric":true,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"associative","isSystemDefined":true,"color":"#f5222d"},{"name":"broader","displayName":"Broader","description":"A more general term (hypernym).","inverseRelation":"narrower","rdfPredicate":"http://www.w3.org/2004/02/skos/core#broader","isSymmetric":false,"isTransitive":true,"isCrossGlossaryAllowed":true,"category":"hierarchical","isSystemDefined":true,"color":"#597ef7"},{"name":"narrower","displayName":"Narrower","description":"A more specific term (hyponym).","inverseRelation":"broader","rdfPredicate":"http://www.w3.org/2004/02/skos/core#narrower","isSymmetric":false,"isTransitive":true,"isCrossGlossaryAllowed":true,"category":"hierarchical","isSystemDefined":true,"color":"#85a5ff"},{"name":"partOf","displayName":"Part Of","description":"This term is a part or component of another term.","inverseRelation":"hasPart","rdfPredicate":"https://open-metadata.org/ontology/partOf","isSymmetric":false,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"hierarchical","isSystemDefined":true,"color":"#13c2c2"},{"name":"hasPart","displayName":"Has Part","description":"This term has the other term as a part or component.","inverseRelation":"partOf","rdfPredicate":"https://open-metadata.org/ontology/hasPart","isSymmetric":false,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"hierarchical","isSystemDefined":true,"color":"#36cfc9"},{"name":"calculatedFrom","displayName":"Calculated From","description":"This term/metric is calculated or derived from another term.","inverseRelation":"usedToCalculate","rdfPredicate":"https://open-metadata.org/ontology/calculatedFrom","isSymmetric":false,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"associative","isSystemDefined":true,"color":"#faad14"},{"name":"usedToCalculate","displayName":"Used To Calculate","description":"This term is used in the calculation of another term.","inverseRelation":"calculatedFrom","rdfPredicate":"https://open-metadata.org/ontology/usedToCalculate","isSymmetric":false,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"associative","isSystemDefined":true,"color":"#ffc53d"},{"name":"seeAlso","displayName":"See Also","description":"Related term that may provide additional context.","rdfPredicate":"http://www.w3.org/2000/01/rdf-schema#seeAlso","isSymmetric":true,"isTransitive":false,"isCrossGlossaryAllowed":true,"category":"associative","isSystemDefined":true,"color":"#eb2f96"}]}'
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM openmetadata_settings WHERE configType = 'glossaryTermRelationSettings'
|
|
);
|
|
|
|
-- Strip stale relatedTerms from glossary term entity JSON.
|
|
-- relatedTerms is now loaded from entity_relationship table, not from entity JSON.
|
|
-- Old data stored relatedTerms as EntityReference objects which fail to deserialize as TermRelation.
|
|
UPDATE glossary_term_entity
|
|
SET json = JSON_REMOVE(json, '$.relatedTerms')
|
|
WHERE JSON_EXTRACT(json, '$.relatedTerms') IS NOT NULL;
|
|
|
|
-- Backfill conceptMappings for existing glossary terms
|
|
UPDATE glossary_term_entity
|
|
SET json = JSON_SET(COALESCE(json, '{}'), '$.conceptMappings', JSON_ARRAY())
|
|
WHERE JSON_EXTRACT(json, '$.conceptMappings') IS NULL;
|