[mb-commits] r9871 - in mb_server/trunk/admin/sql: . updates
root at musicbrainz.org
root at musicbrainz.org
Fri Jun 13 03:42:44 UTC 2008
Author: robert
Date: 2008-06-13 03:42:44 +0000 (Fri, 13 Jun 2008)
New Revision: 9871
Modified:
mb_server/trunk/admin/sql/CreateFunctions.sql
mb_server/trunk/admin/sql/DropTriggers.sql
mb_server/trunk/admin/sql/updates/20080610-2.sql
Log:
Update lastmodfied columns in:
album when release events for the albums are added/removed
album when tracks are updated
album when tracks are added/removed from albums
artist when tracks are updated
artist when releases are updated
This way changes bubble up to the top and we can see changes to tracks reflected in the artist lastupdate timestamp
Modified: mb_server/trunk/admin/sql/CreateFunctions.sql
===================================================================
--- mb_server/trunk/admin/sql/CreateFunctions.sql 2008-06-10 23:51:52 UTC (rev 9870)
+++ mb_server/trunk/admin/sql/CreateFunctions.sql 2008-06-13 03:42:44 UTC (rev 9871)
@@ -102,7 +102,20 @@
create or replace function b_iu_update_lastmodified () returns TRIGGER as '
begin
- NEW.lastupdate = now();
+ NEW.lastupdate = now();
+ IF (TG_RELNAME = ''track'')
+ THEN
+ -- update the releases
+ UPDATE album SET lastupdate = NOW() FROM albumjoin WHERE NEW.id = albumjoin.track and albumjoin.album = album.id;
+ END IF;
+ IF (TG_RELNAME = ''album'')
+ THEN
+ -- update the artist
+ IF (NEW.artist != 1)
+ THEN
+ UPDATE artist SET lastupdate = NOW() WHERE artist.id = NEW.artist;
+ END IF;
+ END IF;
return NEW;
end;
' language 'plpgsql';
@@ -150,6 +163,9 @@
puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track)
WHERE id = NEW.album;
+ -- When a track is added to an album, update the albums lastupdate
+ UPDATE album SET lastupdate = NOW() WHERE album.id = NEW.album;
+
return NULL;
end;
' language 'plpgsql';
@@ -171,20 +187,26 @@
puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track)
WHERE id = NEW.album;
+ -- When a track is added to an album, update the albums lastupdate
+ UPDATE album SET lastupdate = NOW() WHERE album.id = NEW.album;
+
return NULL;
end;
' language 'plpgsql';
--'--
-create or replace function a_del_albumjoin () returns trigger as '
+create or replace function a_del_albumjoin () returns trigger as $$
begin
UPDATE albummeta
SET tracks = tracks - 1,
puids = puids - (SELECT COUNT(*) FROM puidjoin WHERE track = OLD.track)
WHERE id = OLD.album;
+ -- When a track is removed from an album, update the albums lastupdate
+ UPDATE album SET lastupdate = NOW() WHERE album.id = OLD.album;
+
return NULL;
end;
-' language 'plpgsql';
+$$ language 'plpgsql';
--'-----------------------------------------------------------------
-- Changes to album_cdtoc could cause changes to albummeta.discids
@@ -363,6 +385,7 @@
CREATE OR REPLACE FUNCTION a_ins_release () RETURNS TRIGGER AS '
BEGIN
EXECUTE set_album_firstreleasedate(NEW.album);
+ UPDATE album SET lastupdate = NOW() WHERE id = NEW.album;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
@@ -374,6 +397,7 @@
THEN
EXECUTE set_album_firstreleasedate(OLD.album);
END IF;
+ UPDATE album SET lastupdate = NOW() WHERE id = NEW.album;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
@@ -381,6 +405,7 @@
CREATE OR REPLACE FUNCTION a_del_release () RETURNS TRIGGER AS '
BEGIN
EXECUTE set_album_firstreleasedate(OLD.album);
+ UPDATE album SET lastupdate = NOW() WHERE id = OLD.album;
RETURN OLD;
END;
' LANGUAGE 'plpgsql';
Modified: mb_server/trunk/admin/sql/DropTriggers.sql
===================================================================
--- mb_server/trunk/admin/sql/DropTriggers.sql 2008-06-10 23:51:52 UTC (rev 9870)
+++ mb_server/trunk/admin/sql/DropTriggers.sql 2008-06-13 03:42:44 UTC (rev 9871)
@@ -31,5 +31,9 @@
DROP TRIGGER a_del_track_tag ON track_tag;
DROP TRIGGER a_ins_label_tag ON label_tag;
DROP TRIGGER a_del_label_tag ON label_tag;
+DROP TRIGGER b_iu_artist ON artist;
+DROP TRIGGER b_iu_album ON album;
+DROP TRIGGER b_iu_track ON track;
+DROP TRIGGER b_iu_label ON label;
-- vi: set ts=4 sw=4 et :
Modified: mb_server/trunk/admin/sql/updates/20080610-2.sql
===================================================================
--- mb_server/trunk/admin/sql/updates/20080610-2.sql 2008-06-10 23:51:52 UTC (rev 9870)
+++ mb_server/trunk/admin/sql/updates/20080610-2.sql 2008-06-13 03:42:44 UTC (rev 9871)
@@ -4,22 +4,10 @@
-- IMPORTANT: This script should only be run on non-SLAVE servers
--- Create function to keep lastupdate columns up to date
-create or replace function b_iu_update_lastmodified () returns TRIGGER as '
-begin
- NEW.lastupdate = now();
- return NEW;
-end;
-' language 'plpgsql';
+-- drop triggers
+-- drop functions
+-- create functions
+-- create triggers
--- Create triggers
-create trigger b_iu_artist BEFORE INSERT OR DELETE OR UPDATE ON artist
- FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
-create trigger b_iu_album BEFORE INSERT OR DELETE OR UPDATE ON album
- FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
-create trigger b_iu_label BEFORE INSERT OR DELETE OR UPDATE ON label
- FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
-create trigger b_iu_track BEFORE INSERT OR DELETE OR UPDATE ON track
- FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
-
COMMIT;
+
More information about the MusicBrainz-commits
mailing list