Merge pull request 'удаление старых функций в бд (добавление и обновление всп)' (#188) from del-old-func into test
Reviewed-on: #188
This commit is contained in:
commit
4e002150d3
102
api/alembic/versions/0047_remove_old_vsp_functions.py
Normal file
102
api/alembic/versions/0047_remove_old_vsp_functions.py
Normal file
@ -0,0 +1,102 @@
|
||||
from alembic import op
|
||||
|
||||
|
||||
revision = "0047"
|
||||
down_revision = "0046"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# Verify that the implementations used by the API exist before removing
|
||||
# historical signatures. CREATE OR REPLACE does not replace overloads.
|
||||
op.execute(
|
||||
"""
|
||||
DO $migration$
|
||||
BEGIN
|
||||
IF to_regprocedure(
|
||||
'v3.add_vsp(integer, varchar, varchar, varchar, date, '
|
||||
'varchar, integer, numeric, date, boolean, boolean, varchar, '
|
||||
'integer, varchar, text, varchar, date)'
|
||||
) IS NULL THEN
|
||||
RAISE EXCEPTION 'Current v3.add_vsp function is missing';
|
||||
END IF;
|
||||
|
||||
IF to_regprocedure(
|
||||
'v3.upd_vsp(integer, integer, varchar, varchar, varchar, '
|
||||
'date, varchar, integer, numeric, date, boolean, boolean, '
|
||||
'varchar, integer, varchar, text, varchar, date)'
|
||||
) IS NULL THEN
|
||||
RAISE EXCEPTION 'Current v3.upd_vsp function is missing';
|
||||
END IF;
|
||||
END
|
||||
$migration$;
|
||||
"""
|
||||
)
|
||||
|
||||
# The first two may still have their temporary names in production.
|
||||
for function_name in ("add_vsp", "add_vsp_1"):
|
||||
op.execute(
|
||||
f"""
|
||||
DROP FUNCTION IF EXISTS v3.{function_name}(
|
||||
integer, varchar, varchar, varchar, date, varchar,
|
||||
integer, numeric, date, boolean, boolean, varchar,
|
||||
integer, varchar, text, varchar, integer, varchar, date
|
||||
) RESTRICT
|
||||
"""
|
||||
)
|
||||
|
||||
for function_name in ("add_vsp", "add_vsp_2"):
|
||||
op.execute(
|
||||
f"""
|
||||
DROP FUNCTION IF EXISTS v3.{function_name}(
|
||||
integer, varchar, varchar, varchar, date, varchar,
|
||||
integer, numeric
|
||||
) RESTRICT
|
||||
"""
|
||||
)
|
||||
|
||||
op.execute(
|
||||
"""
|
||||
DROP FUNCTION IF EXISTS v3.upd_vsp(
|
||||
integer, integer, varchar, varchar, varchar, date, varchar,
|
||||
integer, numeric, date, boolean, boolean, varchar, integer,
|
||||
varchar, text, varchar, integer, varchar, date
|
||||
) RESTRICT
|
||||
"""
|
||||
)
|
||||
op.execute(
|
||||
"""
|
||||
DROP FUNCTION IF EXISTS v3.upd_vsp(
|
||||
integer, integer, varchar, varchar, varchar, date, varchar,
|
||||
integer, numeric
|
||||
) RESTRICT
|
||||
"""
|
||||
)
|
||||
|
||||
op.execute(
|
||||
"""
|
||||
DO $migration$
|
||||
BEGIN
|
||||
IF (
|
||||
SELECT count(*)
|
||||
FROM pg_proc AS p
|
||||
JOIN pg_namespace AS n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname = 'v3' AND p.proname = 'add_vsp'
|
||||
) <> 1 OR (
|
||||
SELECT count(*)
|
||||
FROM pg_proc AS p
|
||||
JOIN pg_namespace AS n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname = 'v3' AND p.proname = 'upd_vsp'
|
||||
) <> 1 THEN
|
||||
RAISE EXCEPTION 'Unexpected v3.add_vsp or v3.upd_vsp overload remains';
|
||||
END IF;
|
||||
END
|
||||
$migration$;
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# The obsolete function bodies are not part of the current schema.
|
||||
pass
|
||||
Loading…
x
Reference in New Issue
Block a user