From: Marcin Siodelski Date: Thu, 13 Sep 2018 06:42:03 +0000 (+0200) Subject: [#89,!22] Modified MySQL 6->7 upgrade script according to review. X-Git-Tag: 134-bugs--xcode-10_base~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4c4a6769df694ed4f3fde95bc725be79290877b0;p=thirdparty%2Fkea.git [#89,!22] Modified MySQL 6->7 upgrade script according to review. --- diff --git a/src/share/database/scripts/mysql/dhcpdb_create.mysql b/src/share/database/scripts/mysql/dhcpdb_create.mysql index f97c035057..63c30f9c3a 100644 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@ -953,8 +953,7 @@ CREATE TABLE IF NOT EXISTS dhcp4_subnet ( user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, PRIMARY KEY (subnet_id), - UNIQUE KEY subnet_prefix_UNIQUE (subnet_id), - KEY subnet4_subnet_prefix (subnet_prefix), + UNIQUE KEY subnet4_subnet_prefix (subnet_prefix), KEY fk_dhcp4_subnet_shared_network (shared_network_name), KEY key_dhcp4_subnet_modification_ts (modification_ts), CONSTRAINT fk_dhcp4_subnet_shared_network FOREIGN KEY (shared_network_name) @@ -1190,7 +1189,7 @@ CREATE TABLE dhcp6_subnet ( user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, PRIMARY KEY (subnet_id), - UNIQUE KEY subnet_prefix_UNIQUE (subnet_id), + UNIQUE KEY subnet_prefix_UNIQUE (subnet_prefix), KEY subnet6_subnet_prefix (subnet_prefix), KEY fk_dhcp6_subnet_shared_network (shared_network_name), KEY key_dhcp6_subnet_modification_ts (modification_ts), diff --git a/src/share/database/scripts/mysql/upgrade_6.0_to_7.0.sh.in b/src/share/database/scripts/mysql/upgrade_6.0_to_7.0.sh.in index bde8cd7c88..b0d522b8e9 100644 --- a/src/share/database/scripts/mysql/upgrade_6.0_to_7.0.sh.in +++ b/src/share/database/scripts/mysql/upgrade_6.0_to_7.0.sh.in @@ -129,6 +129,7 @@ INSERT INTO modification(id, modification_type) VALUES(2, "delete"); # Create table dhcp4_server +# CREATE TABLE IF NOT EXISTS dhcp4_server ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, tag VARCHAR(256) NOT NULL, @@ -136,19 +137,18 @@ CREATE TABLE IF NOT EXISTS dhcp4_server ( modification_ts TIMESTAMP NOT NULL, PRIMARY KEY (id), UNIQUE KEY dhcp4_server_tag_UNIQUE (tag), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp4_server_modification_ts (modification_ts) ) ENGINE=InnoDB; # Create table dhcp4_audit +# CREATE TABLE IF NOT EXISTS dhcp4_audit ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, object_type VARCHAR(256) NOT NULL, - object_id VARCHAR(128) NOT NULL, + object_id BIGINT(2) UNSIGNED NOT NULL, modification_type TINYINT(1) NOT NULL, modification_ts TIMESTAMP NOT NULL, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp4_audit_by_modification_ts (modification_ts), KEY fk_dhcp4_audit_modification_type (modification_type), CONSTRAINT fk_dhcp4_audit_modification_type FOREIGN KEY (modification_type) @@ -157,18 +157,20 @@ CREATE TABLE IF NOT EXISTS dhcp4_audit ( ) ENGINE=InnoDB; # Create table dhcp4_global_parameter +# CREATE TABLE IF NOT EXISTS dhcp4_global_parameter ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, value LONGTEXT NOT NULL, modification_ts timestamp NOT NULL, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp4_global_parameter_modification_ts (modification_ts), KEY key_dhcp4_global_parameter_name (name) ) ENGINE=InnoDB; # Create table dhcp4_global_parameter_server +# M-to-M cross-reference between global parameters and servers +# CREATE TABLE IF NOT EXISTS dhcp4_global_parameter_server ( parameter_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -185,6 +187,7 @@ CREATE TABLE IF NOT EXISTS dhcp4_global_parameter_server ( ) ENGINE=InnoDB; # Create table dhcp4_option_def +# CREATE TABLE IF NOT EXISTS dhcp4_option_def ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, code TINYINT(3) UNSIGNED NOT NULL, @@ -195,12 +198,13 @@ CREATE TABLE IF NOT EXISTS dhcp4_option_def ( record_types VARCHAR(512) DEFAULT NULL, user_context LONGTEXT, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp4_option_def_modification_ts (modification_ts), KEY key_dhcp4_option_def_code_space (code, space) ) ENGINE=InnoDB; # Create table dhcp4_option_def_server +# M-to-M cross-reference between option definitions and servers +# CREATE TABLE IF NOT EXISTS dhcp4_option_def_server ( option_def_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -216,7 +220,9 @@ CREATE TABLE IF NOT EXISTS dhcp4_option_def_server ( ) ENGINE=InnoDB; # Create table dhcp4_shared_network +# CREATE TABLE IF NOT EXISTS dhcp4_shared_network ( + id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, client_class VARCHAR(128) DEFAULT NULL, interface VARCHAR(128) DEFAULT NULL, @@ -230,27 +236,32 @@ CREATE TABLE IF NOT EXISTS dhcp4_shared_network ( server_hostname VARCHAR(512) DEFAULT NULL, user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, - PRIMARY KEY (name), + PRIMARY KEY (id), + UNIQUE KEY name_UNIQUE (name), KEY key_dhcp4_shared_network_modification_ts (modification_ts) ) ENGINE=InnoDB; # Create table dhcp4_shared_network_server +# M-to-M cross-reference between shared networks and servers +# CREATE TABLE IF NOT EXISTS dhcp4_shared_network_server ( - shared_network_name VARCHAR(128) NOT NULL, + shared_network_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, modification_ts TIMESTAMP NOT NULL, - PRIMARY KEY (shared_network_name, server_id), + PRIMARY KEY (shared_network_id, server_id), KEY key_dhcp4_shared_network_server_modification_ts (modification_ts), - KEY fk_dhcp4_shared_network_server_server_id_idx (server_id), + KEY fk_dhcp4_shared_network_server_server_id (server_id), CONSTRAINT fk_dhcp4_shared_network_server_server_id FOREIGN KEY (server_id) REFERENCES dhcp4_server (id) ON DELETE NO ACTION ON UPDATE NO ACTION, - CONSTRAINT fk_dhcp4_shared_network_server_shared_network_name FOREIGN KEY (shared_network_name) - REFERENCES dhcp4_shared_network (name) ON DELETE NO ACTION ON UPDATE NO ACTION + CONSTRAINT fk_dhcp4_shared_network_server_shared_network_id FOREIGN KEY (shared_network_id) + REFERENCES dhcp4_shared_network (id) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB; # Create table dhcp4_subnet +# CREATE TABLE IF NOT EXISTS dhcp4_subnet ( + subnet_id INT(10) UNSIGNED NOT NULL, subnet_prefix VARCHAR(32) NOT NULL, 4o6_interface VARCHAR(128) DEFAULT NULL, 4o6_interface_id VARCHAR(128) DEFAULT NULL, @@ -268,13 +279,10 @@ CREATE TABLE IF NOT EXISTS dhcp4_subnet ( reservation_mode TINYINT(3) NOT NULL DEFAULT '3', server_hostname VARCHAR(512) DEFAULT NULL, shared_network_name VARCHAR(128) DEFAULT NULL, - subnet_id INT(10) UNSIGNED NOT NULL, user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, PRIMARY KEY (subnet_id), - UNIQUE KEY subnet_id_UNIQUE (subnet_id), - UNIQUE KEY subnet_prefix_UNIQUE (subnet_id), - KEY subnet4_subnet_prefix (subnet_prefix), + UNIQUE KEY subnet4_subnet_prefix (subnet_prefix), KEY fk_dhcp4_subnet_shared_network (shared_network_name), KEY key_dhcp4_subnet_modification_ts (modification_ts), CONSTRAINT fk_dhcp4_subnet_shared_network FOREIGN KEY (shared_network_name) @@ -283,7 +291,7 @@ CREATE TABLE IF NOT EXISTS dhcp4_subnet ( ) ENGINE=InnoDB; # Create table dhcp4_pool --- ----------------------------------------------------- +# CREATE TABLE IF NOT EXISTS dhcp4_pool ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, start_address INT(10) NOT NULL, @@ -299,6 +307,8 @@ CREATE TABLE IF NOT EXISTS dhcp4_pool ( ) ENGINE=InnoDB; # Create table dhcp4_subnet_server +# M-to-M cross-reference between subnets and servers +# CREATE TABLE IF NOT EXISTS dhcp4_subnet_server ( subnet_id INT(10) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -316,6 +326,7 @@ CREATE TABLE IF NOT EXISTS dhcp4_subnet_server ( # Modify the primary key to BINGINT as other tables have. +# ALTER TABLE dhcp4_options MODIFY option_id BIGINT(20) UNSIGNED NOT NULL; # Add conifguration backend specific columns. @@ -325,6 +336,8 @@ ALTER TABLE dhcp4_options ADD COLUMN modification_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; # Create table dhcp4_options_server +# M-to-M cross-reference between options and servers +# CREATE TABLE IF NOT EXISTS dhcp4_options_server ( option_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -341,6 +354,7 @@ CREATE TABLE IF NOT EXISTS dhcp4_options_server ( ) ENGINE=InnoDB; # Create table dhcp6_server +# CREATE TABLE IF NOT EXISTS dhcp6_server ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, tag VARCHAR(256) NOT NULL, @@ -348,19 +362,18 @@ CREATE TABLE IF NOT EXISTS dhcp6_server ( modification_ts TIMESTAMP NOT NULL, PRIMARY KEY (id), UNIQUE KEY dhcp6_server_tag_UNIQUE (tag), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp6_server_modification_ts (modification_ts) ) ENGINE=InnoDB; # Create table dhcp6_audit +# CREATE TABLE IF NOT EXISTS dhcp6_audit ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, object_type VARCHAR(256) NOT NULL, - object_id VARCHAR(128) NOT NULL, + object_id BIGINT(20) UNSIGNED NOT NULL, modification_type TINYINT(1) NOT NULL, modification_ts TIMESTAMP NOT NULL, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp6_audit_modification_ts (modification_ts), KEY fk_dhcp6_audit_modification_type (modification_type), CONSTRAINT fk_dhcp6_audit_modification_type FOREIGN KEY (modification_type) @@ -369,18 +382,20 @@ CREATE TABLE IF NOT EXISTS dhcp6_audit ( ) ENGINE=InnoDB; # Create table dhcp6_global_parameter +# CREATE TABLE IF NOT EXISTS dhcp6_global_parameter ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, value LONGTEXT NOT NULL, modification_ts timestamp NOT NULL, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp6_global_parameter_modification_ts (modification_ts), KEY key_dhcp6_global_parameter_name (name) ) ENGINE=InnoDB; # Create table dhcp6_global_parameter_server +# M-to-M cross-reference between global parameters and servers +# CREATE TABLE IF NOT EXISTS dhcp6_global_parameter_server ( parameter_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -397,6 +412,7 @@ CREATE TABLE IF NOT EXISTS dhcp6_global_parameter_server ( ) ENGINE=InnoDB; # Create table dhcp6_option_def +# CREATE TABLE IF NOT EXISTS dhcp6_option_def ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, code TINYINT(3) UNSIGNED NOT NULL, @@ -407,12 +423,13 @@ CREATE TABLE IF NOT EXISTS dhcp6_option_def ( record_types VARCHAR(512) DEFAULT NULL, user_context LONGTEXT, PRIMARY KEY (id), - UNIQUE KEY id_UNIQUE (id), KEY key_dhcp6_option_def_modification_ts (modification_ts), KEY key_dhcp6_option_def_code_space (code, space) ) ENGINE=InnoDB; # Create table dhcp6_option_def_server +# M-to-M cross-reference between option definitions and servers +# CREATE TABLE IF NOT EXISTS dhcp6_option_def_server ( option_def_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -428,7 +445,9 @@ CREATE TABLE IF NOT EXISTS dhcp6_option_def_server ( ) ENGINE=InnoDB; # Create table dhcp6_shared_network +# CREATE TABLE dhcp6_shared_network ( + id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, client_class VARCHAR(128) DEFAULT NULL, interface VARCHAR(128) DEFAULT NULL, @@ -443,28 +462,33 @@ CREATE TABLE dhcp6_shared_network ( server_hostname VARCHAR(512) DEFAULT NULL, user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, - PRIMARY KEY (name), + PRIMARY KEY (id), + UNIQUE KEY name_UNIQUE (name), KEY key_dhcp6_shared_network_modification_ts (modification_ts) ) ENGINE=InnoDB; # Create table dhcp6_shared_network_server +# M-to-M cross-reference between shared networks and servers +# CREATE TABLE IF NOT EXISTS dhcp6_shared_network_server ( - shared_network_name VARCHAR(128) NOT NULL, + shared_network_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, modification_ts TIMESTAMP NOT NULL, KEY key_dhcp6_shared_network_server_modification_ts (modification_ts), KEY fk_dhcp6_shared_network_server_server_id_idx (server_id), - KEY fk_dhcp6_shared_network_server_shared_network_name (shared_network_name), + KEY fk_dhcp6_shared_network_server_shared_network_id (shared_network_id), CONSTRAINT fk_dhcp6_shared_network_server_server_id FOREIGN KEY (server_id) REFERENCES dhcp6_server (id) ON DELETE NO ACTION ON UPDATE NO ACTION, - CONSTRAINT fk_dhcp6_shared_network_server_shared_network_name FOREIGN KEY (shared_network_name) - REFERENCES dhcp6_shared_network (name) + CONSTRAINT fk_dhcp6_shared_network_server_shared_network_id FOREIGN KEY (shared_network_id) + REFERENCES dhcp6_shared_network (id) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB; # Create table dhcp6_subnet +# CREATE TABLE dhcp6_subnet ( + subnet_id int(10) UNSIGNED NOT NULL, subnet_prefix VARCHAR(64) NOT NULL, client_class VARCHAR(128) DEFAULT NULL, interface VARCHAR(128) DEFAULT NULL, @@ -477,13 +501,10 @@ CREATE TABLE dhcp6_subnet ( require_client_classes LONGTEXT, reservation_mode TINYINT(3) NOT NULL DEFAULT '3', shared_network_name VARCHAR(128) DEFAULT NULL, - subnet_id int(10) UNSIGNED NOT NULL, user_context LONGTEXT, valid_lifetime INT(10) DEFAULT NULL, PRIMARY KEY (subnet_id), - UNIQUE KEY subnet_id_UNIQUE (subnet_id), - UNIQUE KEY subnet_prefix_UNIQUE (subnet_id), - KEY subnet6_subnet_prefix (subnet_prefix), + UNIQUE KEY subnet6_subnet_prefix (subnet_prefix), KEY fk_dhcp6_subnet_shared_network (shared_network_name), KEY key_dhcp6_subnet_modification_ts (modification_ts), CONSTRAINT fk_dhcp6_subnet_shared_network FOREIGN KEY (shared_network_name) @@ -492,6 +513,8 @@ CREATE TABLE dhcp6_subnet ( ) ENGINE=InnoDB; # Create table dhcp6_subnet_server +# M-to-M cross-reference between subnets and servers +# CREATE TABLE dhcp6_subnet_server ( subnet_id INT(10) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL, @@ -508,6 +531,7 @@ CREATE TABLE dhcp6_subnet_server ( ) ENGINE=InnoDB; # Create table dhcp6_pd_pool +# CREATE TABLE IF NOT EXISTS dhcp6_pd_pool ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, prefix VARCHAR(45) NOT NULL, @@ -523,6 +547,7 @@ CREATE TABLE IF NOT EXISTS dhcp6_pd_pool ( ) ENGINE=InnoDB; # Create table dhcp6_pool +# CREATE TABLE IF NOT EXISTS dhcp6_pool ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, start_address VARCHAR(45) NOT NULL, @@ -547,6 +572,8 @@ ALTER TABLE dhcp6_options ADD COLUMN modification_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; # Create table dhcp6_options_server +# M-to-M cross-reference between options and servers +# CREATE TABLE IF NOT EXISTS dhcp6_options_server ( option_id BIGINT(20) UNSIGNED NOT NULL, server_id BIGINT(20) UNSIGNED NOT NULL,