mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-01 06:25:34 +00:00
[#680,!426] Delete embedded options when subnet gets deleted in mysql_cb.
This commit is contained in:
1
src/share/database/scripts/mysql/.gitignore
vendored
1
src/share/database/scripts/mysql/.gitignore
vendored
@@ -9,4 +9,5 @@
|
||||
/upgrade_6.0_to_7.0.sh
|
||||
/upgrade_7.0_to_8.0.sh
|
||||
/upgrade_8.0_to_8.1.sh
|
||||
/upgrade_8.1_to_8.2.sh
|
||||
/wipe_data.sh
|
||||
|
@@ -14,6 +14,7 @@ sqlscripts_DATA += upgrade_5.2_to_6.0.sh
|
||||
sqlscripts_DATA += upgrade_6.0_to_7.0.sh
|
||||
sqlscripts_DATA += upgrade_7.0_to_8.0.sh
|
||||
sqlscripts_DATA += upgrade_8.0_to_8.1.sh
|
||||
sqlscripts_DATA += upgrade_8.1_to_8.2.sh
|
||||
sqlscripts_DATA += wipe_data.sh
|
||||
|
||||
DISTCLEANFILES = upgrade_1.0_to_2.0.sh
|
||||
@@ -26,7 +27,7 @@ DISTCLEANFILES += upgrade_5.1_to_5.2.sh
|
||||
DISTCLEANFILES += upgrade_5.2_to_6.0.sh
|
||||
DISTCLEANFILES += upgrade_6.0_to_7.0.sh
|
||||
DISTCLEANFILES += upgrade_7.0_to_8.0.sh
|
||||
DISTCLEANFILES += upgrade_8.0_to_8.1.sh
|
||||
DISTCLEANFILES += upgrade_8.1_to_8.2.sh
|
||||
DISTCLEANFILES += wipe_data.sh
|
||||
|
||||
EXTRA_DIST = ${sqlscripts_DATA}
|
||||
|
@@ -2377,6 +2377,40 @@ SET version = '8', minor = '1';
|
||||
|
||||
# This line concludes database upgrade to version 8.1.
|
||||
|
||||
# Do not perform cascade deletion of the data in the dhcp4_pool because
|
||||
# the cascade deletion does not execute triggers associated with the table.
|
||||
# Instead we are going to use triggers on the dhcp4_subnet table.
|
||||
ALTER TABLE dhcp4_pool
|
||||
DROP FOREIGN KEY fk_dhcp4_pool_subnet_id;
|
||||
|
||||
ALTER TABLE dhcp4_pool
|
||||
ADD CONSTRAINT fk_dhcp4_pool_subnet_id FOREIGN KEY (subnet_id)
|
||||
REFERENCES dhcp4_subnet (subnet_id)
|
||||
ON DELETE NO ACTION ON UPDATE CASCADE;
|
||||
|
||||
|
||||
# Drop existing trigger on the dhcp4_subnet table.
|
||||
DROP TRIGGER dhcp4_subnet_ADEL;
|
||||
|
||||
# Create new trigger which will delete pools associated with the subnet and
|
||||
# the options associated with the subnet.
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER dhcp4_subnet_BDEL BEFORE DELETE ON dhcp4_subnet
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL createAuditEntryDHCP4('dhcp4_subnet', OLD.subnet_id, "delete");
|
||||
DELETE FROM dhcp4_pool WHERE subnet_id = OLD.subnet_id;
|
||||
DELETE FROM dhcp4_options WHERE dhcp4_subnet_id = OLD.subnet_id;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
# Update the schema version number
|
||||
UPDATE schema_version
|
||||
SET version = '8', minor = '2';
|
||||
|
||||
# This line concludes database upgrade to version 8.2.
|
||||
|
||||
|
||||
# Notes:
|
||||
#
|
||||
|
59
src/share/database/scripts/mysql/upgrade_8.1_to_8.2.sh.in
Normal file
59
src/share/database/scripts/mysql/upgrade_8.1_to_8.2.sh.in
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/bin/sh
|
||||
|
||||
prefix=@prefix@
|
||||
# Include utilities. Use installed version if available and
|
||||
# use build version if it isn't.
|
||||
if [ -e @datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh ]; then
|
||||
. @datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh
|
||||
else
|
||||
. @abs_top_builddir@/src/bin/admin/admin-utils.sh
|
||||
fi
|
||||
|
||||
VERSION=`mysql_version "$@"`
|
||||
|
||||
if [ "$VERSION" != "8.1" ]; then
|
||||
printf "This script upgrades 8.1 to 8.2. Reported version is $VERSION. Skipping upgrade.\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mysql "$@" <<EOF
|
||||
|
||||
# Do not perform cascade deletion of the data in the dhcp4_pool because
|
||||
# the cascade deletion does not execute triggers associated with the table.
|
||||
# Instead we are going to use triggers on the dhcp4_subnet table.
|
||||
ALTER TABLE dhcp4_pool
|
||||
DROP FOREIGN KEY fk_dhcp4_pool_subnet_id;
|
||||
|
||||
ALTER TABLE dhcp4_pool
|
||||
ADD CONSTRAINT fk_dhcp4_pool_subnet_id FOREIGN KEY (subnet_id)
|
||||
REFERENCES dhcp4_subnet (subnet_id)
|
||||
ON DELETE NO ACTION ON UPDATE CASCADE;
|
||||
|
||||
|
||||
# Drop existing trigger on the dhcp4_subnet table.
|
||||
DROP TRIGGER dhcp4_subnet_ADEL;
|
||||
|
||||
# Create new trigger which will delete pools associated with the subnet and
|
||||
# the options associated with the subnet.
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER dhcp4_subnet_BDEL BEFORE DELETE ON dhcp4_subnet
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL createAuditEntryDHCP4('dhcp4_subnet', OLD.subnet_id, "delete");
|
||||
DELETE FROM dhcp4_pool WHERE subnet_id = OLD.subnet_id;
|
||||
DELETE FROM dhcp4_options WHERE dhcp4_subnet_id = OLD.subnet_id;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
# Update the schema version number
|
||||
UPDATE schema_version
|
||||
SET version = '8', minor = '2';
|
||||
|
||||
# This line concludes database upgrade to version 8.2.
|
||||
|
||||
EOF
|
||||
|
||||
RESULT=$?
|
||||
|
||||
exit $?
|
Reference in New Issue
Block a user