Skip to content
Snippets Groups Projects
Commit 528fb478 authored by Sam Kagan's avatar Sam Kagan
Browse files

Added SQL file to facilitate deleting an EVLA EB from archive db

parent 22eae371
No related branches found
No related tags found
2 merge requests!1605Merge 2.8.2.3 work to main,!1561Added SQL file to facilitate deleting an EVLA EB from archive db
Pipeline #13645 passed
-- To use: Install the below two functions, and then run the latter on an EB you want to delete, like:
-- select delete_metadata_for_evla_eb('15A-397.sb31019491.eb31020561.57236.7198700463');
create or replace function get_info_for_evla_eb_deletion(eb_fileset_id varchar, out science_product_locator VARCHAR, out filegroup_ids int[], out product_group_id int, out execution_block_id int, out observation_configuration_ids int[]) as $$
declare ancillary_fg_ids int[];
BEGIN
science_product_locator := science_products.science_product_locator from science_products where external_name = eb_fileset_id;
filegroup_ids[1] := filegroup_id from science_products where external_name = eb_fileset_id;
product_group_id := science_products_product_groups.product_group_id FROM science_products_product_groups WHERE science_products_product_groups.science_product_locator=get_info_for_evla_eb_deletion.science_product_locator;
ancillary_fg_ids := array(select filegroup_id FROM ancillary_products WHERE ancillary_products.science_product_locator=get_info_for_evla_eb_deletion.science_product_locator OR ancillary_products.product_group_id=get_info_for_evla_eb_deletion.product_group_id);
filegroup_ids := filegroup_ids || ancillary_fg_ids;
execution_block_id := execution_blocks.execution_block_id FROM execution_blocks WHERE execution_blocks.science_product_locator=get_info_for_evla_eb_deletion.science_product_locator;
observation_configuration_ids := array(select observation_configuration_id FROM observation_configurations WHERE observation_configurations.execution_block_id=get_info_for_evla_eb_deletion.execution_block_id);
return;
end;
$$ Language plpgsql;
create or replace function delete_metadata_for_evla_eb(eb_fileset_id varchar) returns void as $$
declare
eb_info record;
begin
eb_info := get_info_for_evla_eb_deletion(eb_fileset_id);
delete FROM ancillary_products WHERE science_product_locator=eb_info.science_product_locator OR product_group_id=eb_info.product_group_id;
delete FROM science_products_product_groups WHERE science_product_locator=eb_info.science_product_locator;
delete FROM product_groups WHERE product_group_id=eb_info.product_group_id;
delete FROM science_products_projects WHERE science_product_locator=eb_info.science_product_locator;
delete FROM science_product_comments WHERE science_product_locator=eb_info.science_product_locator;
delete FROM rh_locators WHERE locator=eb_info.science_product_locator;
delete from subscans where observation_configuration_id = any (eb_info.observation_configuration_ids);
delete from data_descriptions where observation_configuration_id = any (eb_info.observation_configuration_ids);
delete FROM observation_configurations WHERE execution_block_id = eb_info.execution_block_id;
delete FROM spectral_windows WHERE execution_block_id = eb_info.execution_block_id;
delete FROM execution_blocks WHERE science_product_locator=eb_info.science_product_locator;
delete FROM science_products WHERE science_product_locator=eb_info.science_product_locator;
delete FROM files WHERE filegroup = any (eb_info.filegroup_ids);
delete FROM filegroups WHERE filegroup_id = any (eb_info.filegroup_ids);
return;
end;
$$ Language plpgsql;
-- select delete_metadata_for_evla_eb('15A-397.sb31019491.eb31020561.57236.7198700463');
-- select get_info_for_evla_eb_deletion('15A-397.sb31019491.eb31020561.57236.7198700463');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment