mirror of https://github.com/buster-so/buster.git
migration handles orphaned metric_files better
This commit is contained in:
parent
5896a076a4
commit
435042b766
|
@ -24,7 +24,27 @@ FROM metric_dataset md
|
|||
JOIN dataset_source ds ON ds.dataset_id = (md.first_dataset_id_str)::uuid -- Cast the text datasetId to UUID for joining
|
||||
WHERE metric_files.id = md.metric_id;
|
||||
|
||||
-- Add the NOT NULL constraint after backfilling
|
||||
-- Identify metric_files to be deleted (those that couldn't be backfilled)
|
||||
CREATE TEMP TABLE metric_files_to_delete AS
|
||||
SELECT id FROM metric_files
|
||||
WHERE data_source_id IS NULL;
|
||||
|
||||
-- Clean up related tables before deleting the metric_files
|
||||
-- NOTE: Assumes the AssetTypeEnum value for metric files is 'MetricFile'. Verify this.
|
||||
DELETE FROM metric_files_to_dashboard_files WHERE metric_file_id IN (SELECT id FROM metric_files_to_delete);
|
||||
DELETE FROM metric_files_to_datasets WHERE metric_file_id IN (SELECT id FROM metric_files_to_delete);
|
||||
DELETE FROM asset_permissions WHERE asset_id IN (SELECT id FROM metric_files_to_delete) AND asset_type = 'MetricFile';
|
||||
DELETE FROM collections_to_assets WHERE asset_id IN (SELECT id FROM metric_files_to_delete) AND asset_type = 'MetricFile';
|
||||
DELETE FROM user_favorites WHERE asset_id IN (SELECT id FROM metric_files_to_delete) AND asset_type = 'MetricFile';
|
||||
|
||||
-- Delete metric_files that couldn't be backfilled
|
||||
DELETE FROM metric_files
|
||||
WHERE id IN (SELECT id FROM metric_files_to_delete);
|
||||
|
||||
-- Drop the temporary table
|
||||
DROP TABLE metric_files_to_delete;
|
||||
|
||||
-- Add the NOT NULL constraint after backfilling and deleting orphans
|
||||
ALTER TABLE metric_files
|
||||
ALTER COLUMN data_source_id SET NOT NULL;
|
||||
|
||||
|
|
Loading…
Reference in New Issue