You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by fa...@apache.org on 2011/02/14 21:11:08 UTC
svn commit: r1070635 - /incubator/vcl/trunk/mysql/update-2.2.1.sql
Author: fapeeler
Date: Mon Feb 14 20:11:08 2011
New Revision: 1070635
URL: http://svn.apache.org/viewvc?rev=1070635&view=rev
Log:
VCL-434
Initial commit of sql file to be used to update an existing vcl database.
Added:
incubator/vcl/trunk/mysql/update-2.2.1.sql
Added: incubator/vcl/trunk/mysql/update-2.2.1.sql
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/mysql/update-2.2.1.sql?rev=1070635&view=auto
==============================================================================
--- incubator/vcl/trunk/mysql/update-2.2.1.sql (added)
+++ incubator/vcl/trunk/mysql/update-2.2.1.sql Mon Feb 14 20:11:08 2011
@@ -0,0 +1,250 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+-- Apache VCL version 2.2 to 2.2.1 database schema changes
+
+-- --------------------------------------------------------
+
+DELIMITER $$
+
+/*
+Procedure : AddColumnIfNotExists
+Parameters : tableName, columnName, columnDefinition
+Description : Adds a column to an existing table if a column with the same name
+ does not already exist.
+*/
+
+DROP PROCEDURE IF EXISTS `AddColumnIfNotExists`$$
+CREATE PROCEDURE `AddColumnIfNotExists`(
+ IN tableName tinytext,
+ IN columnName tinytext,
+ IN columnDefinition text
+)
+BEGIN
+ IF NOT EXISTS (
+ SELECT * FROM information_schema.COLUMNS WHERE
+ TABLE_SCHEMA=Database()
+ AND COLUMN_NAME=columnName
+ AND TABLE_NAME=tableName
+ )
+ THEN
+ SET @statement_array = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' ADD COLUMN ', columnName, ' ', columnDefinition);
+ PREPARE statement_string FROM @statement_array;
+ EXECUTE statement_string;
+ END IF;
+END$$
+
+-- --------------------------------------------------------
+
+/*
+Procedure : DropColumnIfExists
+Parameters : tableName, columnName
+Description : Drops a column from an existing table.
+*/
+
+DROP PROCEDURE IF EXISTS `DropColumnIfExists`$$
+CREATE PROCEDURE `DropColumnIfExists`(
+ IN tableName tinytext,
+ IN columnName tinytext
+)
+BEGIN
+ IF EXISTS (
+ SELECT * FROM information_schema.COLUMNS WHERE
+ TABLE_SCHEMA=Database()
+ AND COLUMN_NAME=columnName
+ AND TABLE_NAME=tableName
+ )
+ THEN
+ SET @statement_array = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' DROP COLUMN ', columnName);
+ PREPARE statement_string FROM @statement_array;
+ EXECUTE statement_string;
+ END IF;
+END$$
+
+-- --------------------------------------------------------
+
+/*
+Procedure : AddIndexIfNotExists
+Parameters : tableName, columnName
+Description : Adds an index to an existing table if an index for the column does
+ not already exist.
+*/
+
+DROP PROCEDURE IF EXISTS `AddIndexIfNotExists`$$
+CREATE PROCEDURE `AddIndexIfNotExists`(
+ IN tableName tinytext,
+ IN columnName tinytext
+)
+BEGIN
+ IF NOT EXISTS (
+ SELECT * FROM information_schema.STATISTICS WHERE
+ TABLE_SCHEMA=Database()
+ AND TABLE_NAME=tableName
+ AND COLUMN_NAME=columnName
+ )
+ THEN
+ SET @statement_array = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' ADD INDEX (', columnName, ')');
+ PREPARE statement_string FROM @statement_array;
+ EXECUTE statement_string;
+ END IF;
+END$$
+
+-- --------------------------------------------------------
+
+/*
+Procedure : AddUniqueIndex
+Parameters : tableName, columnName
+Description : Adds a unique index to an existing table if a primary or unique
+ index does not already exist for the column. Any non-unique
+ indices are dropped before the unique index is added.
+*/
+
+DROP PROCEDURE IF EXISTS `AddUniqueIndex`$$
+CREATE PROCEDURE `AddUniqueIndex`(
+ IN tableName tinytext,
+ IN columnName tinytext
+)
+BEGIN
+ DECLARE done INT DEFAULT 0;
+ DECLARE nonunique_index_name CHAR(16);
+
+ DECLARE select_nonunique_index_names CURSOR FOR
+ SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE
+ TABLE_SCHEMA = Database()
+ AND TABLE_NAME = tableName
+ AND COLUMN_NAME = columnName
+ AND NON_UNIQUE = 1;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
+
+ OPEN select_nonunique_index_names;
+
+ REPEAT
+ FETCH select_nonunique_index_names INTO nonunique_index_name;
+ IF NOT done THEN
+ SET @drop_nonunique_index = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' DROP INDEX ', nonunique_index_name);
+ PREPARE drop_nonunique_index FROM @drop_nonunique_index;
+ EXECUTE drop_nonunique_index;
+ END IF;
+ UNTIL done END REPEAT;
+
+ CLOSE select_nonunique_index_names;
+
+ IF NOT EXISTS (
+ SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE
+ TABLE_SCHEMA = Database()
+ AND TABLE_NAME = tableName
+ AND COLUMN_NAME = columnName
+ AND NON_UNIQUE = 0
+ )
+ THEN
+ SET @add_unique_index = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' ADD UNIQUE (', columnName, ')');
+ PREPARE add_unique_index FROM @add_unique_index;
+ EXECUTE add_unique_index;
+ END IF;
+END$$
+
+-- --------------------------------------------------------
+
+/*
+Procedure : AddConstraintIfNotExists
+Parameters : tableName, columnName, referencedTableName, referencedColumnName
+Description : Adds a foreign key constraint to an existing table if the
+ constraint does not already exist.
+*/
+
+DROP PROCEDURE IF EXISTS `AddConstraintIfNotExists`$$
+CREATE PROCEDURE `AddConstraintIfNotExists`(
+ IN tableName tinytext,
+ IN columnName tinytext,
+ IN referencedTableName tinytext,
+ IN referencedColumnName tinytext
+)
+BEGIN
+ IF NOT EXISTS (
+ SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE
+ TABLE_SCHEMA=Database()
+ AND TABLE_NAME=tableName
+ AND COLUMN_NAME=columnName
+ AND REFERENCED_TABLE_NAME=referencedTableName
+ AND REFERENCED_COLUMN_NAME=referencedColumnName
+ )
+ THEN
+ SET @statement_array = CONCAT('ALTER TABLE ', Database(), '.', tableName, ' ADD FOREIGN KEY (', columnName, ') REFERENCES ', Database(), '.', referencedTableName, ' (', referencedColumnName, ') ON UPDATE CASCADE');
+ PREPARE statement_string FROM @statement_array;
+ EXECUTE statement_string;
+ END IF;
+END$$
+
+DELIMITER ;
+
+
+-- --------------------------------------------------------
+
+--
+-- Create for table `provisioningOSinstalltype`
+--
+
+CREATE TABLE IF NOT EXISTS `provisioningOSinstalltype` (
+ `provisioningid` smallint(5) unsigned NOT NULL,
+ `OSinstalltypeid` tinyint(3) unsigned NOT NULL,
+ PRIMARY KEY (`provisioningid`,`OSinstalltypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- --------------------------------------------------------
+
+--
+-- Inserts for table `module`
+--
+
+INSERT IGNORE INTO `module` (`name`, `prettyname`, `description`, `perlpackage`) VALUES ('provisioning_vbox', 'Virtual Box Provisioning Module', '', 'VCL::Module::Provisioning::vbox');
+
+-- --------------------------------------------------------
+
+--
+-- Inserts for table `provisioning`
+--
+
+INSERT IGNORE INTO `provisioning` (`name`, `prettyname`, `moduleid`) VALUES ('vbox', 'Virtual Box', (SELECT `id` FROM `module` WHERE `name` LIKE 'provisioning_vbox'));
+
+-- --------------------------------------------------------
+
+--
+-- Inserts for table `OSinstalltype`
+--
+
+INSERT IGNORE INTO `OSinstalltype` (`name`) VALUES ('vbox');
+
+-- --------------------------------------------------------
+-- --------------------------------------------------------
+
+--
+-- Inserts for table `provisioningOSinstalltype`
+--
+
+INSERT IGNORE INTO `provisioningOSinstalltype` (`provisioningid`, `OSinstalltypeid`) VALUES
+((SELECT `id` FROM `provisioning` WHERE `name` LIKE 'vbox' ), (SELECT `id` FROM `OSinstalltype` WHERE `name` LIKE 'vbox'`));
+
+-- --------------------------------------------------------
+--
+-- Remove Procedures
+--
+
+DROP PROCEDURE IF EXISTS `AddColumnIfNotExists`;
+DROP PROCEDURE IF EXISTS `DropColumnIfExists`;
+DROP PROCEDURE IF EXISTS `AddIndexIfNotExists`;
+DROP PROCEDURE IF EXISTS `AddConstraintIfNotExists`;