From: Marcin Siodelski Date: Tue, 4 Apr 2023 08:34:17 +0000 (+0200) Subject: [#2823] DB schemas include allocators X-Git-Tag: Kea-2.3.7~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfd3aff94534f6e34107471f497dfe9946d4cc06;p=thirdparty%2Fkea.git [#2823] DB schemas include allocators --- diff --git a/configure.ac b/configure.ac index 3ce0bdbb5c..b1d665f7d8 100644 --- a/configure.ac +++ b/configure.ac @@ -1706,6 +1706,8 @@ AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_014_to_015.sh], [chmod +x src/share/database/scripts/mysql/upgrade_014_to_015.sh]) AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_015_to_016.sh], [chmod +x src/share/database/scripts/mysql/upgrade_015_to_016.sh]) +AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_016_to_017.sh], + [chmod +x src/share/database/scripts/mysql/upgrade_016_to_017.sh]) AC_CONFIG_FILES([src/share/database/scripts/mysql/wipe_data.sh], [chmod +x src/share/database/scripts/mysql/wipe_data.sh]) AC_CONFIG_FILES([src/share/database/scripts/pgsql/Makefile]) @@ -1749,6 +1751,8 @@ AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_013_to_014.sh], [chmod +x src/share/database/scripts/pgsql/upgrade_013_to_014.sh]) AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_014_to_015.sh], [chmod +x src/share/database/scripts/pgsql/upgrade_014_to_015.sh]) +AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_015_to_016.sh], + [chmod +x src/share/database/scripts/pgsql/upgrade_015_to_016.sh]) AC_CONFIG_FILES([src/share/database/scripts/pgsql/wipe_data.sh], [chmod +x src/share/database/scripts/pgsql/wipe_data.sh]) AC_CONFIG_FILES([src/share/yang/Makefile]) diff --git a/src/lib/mysql/mysql_constants.h b/src/lib/mysql/mysql_constants.h index f3516c95a0..58160bdbdd 100644 --- a/src/lib/mysql/mysql_constants.h +++ b/src/lib/mysql/mysql_constants.h @@ -52,7 +52,7 @@ const int MLM_MYSQL_FETCH_FAILURE = 0; /// @name Current database schema version values. //@{ -const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 16; +const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 17; const uint32_t MYSQL_SCHEMA_VERSION_MINOR = 0; //@} diff --git a/src/lib/pgsql/pgsql_connection.h b/src/lib/pgsql/pgsql_connection.h index 4c4940efa0..51fa34c282 100644 --- a/src/lib/pgsql/pgsql_connection.h +++ b/src/lib/pgsql/pgsql_connection.h @@ -18,7 +18,7 @@ namespace isc { namespace db { /// @brief Define the PostgreSQL backend version. -const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 15; +const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 16; const uint32_t PGSQL_SCHEMA_VERSION_MINOR = 0; // Maximum number of parameters that can be used a statement diff --git a/src/share/database/scripts/mysql/.gitignore b/src/share/database/scripts/mysql/.gitignore index c9945fdf9e..c3c5062886 100644 --- a/src/share/database/scripts/mysql/.gitignore +++ b/src/share/database/scripts/mysql/.gitignore @@ -24,4 +24,5 @@ /upgrade_013_to_014.sh /upgrade_014_to_015.sh /upgrade_015_to_016.sh +/upgrade_016_to_017.sh /wipe_data.sh diff --git a/src/share/database/scripts/mysql/Makefile.am b/src/share/database/scripts/mysql/Makefile.am index af8c8c5dcb..50fbc295bb 100644 --- a/src/share/database/scripts/mysql/Makefile.am +++ b/src/share/database/scripts/mysql/Makefile.am @@ -35,6 +35,7 @@ mysql_SCRIPTS += upgrade_012_to_013.sh mysql_SCRIPTS += upgrade_013_to_014.sh mysql_SCRIPTS += upgrade_014_to_015.sh mysql_SCRIPTS += upgrade_015_to_016.sh +mysql_SCRIPTS += upgrade_016_to_017.sh mysql_SCRIPTS += wipe_data.sh DISTCLEANFILES = ${mysql_SCRIPTS} diff --git a/src/share/database/scripts/mysql/dhcpdb_create.mysql b/src/share/database/scripts/mysql/dhcpdb_create.mysql index 94741a6eb7..d6784e13ae 100644 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@ -5109,6 +5109,26 @@ UPDATE schema_version -- This line concludes the schema upgrade to version 16. +-- This line starts the schema upgrade to version 17. + +-- Add the allocator column to the DHCPv4 tables. +ALTER TABLE dhcp4_subnet ADD COLUMN allocator TEXT NULL; +ALTER TABLE dhcp4_shared_network ADD COLUMN allocator TEXT NULL; + +-- Add allocator and pd_allocator to the DHCPv6 subnet tables. +ALTER TABLE dhcp6_subnet ADD COLUMN allocator TEXT NULL; +ALTER TABLE dhcp6_subnet ADD COLUMN pd_allocator TEXT NULL; + +-- Add allocator and pd_allocator to the DHCPv6 shared network tables. +ALTER TABLE dhcp6_shared_network ADD COLUMN allocator TEXT NULL; +ALTER TABLE dhcp6_shared_network ADD COLUMN pd_allocator TEXT NULL; + +-- Update the schema version number. +UPDATE schema_version + SET version = '17', minor = '0'; + +-- This line concludes the schema upgrade to version 17. + # Notes: # # Indexes diff --git a/src/share/database/scripts/mysql/upgrade_016_to_017.sh.in b/src/share/database/scripts/mysql/upgrade_016_to_017.sh.in new file mode 100644 index 0000000000..31e4e1a30f --- /dev/null +++ b/src/share/database/scripts/mysql/upgrade_016_to_017.sh.in @@ -0,0 +1,74 @@ +#!/bin/sh + +# Copyright (C) 2023 Internet Systems Consortium, Inc. ("ISC") +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# shellcheck disable=SC1091 +# SC1091: Not following: ... was not specified as input (see shellcheck -x). + +# Exit with error if commands exit with non-zero and if undefined variables are +# used. +set -eu + +# shellcheck disable=SC2034 +# SC2034: ... appears unused. Verify use (or export if used externally). +prefix="@prefix@" + +# Include utilities. Use installed version if available and +# use build version if it isn't. +if test -f "@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 + +# Check version. +version=$(mysql_version "${@}") +if test "${version}" != "16.0"; then + printf 'This script upgrades 16.0 to 17.0. ' + printf 'Reported version is %s. Skipping upgrade.\n' "${version}" + exit 0 +fi + +# Get the schema name from database argument. We need this to +# query information_schema for the right database. +for arg in "${@}" +do + if ! printf '%s' "${arg}" | grep -Eq '^\-\-' + then + schema="$arg" + break + fi +done + +# Make sure we have the schema. +if [ -z "$schema" ] +then + printf "Could not find database schema name in cmd line args: %s\n" "${*}" + exit 255 +fi + +mysql "$@" </dev/null <