merge from trunk
authorTony Mack <tmack@cs.princeton.edu>
Tue, 13 Nov 2007 23:13:28 +0000 (23:13 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Tue, 13 Nov 2007 23:13:28 +0000 (23:13 +0000)
migrations/009-down-pcu-types.sql [new file with mode: 0644]
migrations/009-up-pcu-types.sql [new file with mode: 0644]

diff --git a/migrations/009-down-pcu-types.sql b/migrations/009-down-pcu-types.sql
new file mode 100644 (file)
index 0000000..1dbe9d2
--- /dev/null
@@ -0,0 +1,13 @@
+--
+-- 009 revert
+--
+
+DROP VIEW view_pcu_types;
+
+DROP VIEW pcu_type_ports;
+
+DROP TABLE pcu_type_port;
+
+DROP TABLE pcu_types; 
+
+UPDATE plc_db_version SET subversion = 7;
diff --git a/migrations/009-up-pcu-types.sql b/migrations/009-up-pcu-types.sql
new file mode 100644 (file)
index 0000000..c7dd7b6
--- /dev/null
@@ -0,0 +1,41 @@
+--
+-- Tony Mack - PlanetLab
+--
+-- migration 009
+--
+-- purpose: provide a means for storing details about pcu models
+--
+--
+
+CREATE TABLE pcu_types (
+    pcu_type_id serial PRIMARY KEY,    
+    model text NOT NULL,               -- PCU model name
+    name text                          -- Full PCU model name
+) WITH OIDS;
+CREATE INDEX pcu_types_model_idx ON pcu_types (model);
+
+CREATE TABLE pcu_protocol_type (
+    pcu_protocol_type_id serial PRIMARY KEY,   
+    pcu_type_id integer REFERENCES pcu_types NOT NULL,         -- PCU type identifier
+    port integer NOT NULL,                             -- PCU port
+    protocol text NOT NULL,                            -- Protocol                 
+    supported boolean NOT NULL DEFAULT True            -- Does PLC support
+) WITH OIDS;
+CREATE INDEX pcu_protocol_type_pcu_type_id ON pcu_protocol_type (pcu_type_id);
+  
+
+CREATE OR REPLACE VIEW pcu_protocol_types AS
+SELECT pcu_type_id,
+array_accum(pcu_protocol_type_id) as pcu_protocol_type_ids
+FROM pcu_protocol_type
+GROUP BY pcu_type_id;
+    
+CREATE OR REPLACE VIEW view_pcu_types AS
+SELECT
+pcu_types.pcu_type_id,
+pcu_types.model,
+pcu_types.name,
+COALESCE((SELECT pcu_protocol_type_ids FROM pcu_protocol_types WHERE pcu_protocol_types.pcu_type_id = pcu_types.pcu_type_id), '{}') AS pcu_protocol_type_ids 
+FROM pcu_types; 
+
+UPDATE plc_db_version SET subversion = 9;