[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