From 6e6450638894f7b1d24c762fe16fa91bd20d98b9 Mon Sep 17 00:00:00 2001 From: Stefan Fussenegger Date: Mon, 13 Nov 2023 15:35:52 +0100 Subject: [PATCH 1/3] add dbmirror2 schema, init replication --- mbslave.conf.default | 1 + mbslave/replication.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/mbslave.conf.default b/mbslave.conf.default index 2088d09..4daba29 100644 --- a/mbslave.conf.default +++ b/mbslave.conf.default @@ -21,4 +21,5 @@ cover_art_archive=cover_art_archive event_art_archive=event_art_archive wikidocs=wikidocs documentation=documentation +dbmirror2=dbmirror2 ignore= diff --git a/mbslave/replication.py b/mbslave/replication.py index 7c4f833..afdda95 100644 --- a/mbslave/replication.py +++ b/mbslave/replication.py @@ -582,6 +582,7 @@ def create_schemas(config: Config) -> None: 'statistics', 'documentation', 'wikidocs', + 'dbmirror2' ] for schema in schemas: if schema in config.schemas.ignored_schemas: @@ -670,6 +671,10 @@ def mbslave_init_main(config: Config, args: argparse.Namespace) -> None: # triggers ('musicbrainz', 'CreateMirrorOnlyTriggers.sql'), + # replication + ('musicbrainz', 'ReplicationSetup.sql'), + ('dbmirror2', 'dbmirror2/ReplicationSetup.sql'), + ] for schema, sql_script in sql_scripts: From d25ecb572f1bc6d0844aafd64c1fa012465dcb50 Mon Sep 17 00:00:00 2001 From: Stefan Fussenegger Date: Mon, 13 Nov 2023 15:37:27 +0100 Subject: [PATCH 2/3] explicitly set search_path on function creation --- mbslave/sql/CreateFunctions.sql | 202 +++++++++++----------- mbslave/sql/CreateMirrorOnlyFunctions.sql | 36 ++-- 2 files changed, 119 insertions(+), 119 deletions(-) diff --git a/mbslave/sql/CreateFunctions.sql b/mbslave/sql/CreateFunctions.sql index 53cc407..87bbd78 100644 --- a/mbslave/sql/CreateFunctions.sql +++ b/mbslave/sql/CreateFunctions.sql @@ -50,7 +50,7 @@ BEGIN value = value || lpad(to_hex(ceil(random() * 255)::int), 2, '0'); RETURN value::uuid; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION from_hex(t text) RETURNS integer AS $$ @@ -84,7 +84,7 @@ BEGIN value = value || substr(bytes, 1+2*10, 12); return value::uuid; END; -$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION inc_ref_count(tbl varchar, row_id integer, val integer) RETURNS void AS $$ @@ -94,7 +94,7 @@ BEGIN EXECUTE 'UPDATE ' || tbl || ' SET ref_count = ref_count + ' || val || ' WHERE id = ' || row_id; RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION dec_ref_count(tbl varchar, row_id integer, val integer) RETURNS void AS $$ DECLARE @@ -109,7 +109,7 @@ BEGIN EXECUTE 'UPDATE ' || tbl || ' SET ref_count = ref_count - ' || val || ' WHERE id = ' || row_id; RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION integer_date(year SMALLINT, month SMALLINT, day SMALLINT) RETURNS INTEGER AS $$ @@ -149,7 +149,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- artist triggers @@ -161,7 +161,7 @@ BEGIN INSERT INTO artist_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_artist_attribute_type_allows_text() @@ -180,7 +180,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- artist_credit triggers @@ -197,7 +197,7 @@ BEGIN -- artist_release_group. RAISE EXCEPTION 'Cannot update artist_credit_name'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- editor triggers @@ -211,7 +211,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- event triggers @@ -234,7 +234,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- event triggers @@ -246,7 +246,7 @@ BEGIN INSERT INTO event_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- instrument triggers @@ -302,7 +302,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- label triggers @@ -313,7 +313,7 @@ BEGIN INSERT INTO label_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_label_attribute_type_allows_text() @@ -332,7 +332,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- medium triggers @@ -355,7 +355,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- place triggers @@ -367,7 +367,7 @@ BEGIN INSERT INTO place_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_place_attribute_type_allows_text() @@ -386,7 +386,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- recording triggers @@ -409,7 +409,7 @@ BEGIN NEW.last_updated = now(); RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_recording() RETURNS trigger AS $$ BEGIN @@ -417,7 +417,7 @@ BEGIN INSERT INTO recording_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_recording() RETURNS trigger AS $$ BEGIN @@ -427,14 +427,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_recording() RETURNS trigger AS $$ BEGIN PERFORM dec_ref_count('artist_credit', OLD.artist_credit, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_recording_attribute_type_allows_text() @@ -453,7 +453,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- release triggers @@ -471,7 +471,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release() RETURNS trigger AS $$ BEGIN @@ -516,7 +516,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release() RETURNS trigger AS $$ BEGIN @@ -528,7 +528,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_group_secondary_type_join() RETURNS trigger AS $$ @@ -536,7 +536,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group_secondary_type_join() RETURNS trigger AS $$ @@ -544,7 +544,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_label() RETURNS trigger AS $$ @@ -552,7 +552,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (NEW.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_label() RETURNS trigger AS $$ @@ -562,7 +562,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_label() RETURNS trigger AS $$ @@ -570,7 +570,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (OLD.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_release_attribute_type_allows_text() @@ -589,7 +589,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- release_group triggers @@ -602,7 +602,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_group() RETURNS trigger AS $$ BEGIN @@ -619,7 +619,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group() RETURNS trigger AS $$ BEGIN @@ -627,7 +627,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_release_group_secondary_type_join() RETURNS trigger AS $$ BEGIN @@ -639,7 +639,7 @@ BEGIN -- artist_release_group up-to-date. RAISE EXCEPTION 'Cannot update release_group_secondary_type_join'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_release_group_attribute_type_allows_text() @@ -656,7 +656,7 @@ RETURNS trigger AS $$ ELSE RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- series triggers @@ -679,7 +679,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- track triggers @@ -703,7 +703,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_track() RETURNS trigger AS $$ BEGIN @@ -749,7 +749,7 @@ BEGIN PERFORM materialise_recording_length(NEW.recording); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_track() RETURNS trigger AS $$ BEGIN @@ -769,7 +769,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- work triggers @@ -780,7 +780,7 @@ BEGIN INSERT INTO work_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_work_attribute_type_allows_text() @@ -798,7 +798,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- alternative tracklist triggers @@ -811,7 +811,7 @@ BEGIN END IF; RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION dec_nullable_artist_credit(row_id integer) RETURNS void AS $$ BEGIN @@ -820,14 +820,14 @@ BEGIN END IF; RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_alternative_release_or_track() RETURNS trigger AS $$ BEGIN PERFORM inc_nullable_artist_credit(NEW.artist_credit); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_alternative_release_or_track() RETURNS trigger AS $$ BEGIN @@ -837,21 +837,21 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_alternative_release_or_track() RETURNS trigger AS $$ BEGIN PERFORM dec_nullable_artist_credit(OLD.artist_credit); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_alternative_medium_track() RETURNS trigger AS $$ BEGIN PERFORM inc_ref_count('alternative_track', NEW.alternative_track, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_alternative_medium_track() RETURNS trigger AS $$ BEGIN @@ -861,14 +861,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_alternative_medium_track() RETURNS trigger AS $$ BEGIN PERFORM dec_ref_count('alternative_track', OLD.alternative_track, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- lastupdate triggers @@ -879,7 +879,7 @@ BEGIN NEW.last_updated = NOW(); RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_edit() RETURNS trigger AS $$ BEGIN @@ -889,14 +889,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_ins_edit_materialize_status() RETURNS trigger AS $$ BEGIN NEW.status = (SELECT status FROM edit WHERE id = NEW.edit); RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ------------------------ -- Collection deletion and hiding triggers @@ -916,7 +916,7 @@ RETURNS trigger AS $$ RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION del_collection_sub_on_delete() RETURNS trigger AS $$ @@ -928,7 +928,7 @@ RETURNS trigger AS $$ RETURN OLD; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION del_collection_sub_on_private() RETURNS trigger AS $$ @@ -946,7 +946,7 @@ RETURNS trigger AS $$ RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION restore_collection_sub_on_public() RETURNS trigger AS $$ @@ -961,7 +961,7 @@ RETURNS trigger AS $$ RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ------------------------ -- CD Lookup @@ -1005,7 +1005,7 @@ BEGIN RETURN str::cube; END; -$$ LANGUAGE 'plpgsql' IMMUTABLE; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE; CREATE OR REPLACE FUNCTION create_bounding_cube(durations INTEGER[], fuzzy INTEGER) RETURNS cube AS $$ DECLARE @@ -1059,7 +1059,7 @@ BEGIN RETURN str::cube; END; -$$ LANGUAGE 'plpgsql' IMMUTABLE; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE; ------------------------------------------------------------------- -- Maintain musicbrainz.release_first_release_date @@ -1087,7 +1087,7 @@ BEGIN ) ORDER BY release, year NULLS LAST, month NULLS LAST, day NULLS LAST'; END; -$$ LANGUAGE 'plpgsql' STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_release_first_release_date(release_id INTEGER) RETURNS VOID AS $$ @@ -1104,7 +1104,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (release_id); END; -$$ LANGUAGE 'plpgsql' STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; ------------------------------------------------------------------- -- Maintain release_group_meta.first_release_date @@ -1129,7 +1129,7 @@ BEGIN WHERE id = release_group_id; INSERT INTO artist_release_group_pending_update VALUES (release_group_id); END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Maintain musicbrainz.recording_first_release_date @@ -1149,7 +1149,7 @@ BEGIN rd.month NULLS LAST, rd.day NULLS LAST'; END; -$$ LANGUAGE 'plpgsql' STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_recordings_first_release_dates(recording_ids INTEGER[]) RETURNS VOID AS $$ @@ -1164,7 +1164,7 @@ BEGIN format('track.recording = any(%L)', recording_ids) ); END; -$$ LANGUAGE 'plpgsql' STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_releases_recordings_first_release_dates(release_ids INTEGER[]) RETURNS VOID AS $$ @@ -1177,7 +1177,7 @@ BEGIN )); RETURN; END; -$$ LANGUAGE 'plpgsql' STRICT; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION a_ins_release_event() RETURNS TRIGGER AS $$ @@ -1196,7 +1196,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_event() RETURNS TRIGGER AS $$ @@ -1227,7 +1227,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_event() RETURNS TRIGGER AS $$ @@ -1246,13 +1246,13 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION deny_special_purpose_deletion() RETURNS trigger AS $$ BEGIN RAISE EXCEPTION 'Attempted to delete a special purpose row'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Ratings @@ -1284,7 +1284,7 @@ BEGIN entity_type::TEXT || '_rating_raw' ) USING entity_id; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_insert() RETURNS trigger AS $$ @@ -1297,7 +1297,7 @@ BEGIN PERFORM update_aggregate_rating(entity_type, new_entity_id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_update() RETURNS trigger AS $$ @@ -1319,7 +1319,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_delete() RETURNS trigger AS $$ @@ -1332,7 +1332,7 @@ BEGIN PERFORM update_aggregate_rating(entity_type, old_entity_id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_ratings(enttype TEXT, ids INTEGER[]) RETURNS TABLE(editor INT, rating SMALLINT) AS $$ @@ -1346,7 +1346,7 @@ BEGIN USING ids; RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Prevent link attributes being used on links that don't support them @@ -1366,7 +1366,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; -------------------------------------------------------------------------------- -- Remove unused link rows when a relationship is changed @@ -1390,7 +1390,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_url(ids INTEGER[]) RETURNS VOID AS $$ @@ -1436,7 +1436,7 @@ BEGIN DELETE FROM url_gid_redirect WHERE new_id = any(clear_up); DELETE FROM url WHERE id = any(clear_up); END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION remove_unused_url() RETURNS TRIGGER AS $$ @@ -1455,7 +1455,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION simplify_search_hints() RETURNS trigger AS $$ @@ -1474,7 +1474,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION end_date_implies_ended() RETURNS trigger AS $$ @@ -1487,7 +1487,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION end_area_implies_ended() RETURNS trigger AS $$ @@ -1498,7 +1498,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_orphaned_recordings() RETURNS TRIGGER @@ -1559,7 +1559,7 @@ AS $$ RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION padded_by_whitespace(TEXT) RETURNS boolean AS $$ SELECT btrim($1) <> $1; @@ -1583,7 +1583,7 @@ BEGIN entity_type::TEXT ) USING entity_id, tag_id, count_change; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_aggregate_tag(entity_type taggable_entity_type, entity_id INTEGER, tag_id INTEGER) RETURNS VOID AS $$ @@ -1606,7 +1606,7 @@ BEGIN entity_type::TEXT || '_tag_raw' ) USING entity_id, tag_id; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_insert() RETURNS trigger AS $$ @@ -1620,7 +1620,7 @@ BEGIN UPDATE tag SET ref_count = ref_count + 1 WHERE id = NEW.tag; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_update() RETURNS trigger AS $$ @@ -1647,7 +1647,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_delete() RETURNS trigger AS $$ @@ -1662,7 +1662,7 @@ BEGIN UPDATE tag SET ref_count = ref_count - 1 WHERE id = OLD.tag; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_tag(tag_id INT) RETURNS void AS $$ @@ -1671,7 +1671,7 @@ RETURNS void AS $$ EXCEPTION WHEN foreign_key_violation THEN RETURN; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION trg_delete_unused_tag() RETURNS trigger AS $$ @@ -1679,7 +1679,7 @@ RETURNS trigger AS $$ PERFORM delete_unused_tag(NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION trg_delete_unused_tag_ref() RETURNS trigger AS $$ @@ -1687,7 +1687,7 @@ RETURNS trigger AS $$ PERFORM delete_unused_tag(OLD.tag); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION inserting_edits_requires_confirmed_email_address() RETURNS trigger AS $$ @@ -1702,7 +1702,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION deny_deprecated_links() RETURNS trigger AS $$ @@ -1713,7 +1713,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION check_has_dates() RETURNS trigger AS $$ @@ -1731,7 +1731,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION materialise_recording_length(recording_id INT) RETURNS void as $$ @@ -1741,7 +1741,7 @@ BEGIN WHERE recording.id = recording_id AND recording.length IS DISTINCT FROM track.median; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION track_count_matches_cdtoc(medium, int) RETURNS boolean AS $$ SELECT $1.track_count = $2 + COALESCE( @@ -1766,7 +1766,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Text search helpers @@ -1908,7 +1908,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Maintain musicbrainz.artist_release_group @@ -2002,7 +2002,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Relationship triggers @@ -2069,28 +2069,28 @@ BEGIN -- area_containment. RAISE EXCEPTION 'link rows are immutable'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute rows are immutable'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute_credit() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute_credit rows are immutable'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute_text_value() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute_text_value rows are immutable'; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Maintain musicbrainz.area_containment diff --git a/mbslave/sql/CreateMirrorOnlyFunctions.sql b/mbslave/sql/CreateMirrorOnlyFunctions.sql index 4836bf6..915d6e8 100644 --- a/mbslave/sql/CreateMirrorOnlyFunctions.sql +++ b/mbslave/sql/CreateMirrorOnlyFunctions.sql @@ -9,7 +9,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_mirror() RETURNS trigger AS $$ @@ -31,7 +31,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_mirror() RETURNS trigger AS $$ @@ -40,7 +40,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_event_mirror() RETURNS trigger AS $$ @@ -52,7 +52,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_event_mirror() RETURNS trigger AS $$ @@ -67,7 +67,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_event_mirror() RETURNS trigger AS $$ @@ -79,7 +79,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_group_mirror() RETURNS trigger AS $$ @@ -87,7 +87,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_group_mirror() RETURNS trigger AS $$ @@ -101,7 +101,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group_mirror() RETURNS trigger AS $$ @@ -109,7 +109,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_group_meta_mirror() RETURNS trigger AS $$ @@ -123,7 +123,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_group_secondary_type_join_mirror() RETURNS trigger AS $$ @@ -131,7 +131,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group_secondary_type_join_mirror() RETURNS trigger AS $$ @@ -139,7 +139,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_label_mirror() RETURNS trigger AS $$ @@ -147,7 +147,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (NEW.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_label_mirror() RETURNS trigger AS $$ @@ -157,7 +157,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_label_mirror() RETURNS trigger AS $$ @@ -165,7 +165,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (OLD.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_track_mirror() RETURNS trigger AS $$ @@ -182,7 +182,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_track_mirror() RETURNS trigger AS $$ @@ -203,7 +203,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_track_mirror() RETURNS trigger AS $$ @@ -220,6 +220,6 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql'; +$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; COMMIT; From 4c0b0081926e4cfc5bb05d489ec86e53bcbe957b Mon Sep 17 00:00:00 2001 From: Stefan Fussenegger Date: Thu, 23 Nov 2023 15:45:34 +0100 Subject: [PATCH 3/3] add search_path to remaining functions, avoid deprecated single-quotes for language --- mbslave/sql/CreateFunctions.sql | 244 ++++++++++++++++---------------- 1 file changed, 122 insertions(+), 122 deletions(-) diff --git a/mbslave/sql/CreateFunctions.sql b/mbslave/sql/CreateFunctions.sql index 87bbd78..285d04e 100644 --- a/mbslave/sql/CreateFunctions.sql +++ b/mbslave/sql/CreateFunctions.sql @@ -13,7 +13,7 @@ CREATE OR REPLACE FUNCTION _median(INTEGER[]) RETURNS INTEGER AS $$ LIMIT 1 -- Subtracting (n + 1) % 2 creates a left bias OFFSET greatest(0, floor((select count(*) FROM q) / 2.0) - ((select count(*) + 1 FROM q) % 2)); -$$ LANGUAGE sql IMMUTABLE; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE; CREATE AGGREGATE median(INTEGER) ( SFUNC=array_append, @@ -50,7 +50,7 @@ BEGIN value = value || lpad(to_hex(ceil(random() * 255)::int), 2, '0'); RETURN value::uuid; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION from_hex(t text) RETURNS integer AS $$ @@ -61,7 +61,7 @@ BEGIN RETURN r.hex; END LOOP; END -$$ LANGUAGE plpgsql IMMUTABLE STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public IMMUTABLE STRICT; -- NameSpace_URL = '6ba7b8119dad11d180b400c04fd430c8' CREATE OR REPLACE FUNCTION generate_uuid_v3(namespace varchar, name varchar) RETURNS uuid @@ -84,7 +84,7 @@ BEGIN value = value || substr(bytes, 1+2*10, 12); return value::uuid; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION inc_ref_count(tbl varchar, row_id integer, val integer) RETURNS void AS $$ @@ -94,7 +94,7 @@ BEGIN EXECUTE 'UPDATE ' || tbl || ' SET ref_count = ref_count + ' || val || ' WHERE id = ' || row_id; RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION dec_ref_count(tbl varchar, row_id integer, val integer) RETURNS void AS $$ DECLARE @@ -109,7 +109,7 @@ BEGIN EXECUTE 'UPDATE ' || tbl || ' SET ref_count = ref_count - ' || val || ' WHERE id = ' || row_id; RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION integer_date(year SMALLINT, month SMALLINT, day SMALLINT) RETURNS INTEGER AS $$ @@ -126,7 +126,7 @@ RETURNS INTEGER AS $$ )::INTEGER END ) -$$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE PARALLEL SAFE; ----------------------------------------------------------------------- -- area triggers @@ -149,7 +149,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- artist triggers @@ -161,7 +161,7 @@ BEGIN INSERT INTO artist_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_artist_attribute_type_allows_text() @@ -180,7 +180,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- artist_credit triggers @@ -197,7 +197,7 @@ BEGIN -- artist_release_group. RAISE EXCEPTION 'Cannot update artist_credit_name'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- editor triggers @@ -211,7 +211,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- event triggers @@ -234,7 +234,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- event triggers @@ -246,7 +246,7 @@ BEGIN INSERT INTO event_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- instrument triggers @@ -261,7 +261,7 @@ BEGIN ) INSERT INTO link_creditable_attribute_type (attribute_type) SELECT id FROM inserted_rows; RETURN NEW; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_instrument() RETURNS trigger AS $$ BEGIN @@ -272,7 +272,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_instrument() RETURNS trigger AS $$ BEGIN @@ -283,7 +283,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_instrument_attribute_type_allows_text() @@ -302,7 +302,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- label triggers @@ -313,7 +313,7 @@ BEGIN INSERT INTO label_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_label_attribute_type_allows_text() @@ -332,7 +332,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- medium triggers @@ -355,7 +355,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- place triggers @@ -367,7 +367,7 @@ BEGIN INSERT INTO place_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_place_attribute_type_allows_text() @@ -386,7 +386,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- recording triggers @@ -395,7 +395,7 @@ $$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION median_track_length(recording_id integer) RETURNS integer AS $$ SELECT median(track.length) FROM track WHERE recording = $1; -$$ LANGUAGE SQL; +$$ LANGUAGE sql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_recording() RETURNS TRIGGER AS $$ BEGIN @@ -409,7 +409,7 @@ BEGIN NEW.last_updated = now(); RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_recording() RETURNS trigger AS $$ BEGIN @@ -417,7 +417,7 @@ BEGIN INSERT INTO recording_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_recording() RETURNS trigger AS $$ BEGIN @@ -427,14 +427,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_recording() RETURNS trigger AS $$ BEGIN PERFORM dec_ref_count('artist_credit', OLD.artist_credit, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_recording_attribute_type_allows_text() @@ -453,7 +453,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- release triggers @@ -471,7 +471,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release() RETURNS trigger AS $$ BEGIN @@ -516,7 +516,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release() RETURNS trigger AS $$ BEGIN @@ -528,7 +528,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_group_secondary_type_join() RETURNS trigger AS $$ @@ -536,7 +536,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group_secondary_type_join() RETURNS trigger AS $$ @@ -544,7 +544,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.release_group); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_release_label() RETURNS trigger AS $$ @@ -552,7 +552,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (NEW.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_label() RETURNS trigger AS $$ @@ -562,7 +562,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_label() RETURNS trigger AS $$ @@ -570,7 +570,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (OLD.release); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_release_attribute_type_allows_text() @@ -589,7 +589,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- release_group triggers @@ -602,7 +602,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_group() RETURNS trigger AS $$ BEGIN @@ -619,7 +619,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_group() RETURNS trigger AS $$ BEGIN @@ -627,7 +627,7 @@ BEGIN INSERT INTO artist_release_group_pending_update VALUES (OLD.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_release_group_secondary_type_join() RETURNS trigger AS $$ BEGIN @@ -639,7 +639,7 @@ BEGIN -- artist_release_group up-to-date. RAISE EXCEPTION 'Cannot update release_group_secondary_type_join'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_release_group_attribute_type_allows_text() @@ -656,7 +656,7 @@ RETURNS trigger AS $$ ELSE RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- series triggers @@ -679,7 +679,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- track triggers @@ -703,7 +703,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_track() RETURNS trigger AS $$ BEGIN @@ -749,7 +749,7 @@ BEGIN PERFORM materialise_recording_length(NEW.recording); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_track() RETURNS trigger AS $$ BEGIN @@ -769,7 +769,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- work triggers @@ -780,7 +780,7 @@ BEGIN INSERT INTO work_meta (id) VALUES (NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Ensure attribute type allows free text if free text is added CREATE OR REPLACE FUNCTION ensure_work_attribute_type_allows_text() @@ -798,7 +798,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- alternative tracklist triggers @@ -811,7 +811,7 @@ BEGIN END IF; RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION dec_nullable_artist_credit(row_id integer) RETURNS void AS $$ BEGIN @@ -820,14 +820,14 @@ BEGIN END IF; RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_alternative_release_or_track() RETURNS trigger AS $$ BEGIN PERFORM inc_nullable_artist_credit(NEW.artist_credit); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_alternative_release_or_track() RETURNS trigger AS $$ BEGIN @@ -837,21 +837,21 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_alternative_release_or_track() RETURNS trigger AS $$ BEGIN PERFORM dec_nullable_artist_credit(OLD.artist_credit); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_ins_alternative_medium_track() RETURNS trigger AS $$ BEGIN PERFORM inc_ref_count('alternative_track', NEW.alternative_track, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_alternative_medium_track() RETURNS trigger AS $$ BEGIN @@ -861,14 +861,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_alternative_medium_track() RETURNS trigger AS $$ BEGIN PERFORM dec_ref_count('alternative_track', OLD.alternative_track, 1); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- lastupdate triggers @@ -879,7 +879,7 @@ BEGIN NEW.last_updated = NOW(); RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_edit() RETURNS trigger AS $$ BEGIN @@ -889,14 +889,14 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_ins_edit_materialize_status() RETURNS trigger AS $$ BEGIN NEW.status = (SELECT status FROM edit WHERE id = NEW.edit); RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ------------------------ -- Collection deletion and hiding triggers @@ -916,7 +916,7 @@ RETURNS trigger AS $$ RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION del_collection_sub_on_delete() RETURNS trigger AS $$ @@ -928,7 +928,7 @@ RETURNS trigger AS $$ RETURN OLD; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION del_collection_sub_on_private() RETURNS trigger AS $$ @@ -946,7 +946,7 @@ RETURNS trigger AS $$ RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION restore_collection_sub_on_public() RETURNS trigger AS $$ @@ -961,7 +961,7 @@ RETURNS trigger AS $$ RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ------------------------ -- CD Lookup @@ -1005,7 +1005,7 @@ BEGIN RETURN str::cube; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public IMMUTABLE; CREATE OR REPLACE FUNCTION create_bounding_cube(durations INTEGER[], fuzzy INTEGER) RETURNS cube AS $$ DECLARE @@ -1059,7 +1059,7 @@ BEGIN RETURN str::cube; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public IMMUTABLE; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public IMMUTABLE; ------------------------------------------------------------------- -- Maintain musicbrainz.release_first_release_date @@ -1087,7 +1087,7 @@ BEGIN ) ORDER BY release, year NULLS LAST, month NULLS LAST, day NULLS LAST'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_release_first_release_date(release_id INTEGER) RETURNS VOID AS $$ @@ -1104,7 +1104,7 @@ BEGIN INSERT INTO artist_release_pending_update VALUES (release_id); END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public STRICT; ------------------------------------------------------------------- -- Maintain release_group_meta.first_release_date @@ -1129,7 +1129,7 @@ BEGIN WHERE id = release_group_id; INSERT INTO artist_release_group_pending_update VALUES (release_group_id); END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Maintain musicbrainz.recording_first_release_date @@ -1149,7 +1149,7 @@ BEGIN rd.month NULLS LAST, rd.day NULLS LAST'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_recordings_first_release_dates(recording_ids INTEGER[]) RETURNS VOID AS $$ @@ -1164,7 +1164,7 @@ BEGIN format('track.recording = any(%L)', recording_ids) ); END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION set_releases_recordings_first_release_dates(release_ids INTEGER[]) RETURNS VOID AS $$ @@ -1177,7 +1177,7 @@ BEGIN )); RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public STRICT; CREATE OR REPLACE FUNCTION a_ins_release_event() RETURNS TRIGGER AS $$ @@ -1196,7 +1196,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_release_event() RETURNS TRIGGER AS $$ @@ -1227,7 +1227,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_release_event() RETURNS TRIGGER AS $$ @@ -1246,13 +1246,13 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION deny_special_purpose_deletion() RETURNS trigger AS $$ BEGIN RAISE EXCEPTION 'Attempted to delete a special purpose row'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Ratings @@ -1284,7 +1284,7 @@ BEGIN entity_type::TEXT || '_rating_raw' ) USING entity_id; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_insert() RETURNS trigger AS $$ @@ -1297,7 +1297,7 @@ BEGIN PERFORM update_aggregate_rating(entity_type, new_entity_id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_update() RETURNS trigger AS $$ @@ -1319,7 +1319,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_rating_for_raw_delete() RETURNS trigger AS $$ @@ -1332,7 +1332,7 @@ BEGIN PERFORM update_aggregate_rating(entity_type, old_entity_id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_ratings(enttype TEXT, ids INTEGER[]) RETURNS TABLE(editor INT, rating SMALLINT) AS $$ @@ -1346,7 +1346,7 @@ BEGIN USING ids; RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ------------------------------------------------------------------- -- Prevent link attributes being used on links that don't support them @@ -1366,7 +1366,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -------------------------------------------------------------------------------- -- Remove unused link rows when a relationship is changed @@ -1390,7 +1390,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_url(ids INTEGER[]) RETURNS VOID AS $$ @@ -1436,7 +1436,7 @@ BEGIN DELETE FROM url_gid_redirect WHERE new_id = any(clear_up); DELETE FROM url WHERE id = any(clear_up); END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION remove_unused_url() RETURNS TRIGGER AS $$ @@ -1455,7 +1455,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION simplify_search_hints() RETURNS trigger AS $$ @@ -1474,7 +1474,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION end_date_implies_ended() RETURNS trigger AS $$ @@ -1487,7 +1487,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION end_area_implies_ended() RETURNS trigger AS $$ @@ -1498,7 +1498,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_orphaned_recordings() RETURNS TRIGGER @@ -1559,15 +1559,15 @@ AS $$ RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION padded_by_whitespace(TEXT) RETURNS boolean AS $$ SELECT btrim($1) <> $1; -$$ LANGUAGE SQL IMMUTABLE; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE; CREATE OR REPLACE FUNCTION controlled_for_whitespace(TEXT) RETURNS boolean AS $$ SELECT NOT padded_by_whitespace($1); -$$ LANGUAGE SQL IMMUTABLE SET search_path = musicbrainz, public; +$$ LANGUAGE sql IMMUTABLE SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_aggregate_tag_count(entity_type taggable_entity_type, entity_id INTEGER, tag_id INTEGER, count_change SMALLINT) RETURNS VOID AS $$ @@ -1583,7 +1583,7 @@ BEGIN entity_type::TEXT ) USING entity_id, tag_id, count_change; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_aggregate_tag(entity_type taggable_entity_type, entity_id INTEGER, tag_id INTEGER) RETURNS VOID AS $$ @@ -1606,7 +1606,7 @@ BEGIN entity_type::TEXT || '_tag_raw' ) USING entity_id, tag_id; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_insert() RETURNS trigger AS $$ @@ -1620,7 +1620,7 @@ BEGIN UPDATE tag SET ref_count = ref_count + 1 WHERE id = NEW.tag; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_update() RETURNS trigger AS $$ @@ -1647,7 +1647,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_delete() RETURNS trigger AS $$ @@ -1662,7 +1662,7 @@ BEGIN UPDATE tag SET ref_count = ref_count - 1 WHERE id = OLD.tag; RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION delete_unused_tag(tag_id INT) RETURNS void AS $$ @@ -1671,7 +1671,7 @@ RETURNS void AS $$ EXCEPTION WHEN foreign_key_violation THEN RETURN; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION trg_delete_unused_tag() RETURNS trigger AS $$ @@ -1679,7 +1679,7 @@ RETURNS trigger AS $$ PERFORM delete_unused_tag(NEW.id); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION trg_delete_unused_tag_ref() RETURNS trigger AS $$ @@ -1687,7 +1687,7 @@ RETURNS trigger AS $$ PERFORM delete_unused_tag(OLD.tag); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION inserting_edits_requires_confirmed_email_address() RETURNS trigger AS $$ @@ -1702,7 +1702,7 @@ BEGIN RETURN NEW; END IF; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION deny_deprecated_links() RETURNS trigger AS $$ @@ -1713,7 +1713,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION check_has_dates() RETURNS trigger AS $$ @@ -1731,7 +1731,7 @@ BEGIN END IF; RETURN NEW; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION materialise_recording_length(recording_id INT) RETURNS void as $$ @@ -1741,14 +1741,14 @@ BEGIN WHERE recording.id = recording_id AND recording.length IS DISTINCT FROM track.median; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION track_count_matches_cdtoc(medium, int) RETURNS boolean AS $$ SELECT $1.track_count = $2 + COALESCE( (SELECT count(*) FROM track WHERE medium = $1.id AND (position = 0 OR is_data_track = true) ), 0); -$$ LANGUAGE SQL IMMUTABLE; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE; COMMIT; @@ -1766,7 +1766,7 @@ BEGIN ); RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Text search helpers @@ -1774,7 +1774,7 @@ $$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION mb_lower(input text) RETURNS text AS $$ SELECT lower(input COLLATE musicbrainz.musicbrainz); -$$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE PARALLEL SAFE STRICT; CREATE OR REPLACE FUNCTION mb_simple_tsvector(input text) RETURNS tsvector AS $$ -- The builtin 'simple' dictionary, which the mb_simple text search @@ -1782,7 +1782,7 @@ CREATE OR REPLACE FUNCTION mb_simple_tsvector(input text) RETURNS tsvector AS $$ -- for us, but internally it hardcodes DEFAULT_COLLATION_OID; therefore -- we first lowercase the input string ourselves using mb_lower. SELECT to_tsvector('musicbrainz.mb_simple', musicbrainz.mb_lower(input)); -$$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; +$$ LANGUAGE sql SET search_path = musicbrainz, public IMMUTABLE PARALLEL SAFE STRICT; ----------------------------------------------------------------------- -- Edit data helpers @@ -1817,7 +1817,7 @@ BEGIN END CASE; RETURN ''; END; -$$ LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE STRICT; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public IMMUTABLE PARALLEL SAFE STRICT; ----------------------------------------------------------------------- -- Maintain musicbrainz.artist_release @@ -1868,7 +1868,7 @@ BEGIN $SQL$ USING release_id; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION apply_artist_release_pending_updates() RETURNS trigger AS $$ @@ -1908,7 +1908,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Maintain musicbrainz.artist_release_group @@ -1962,7 +1962,7 @@ BEGIN $SQL$ USING release_group_id; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION apply_artist_release_group_pending_updates() RETURNS trigger AS $$ @@ -2002,7 +2002,7 @@ BEGIN RETURN NULL; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Relationship triggers @@ -2019,7 +2019,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_upd_l_area_area_mirror() RETURNS trigger AS $$ DECLARE @@ -2043,7 +2043,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION a_del_l_area_area_mirror() RETURNS trigger AS $$ DECLARE @@ -2056,7 +2056,7 @@ BEGIN END IF; RETURN NULL; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link() RETURNS trigger AS $$ BEGIN @@ -2069,28 +2069,28 @@ BEGIN -- area_containment. RAISE EXCEPTION 'link rows are immutable'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute rows are immutable'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute_credit() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute_credit rows are immutable'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION b_upd_link_attribute_text_value() RETURNS trigger AS $$ BEGIN -- Refer to b_upd_link. RAISE EXCEPTION 'link_attribute_text_value rows are immutable'; END; -$$ LANGUAGE 'plpgsql' SET search_path = musicbrainz, public; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; ----------------------------------------------------------------------- -- Maintain musicbrainz.area_containment @@ -2131,7 +2131,7 @@ BEGIN $SQL$ USING part_of_area_link_type_id, descendant_area_ids; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- Returns a set of area_containment rows that cover the entire descendant -- hierarchy for parent_area_ids. If NULL is passed, the entire @@ -2168,7 +2168,7 @@ BEGIN $SQL$ USING part_of_area_link_type_id, parent_area_ids; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; CREATE OR REPLACE FUNCTION update_area_containment_mirror( parent_ids INTEGER[], -- entity0 of area-area "part of" @@ -2216,6 +2216,6 @@ BEGIN ) area_hierarchy ORDER BY descendant, parent, depth; END; -$$ LANGUAGE plpgsql; +$$ LANGUAGE plpgsql SET search_path = musicbrainz, public; -- vi: set ts=4 sw=4 et :