Skip to content

Commit f005fde

Browse files
committed
3831: Adjusts PL/pgSQL block for updates
1 parent 13081f2 commit f005fde

1 file changed

Lines changed: 33 additions & 5 deletions

File tree

database/changelog/changelog-tables/transform-company-names.yaml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,41 @@ databaseChangeLog:
6060
sql: |
6161
DO $$
6262
DECLARE
63-
rec RECORD;
63+
comp_name_rec RECORD;
64+
revenue_rec RECORD;
6465
BEGIN
65-
FOR rec IN SELECT original_name, new_name FROM transform_company_names
66+
FOR comp_name_rec IN SELECT original_name, new_name FROM transform_company_names ORDER BY original_name
6667
LOOP
67-
UPDATE federal_revenue_by_company
68-
SET corporate_name = rec.new_name
69-
WHERE corporate_name = rec.original_name;
68+
FOR revenue_rec IN SELECT * FROM federal_revenue_by_company WHERE corporate_name = comp_name_rec.original_name ORDER BY calendar_year
69+
LOOP
70+
BEGIN
71+
UPDATE federal_revenue_by_company
72+
SET corporate_name = comp_name_rec.new_name,
73+
last_update_date = now()
74+
WHERE calendar_year = revenue_rec.calendar_year
75+
AND corporate_name = comp_name_rec.original_name
76+
AND revenue_agency_type = revenue_rec.revenue_agency_type
77+
AND commodity = revenue_rec.commodity;
78+
EXCEPTION
79+
WHEN unique_violation THEN
80+
UPDATE federal_revenue_by_company
81+
SET revenue = revenue + revenue_rec.revenue,
82+
raw_revenue = TO_CHAR(revenue + revenue_rec.revenue, 'L999G999G999G999D99'),
83+
last_update_date = now()
84+
WHERE calendar_year = revenue_rec.calendar_year
85+
AND corporate_name = comp_name_rec.new_name
86+
AND revenue_agency_type = revenue_rec.revenue_agency_type
87+
AND commodity = revenue_rec.commodity;
88+
89+
DELETE FROM federal_revenue_by_company
90+
WHERE calendar_year = revenue_rec.calendar_year
91+
AND corporate_name = revenue_rec.corporate_name
92+
AND revenue_agency_type = revenue_rec.revenue_agency_type
93+
AND commodity = revenue_rec.commodity;
94+
WHEN OTHERS THEN
95+
RAISE NOTICE 'Error: %', SQLERRM;
96+
END;
97+
END LOOP;
7098
END LOOP;
7199
END;
72100
$$;

0 commit comments

Comments
 (0)