4 SELECT evergreen.upgrade_deps_block_check('0860', :eg_version);
6 CREATE OR REPLACE FUNCTION evergreen.array_overlap_check (/* field */) RETURNS TRIGGER AS $$
12 EXECUTE 'SELECT COUNT(*) FROM '|| TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME ||' WHERE '|| fld ||' && ($1).'|| fld INTO cnt USING NEW;
14 RAISE EXCEPTION 'Cannot insert duplicate array into field % of table %', fld, TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME;
21 CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_deprecates ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
22 SELECT DISTINCT l.version
23 FROM config.upgrade_log l
24 JOIN config.db_patch_dependencies d ON (l.version = ANY(d.deprecates))
28 -- List applied db patches that are superseded by (and block the application of) my_db_patch
29 CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_supersedes ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
30 SELECT DISTINCT l.version
31 FROM config.upgrade_log l
32 JOIN config.db_patch_dependencies d ON (l.version = ANY(d.supersedes))
37 CREATE OR REPLACE FUNCTION evergreen.upgrade_deps_block_check ( my_db_patch TEXT, my_applied_to TEXT ) RETURNS BOOL AS $$
42 IF NOT evergreen.upgrade_verify_no_dep_conflicts( my_db_patch ) THEN
43 SELECT STRING_AGG(patch, ', ') INTO deprecates FROM evergreen.upgrade_list_applied_deprecates(my_db_patch);
44 SELECT STRING_AGG(patch, ', ') INTO supersedes FROM evergreen.upgrade_list_applied_supersedes(my_db_patch);
46 Upgrade script % can not be applied:
47 applied deprecated scripts %
48 applied superseded scripts %
52 (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_deprecates(my_db_patch)),
53 (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_supersedes(my_db_patch)),
54 evergreen.upgrade_list_applied_deprecated(my_db_patch),
55 evergreen.upgrade_list_applied_superseded(my_db_patch);
58 INSERT INTO config.upgrade_log (version, applied_to) VALUES (my_db_patch, my_applied_to);