mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 18:48:35 +00:00 
			
		
		
		
	Fix Failing migrations (#11031)
* Fix Failing migrations * fix migration for event Subscription * delete relationships
This commit is contained in:
		
							parent
							
								
									92f0f0df23
								
							
						
					
					
						commit
						08ecf69978
					
				| @ -66,12 +66,13 @@ UPDATE ingestion_pipeline_entity | |||||||
| SET json = JSON_REMOVE(json, '$.openMetadataServerConnection'); | SET json = JSON_REMOVE(json, '$.openMetadataServerConnection'); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE IF NOT EXISTS query_entity ( | CREATE TABLE IF NOT EXISTS query_entity ( | ||||||
|     id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') NOT NULL, |     id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') STORED NOT NULL, | ||||||
|     name VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.name') NOT NULL, |     name VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.name') NOT NULL, | ||||||
|     json JSON NOT NULL, |     json JSON NOT NULL, | ||||||
|     updatedAt BIGINT UNSIGNED GENERATED ALWAYS AS (json ->> '$.updatedAt') NOT NULL, |     updatedAt BIGINT UNSIGNED GENERATED ALWAYS AS (json ->> '$.updatedAt') NOT NULL, | ||||||
|     updatedBy VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.updatedBy') NOT NULL, |     updatedBy VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.updatedBy') NOT NULL, | ||||||
|     deleted BOOLEAN GENERATED ALWAYS AS (json -> '$.deleted'), |     deleted BOOLEAN GENERATED ALWAYS AS (json -> '$.deleted'), | ||||||
|  |     PRIMARY KEY (id), | ||||||
|     UNIQUE(name), |     UNIQUE(name), | ||||||
|     INDEX name_index (name) |     INDEX name_index (name) | ||||||
| ); | ); | ||||||
| @ -79,20 +80,20 @@ CREATE TABLE IF NOT EXISTS query_entity ( | |||||||
| CREATE TABLE IF NOT EXISTS temp_query_migration ( | CREATE TABLE IF NOT EXISTS temp_query_migration ( | ||||||
|     tableId VARCHAR(36)NOT NULL, |     tableId VARCHAR(36)NOT NULL, | ||||||
|     queryId VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') NOT NULL, |     queryId VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') NOT NULL, | ||||||
|  |     queryName VARCHAR(255) GENERATED ALWAYS AS (json ->> '$.name') NOT NULL, | ||||||
|     json JSON NOT NULL |     json JSON NOT NULL | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| INSERT INTO temp_query_migration(tableId,json) | INSERT INTO temp_query_migration(tableId,json) | ||||||
| SELECT id,JSON_OBJECT('id',UUID(),'vote',vote,'query',query,'users',users,'checksum',checksum,'duration',duration,'name','table','name',checksum, | SELECT id,JSON_OBJECT('id',UUID(),'vote',vote,'query',query,'users',users,'checksum',checksum,'duration',duration,'name',checksum,'updatedAt',UNIX_TIMESTAMP(NOW()),'updatedBy','admin','deleted',false) as json from entity_extension d, json_table(d.json, '$[*]' columns (vote double path '$.vote', query varchar(200) path '$.query',users json path '$.users',checksum varchar(200) path '$.checksum',name varchar(255) path '$.checksum', duration double path '$.duration',queryDate varchar(200) path '$.queryDate')) AS j WHERE extension = "table.tableQueries"; | ||||||
| 'updatedAt',UNIX_TIMESTAMP(NOW()),'updatedBy','admin','deleted',false) as json from entity_extension d, json_table(d.json, '$[*]' columns (vote double path '$.vote', query varchar(200) path '$.query',users json path '$.users',checksum varchar(200) path '$.checksum',duration double path '$.duration', |  | ||||||
| queryDate varchar(200) path '$.queryDate')) AS j WHERE extension = "table.tableQueries"; |  | ||||||
| 
 | 
 | ||||||
| INSERT INTO query_entity(json) | INSERT INTO query_entity (json) | ||||||
| SELECT json FROM temp_query_migration; | SELECT t.json from temp_query_migration t | ||||||
|  | ON DUPLICATE KEY UPDATE json = VALUES(json); | ||||||
| 
 | 
 | ||||||
| INSERT INTO entity_relationship(fromId,toId,fromEntity,toEntity,relation) | INSERT INTO entity_relationship(fromId,toId,fromEntity,toEntity,relation) | ||||||
| SELECT tableId,queryId,"table","query",5 FROM temp_query_migration; | SELECT tmq.tableId, (select qe.id from query_entity qe where qe.name = tmq.queryName) ,"table","query",5 FROM temp_query_migration tmq; | ||||||
| 
 | 
 | ||||||
| DELETE FROM entity_extension WHERE id IN | DELETE FROM entity_extension WHERE id IN | ||||||
|  (SELECT DISTINCT tableId FROM temp_query_migration) AND extension = "table.tableQueries"; |  (SELECT DISTINCT tableId FROM temp_query_migration) AND extension = "table.tableQueries"; | ||||||
| @ -106,10 +107,20 @@ WHERE name = 'OpenMetadata' AND JSON_EXTRACT(json, '$.connection.config.authProv | |||||||
| 
 | 
 | ||||||
| ALTER TABLE user_tokens MODIFY COLUMN expiryDate BIGINT UNSIGNED GENERATED ALWAYS AS (json ->> '$.expiryDate'); | ALTER TABLE user_tokens MODIFY COLUMN expiryDate BIGINT UNSIGNED GENERATED ALWAYS AS (json ->> '$.expiryDate'); | ||||||
| 
 | 
 | ||||||
| DELETE FROM alert_entity; | CREATE TABLE IF NOT EXISTS event_subscription_entity ( | ||||||
| drop table alert_action_def; |     id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') STORED NOT NULL, | ||||||
|  |     name VARCHAR(256) GENERATED ALWAYS AS (json ->> '$.name') NOT NULL, | ||||||
|  |     deleted BOOLEAN GENERATED ALWAYS AS (json -> '$.deleted'), | ||||||
|  |     json JSON NOT NULL, | ||||||
|  |     PRIMARY KEY (id), | ||||||
|  |     UNIQUE (name) | ||||||
|  |     -- No versioning, updatedAt, updatedBy, or changeDescription fields for webhook | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | drop table if exists alert_action_def; | ||||||
|  | drop table if exists alert_entity; | ||||||
|  | DELETE from entity_relationship where  fromEntity = 'alert' and toEntity = 'alertAction'; | ||||||
| 
 | 
 | ||||||
| ALTER TABLE alert_entity RENAME TO event_subscription_entity; |  | ||||||
| -- create data model table | -- create data model table | ||||||
| CREATE TABLE IF NOT EXISTS dashboard_data_model_entity ( | CREATE TABLE IF NOT EXISTS dashboard_data_model_entity ( | ||||||
|     id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') STORED NOT NULL, |     id VARCHAR(36) GENERATED ALWAYS AS (json ->> '$.id') STORED NOT NULL, | ||||||
|  | |||||||
| @ -71,28 +71,36 @@ CREATE TABLE IF NOT EXISTS query_entity ( | |||||||
|     updatedAt BIGINT GENERATED ALWAYS AS ((json ->> 'updatedAt')::bigint) STORED NOT NULL, |     updatedAt BIGINT GENERATED ALWAYS AS ((json ->> 'updatedAt')::bigint) STORED NOT NULL, | ||||||
|     updatedBy VARCHAR(256) GENERATED ALWAYS AS (json ->> 'updatedBy') STORED NOT NULL, |     updatedBy VARCHAR(256) GENERATED ALWAYS AS (json ->> 'updatedBy') STORED NOT NULL, | ||||||
|     deleted BOOLEAN GENERATED ALWAYS AS ((json ->> 'deleted')::boolean) STORED, |     deleted BOOLEAN GENERATED ALWAYS AS ((json ->> 'deleted')::boolean) STORED, | ||||||
|  |     PRIMARY KEY (id), | ||||||
|     UNIQUE (name)   |     UNIQUE (name)   | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE IF NOT EXISTS temp_query_migration ( | CREATE TABLE IF NOT EXISTS temp_query_migration ( | ||||||
|     tableId VARCHAR(36) NOT NULL, |     tableId VARCHAR(36) NOT NULL, | ||||||
|     queryId VARCHAR(36) GENERATED ALWAYS AS (json ->> 'id') STORED NOT NULL, |     queryId VARCHAR(36) GENERATED ALWAYS AS (json ->> 'id') STORED NOT NULL, | ||||||
|  |     queryName VARCHAR(255) GENERATED ALWAYS AS (json ->> 'name') STORED NOT NULL, | ||||||
|     json JSONB NOT NULL |     json JSONB NOT NULL | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE EXTENSION pgcrypto; | CREATE EXTENSION IF NOT EXISTS pgcrypto; | ||||||
| 
 | 
 | ||||||
| INSERT INTO temp_query_migration(tableId,json) | INSERT INTO temp_query_migration(tableId,json) | ||||||
| SELECT id,json_build_object('id',gen_random_uuid(),'vote',vote,'query',query,'users',users,'checksum',checksum,'duration',duration,'name','table','name',checksum,'updatedAt', | SELECT id,json_build_object('id',gen_random_uuid(),'vote',vote,'query',query,'users',users,'checksum',checksum,'duration',duration,'name',checksum,'updatedAt', | ||||||
| floor(EXTRACT(EPOCH FROM NOW())),'updatedBy','admin','deleted',false) AS json FROM entity_extension AS ee , jsonb_to_recordset(ee.json) AS x (vote decimal,query varchar,users json, | floor(EXTRACT(EPOCH FROM NOW())),'updatedBy','admin','deleted',false) AS json FROM entity_extension AS ee , jsonb_to_recordset(ee.json) AS x (vote decimal,query varchar,users json, | ||||||
| checksum varchar,duration decimal,queryDate varchar) | checksum varchar,name varchar, duration decimal,queryDate varchar) | ||||||
| WHERE ee.extension = 'table.tableQueries'; | WHERE ee.extension = 'table.tableQueries'; | ||||||
| 
 | 
 | ||||||
| INSERT INTO query_entity(json) | INSERT INTO query_entity (json) | ||||||
| SELECT json FROM temp_query_migration; | SELECT value | ||||||
|  | FROM ( | ||||||
|  |   SELECT jsonb_object_agg(queryName, json) AS json_data FROM ( SELECT DISTINCT queryName, json FROM temp_query_migration) subquery | ||||||
|  | ) cte, jsonb_each(cte.json_data) | ||||||
|  | ON CONFLICT (name) DO UPDATE SET json = EXCLUDED.json; | ||||||
| 
 | 
 | ||||||
| INSERT INTO entity_relationship(fromId,toId,fromEntity,toEntity,relation) | INSERT INTO entity_relationship(fromId, toId, fromEntity, toEntity, relation) | ||||||
| SELECT tableId,queryId,'table','query',10 FROM temp_query_migration; | SELECT tmq.tableId, qe.id, 'table', 'query', 5 | ||||||
|  | FROM temp_query_migration tmq | ||||||
|  | JOIN query_entity qe ON qe.name = tmq.queryName; | ||||||
| 
 | 
 | ||||||
| DELETE FROM entity_extension WHERE id in | DELETE FROM entity_extension WHERE id in | ||||||
| (SELECT DISTINCT tableId FROM temp_query_migration) AND extension = 'table.tableQueries'; | (SELECT DISTINCT tableId FROM temp_query_migration) AND extension = 'table.tableQueries'; | ||||||
| @ -108,10 +116,18 @@ WHERE name = 'OpenMetadata' | |||||||
| 
 | 
 | ||||||
| ALTER TABLE user_tokens ALTER COLUMN expiryDate DROP NOT NULL; | ALTER TABLE user_tokens ALTER COLUMN expiryDate DROP NOT NULL; | ||||||
| 
 | 
 | ||||||
| DELETE FROM alert_entity; | CREATE TABLE IF NOT EXISTS event_subscription_entity ( | ||||||
| drop table alert_action_def; |     id VARCHAR(36) GENERATED ALWAYS AS (json ->> 'id') STORED NOT NULL, | ||||||
|  |     name VARCHAR(256) GENERATED ALWAYS AS (json ->> 'name') STORED NOT NULL, | ||||||
|  |     deleted BOOLEAN GENERATED ALWAYS AS ((json ->> 'deleted')::boolean) STORED, | ||||||
|  |     json JSONB NOT NULL, | ||||||
|  |     PRIMARY KEY (id), | ||||||
|  |     UNIQUE (name) | ||||||
|  | ); | ||||||
| 
 | 
 | ||||||
| ALTER TABLE alert_entity RENAME TO event_subscription_entity; | drop table if exists alert_action_def; | ||||||
|  | drop table if exists alert_entity; | ||||||
|  | DELETE from entity_relationship where  fromEntity = 'alert' and toEntity = 'alertAction'; | ||||||
| 
 | 
 | ||||||
| -- create data model table | -- create data model table | ||||||
| CREATE TABLE IF NOT EXISTS dashboard_data_model_entity ( | CREATE TABLE IF NOT EXISTS dashboard_data_model_entity ( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mohit Yadav
						Mohit Yadav