From 02a49c0e7deffb3208a5f93ed4c6a5ad1f0fd45f Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Wed, 13 Dec 2023 18:02:24 +0100 Subject: [PATCH] [#3149] Added a new index --- configure.ac | 4 ++ src/lib/mysql/mysql_constants.h | 2 +- src/lib/pgsql/pgsql_connection.h | 2 +- src/share/database/scripts/mysql/.gitignore | 1 + src/share/database/scripts/mysql/Makefile.am | 1 + .../scripts/mysql/dhcpdb_create.mysql | 11 ++++ .../scripts/mysql/upgrade_020_to_021.sh.in | 66 +++++++++++++++++++ src/share/database/scripts/pgsql/.gitignore | 1 + src/share/database/scripts/pgsql/Makefile.am | 1 + .../scripts/pgsql/dhcpdb_create.pgsql | 11 ++++ .../scripts/pgsql/upgrade_019_to_020.sh.in | 53 +++++++++++++++ 11 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 src/share/database/scripts/mysql/upgrade_020_to_021.sh.in create mode 100644 src/share/database/scripts/pgsql/upgrade_019_to_020.sh.in diff --git a/configure.ac b/configure.ac index 8597379bfa..6fb740f4c1 100644 --- a/configure.ac +++ b/configure.ac @@ -1746,6 +1746,8 @@ AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_018_to_019.sh], [chmod +x src/share/database/scripts/mysql/upgrade_018_to_019.sh]) AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_019_to_020.sh], [chmod +x src/share/database/scripts/mysql/upgrade_019_to_020.sh]) +AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_020_to_021.sh], + [chmod +x src/share/database/scripts/mysql/upgrade_020_to_021.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]) @@ -1797,6 +1799,8 @@ AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_017_to_018.sh], [chmod +x src/share/database/scripts/pgsql/upgrade_017_to_018.sh]) AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_018_to_019.sh], [chmod +x src/share/database/scripts/pgsql/upgrade_018_to_019.sh]) +AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_019_to_020.sh], + [chmod +x src/share/database/scripts/pgsql/upgrade_019_to_020.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 4ea90a74db..d3f283cc62 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 = 20; +const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 21; 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 8210e6c8e0..514cce4308 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 = 19; +const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 20; 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 7f4b2dbf04..53d22bedcb 100644 --- a/src/share/database/scripts/mysql/.gitignore +++ b/src/share/database/scripts/mysql/.gitignore @@ -28,4 +28,5 @@ /upgrade_017_to_018.sh /upgrade_018_to_019.sh /upgrade_019_to_020.sh +/upgrade_020_to_021.sh /wipe_data.sh diff --git a/src/share/database/scripts/mysql/Makefile.am b/src/share/database/scripts/mysql/Makefile.am index ee95d34b37..cb5adcacad 100644 --- a/src/share/database/scripts/mysql/Makefile.am +++ b/src/share/database/scripts/mysql/Makefile.am @@ -39,6 +39,7 @@ mysql_SCRIPTS += upgrade_016_to_017.sh mysql_SCRIPTS += upgrade_017_to_018.sh mysql_SCRIPTS += upgrade_018_to_019.sh mysql_SCRIPTS += upgrade_019_to_020.sh +mysql_SCRIPTS += upgrade_020_to_021.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 62a1b07a53..e948a7933e 100644 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@ -5850,6 +5850,17 @@ UPDATE schema_version -- This line concludes the schema upgrade to version 20.0. +-- This line starts the schema upgrade to version 21.0. + +-- Add subnet id and address index for lease6. +CREATE INDEX lease6_by_subnet_id_address ON lease6 (subnet_id, address ASC); + +-- Update the schema version number. +UPDATE schema_version + SET version = '21', minor = '0'; + +-- This line concludes the schema upgrade to version 21.0. + # Notes: # # Indexes diff --git a/src/share/database/scripts/mysql/upgrade_020_to_021.sh.in b/src/share/database/scripts/mysql/upgrade_020_to_021.sh.in new file mode 100644 index 0000000000..2b95ec85b2 --- /dev/null +++ b/src/share/database/scripts/mysql/upgrade_020_to_021.sh.in @@ -0,0 +1,66 @@ +#!/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}" != "20.0"; then + printf 'This script upgrades 20.0 to 21.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 <