[mb-commits] r9870 - in mb_server/trunk/admin/sql: . updates
root at musicbrainz.org
root at musicbrainz.org
Tue Jun 10 23:51:52 UTC 2008
Author: robert
Date: 2008-06-10 23:51:52 +0000 (Tue, 10 Jun 2008)
New Revision: 9870
Added:
mb_server/trunk/admin/sql/updates/20080610-1.sql
mb_server/trunk/admin/sql/updates/20080610-2.sql
Modified:
mb_server/trunk/admin/sql/CreateFunctions.sql
mb_server/trunk/admin/sql/CreateTables.sql
mb_server/trunk/admin/sql/CreateTriggers.sql
mb_server/trunk/admin/sql/DropFunctions.sql
Log:
Add lastupdated timestamp to album, artist, label and track tables. Also, add triggers to keep them up to date.
Now we can support HTTP caching and we can support RSS feeds of most recently changed entities, which will
allow tagger users to intelligently download changed metadata.
Modified: mb_server/trunk/admin/sql/CreateFunctions.sql
===================================================================
--- mb_server/trunk/admin/sql/CreateFunctions.sql 2008-06-10 22:44:29 UTC (rev 9869)
+++ mb_server/trunk/admin/sql/CreateFunctions.sql 2008-06-10 23:51:52 UTC (rev 9870)
@@ -97,27 +97,38 @@
' language 'plpgsql';
--'-----------------------------------------------------------------
+-- Keep lastupdated columns up to date
+--'-----------------------------------------------------------------
+
+create or replace function b_iu_update_lastmodified () returns TRIGGER as '
+begin
+ NEW.lastupdate = now();
+ return NEW;
+end;
+' language 'plpgsql';
+
+--'-----------------------------------------------------------------
-- Keep rows in albummeta in sync with album
--'-----------------------------------------------------------------
-create or replace function insert_album_meta () returns TRIGGER as '
+create or replace function insert_album_meta () returns TRIGGER as $$
begin
insert into albummeta (id, tracks, discids, puids) values (NEW.id, 0, 0, 0);
- insert into album_amazon_asin (album, lastupdate) values (NEW.id, \'1970-01-01 00:00:00\');
+ insert into album_amazon_asin (album, lastupdate) values (NEW.id, '1970-01-01 00:00:00');
return NEW;
end;
-' language 'plpgsql';
+$$ language 'plpgsql';
-create or replace function update_album_meta () returns TRIGGER as '
+create or replace function update_album_meta () returns TRIGGER as $$
begin
if NEW.name != OLD.name
then
- update album_amazon_asin set lastupdate = \'1970-01-01 00:00:00\' where album = NEW.id;
+ update album_amazon_asin set lastupdate = '1970-01-01 00:00:00' where album = NEW.id;
end if;
return NULL;
end;
-' language 'plpgsql';
+$$ language 'plpgsql';
create or replace function delete_album_meta () returns TRIGGER as '
begin
Modified: mb_server/trunk/admin/sql/CreateTables.sql
===================================================================
--- mb_server/trunk/admin/sql/CreateTables.sql 2008-06-10 22:44:29 UTC (rev 9869)
+++ mb_server/trunk/admin/sql/CreateTables.sql 2008-06-10 23:51:52 UTC (rev 9870)
@@ -29,7 +29,8 @@
script INTEGER, -- references script
modpending_lang INTEGER,
quality SMALLINT DEFAULT -1,
- modpending_qual INTEGER DEFAULT 0
+ modpending_qual INTEGER DEFAULT 0,
+ lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE album_amazon_asin
@@ -100,7 +101,8 @@
enddate CHAR(10),
type SMALLINT,
quality SMALLINT DEFAULT -1,
- modpending_qual INTEGER DEFAULT 0
+ modpending_qual INTEGER DEFAULT 0,
+ lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE artistalias
@@ -225,7 +227,8 @@
resolution VARCHAR(64),
begindate CHAR(10),
enddate CHAR(10),
- type SMALLINT
+ type SMALLINT,
+ lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE label_tag
@@ -924,7 +927,8 @@
gid CHAR(36) NOT NULL,
length INTEGER DEFAULT 0,
year INTEGER DEFAULT 0,
- modpending INTEGER DEFAULT 0
+ modpending INTEGER DEFAULT 0,
+ lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE track_tag
Modified: mb_server/trunk/admin/sql/CreateTriggers.sql
===================================================================
--- mb_server/trunk/admin/sql/CreateTriggers.sql 2008-06-10 22:44:29 UTC (rev 9869)
+++ mb_server/trunk/admin/sql/CreateTriggers.sql 2008-06-10 23:51:52 UTC (rev 9870)
@@ -1,5 +1,8 @@
\set ON_ERROR_STOP 1
+CREATE TRIGGER b_iu_album BEFORE INSERT OR DELETE OR UPDATE ON album
+ FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
+
-- These XXXX_album_meta() functions should really have the _meta dropped
CREATE TRIGGER a_ins_album AFTER INSERT ON album
FOR EACH ROW EXECUTE PROCEDURE insert_album_meta();
@@ -22,6 +25,9 @@
CREATE TRIGGER a_del_album_cdtoc AFTER DELETE ON album_cdtoc
FOR EACH ROW EXECUTE PROCEDURE a_del_album_cdtoc();
+CREATE TRIGGER b_iu_artist BEFORE INSERT OR DELETE OR UPDATE ON artist
+ FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
+
CREATE TRIGGER a_upd_moderation_open AFTER UPDATE ON moderation_open
FOR EACH ROW EXECUTE PROCEDURE after_update_moderation_open();
@@ -41,6 +47,9 @@
CREATE TRIGGER a_del_album_amazon_asin AFTER DELETE ON album_amazon_asin
FOR EACH ROW EXECUTE PROCEDURE a_del_album_amazon_asin();
+create trigger b_iu_label BEFORE INSERT OR DELETE OR UPDATE ON label
+ FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
+
CREATE TRIGGER a_ins_puidjoin AFTER INSERT ON puidjoin
FOR EACH ROW EXECUTE PROCEDURE a_ins_puidjoin();
CREATE TRIGGER a_del_puidjoin AFTER DELETE ON puidjoin
@@ -61,6 +70,9 @@
CREATE TRIGGER a_del_release_tag AFTER DELETE ON release_tag
FOR EACH ROW EXECUTE PROCEDURE a_del_tag();
+CREATE TRIGGER b_iu_track BEFORE INSERT OR DELETE OR UPDATE ON track
+ FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();
+
CREATE TRIGGER a_ins_track_tag AFTER INSERT ON track_tag
FOR EACH ROW EXECUTE PROCEDURE a_ins_tag();
CREATE TRIGGER a_del_track_tag AFTER DELETE ON track_tag
Modified: mb_server/trunk/admin/sql/DropFunctions.sql
===================================================================
--- mb_server/trunk/admin/sql/DropFunctions.sql 2008-06-10 22:44:29 UTC (rev 9869)
+++ mb_server/trunk/admin/sql/DropFunctions.sql 2008-06-10 23:51:52 UTC (rev 9870)
@@ -24,5 +24,6 @@
DROP FUNCTION a_ins_puidjoin();
DROP FUNCTION a_upd_puidjoin();
DROP FUNCTION a_del_puidjoin();
+DROP FUNCTION b_iu_update_lastmodified();
-- vi: set ts=4 sw=4 et :
Added: mb_server/trunk/admin/sql/updates/20080610-1.sql
Added: mb_server/trunk/admin/sql/updates/20080610-2.sql
More information about the MusicBrainz-commits
mailing list