%PDF- %PDF-
Direktori : /backups/router/usr/local/share/kea/scripts/pgsql/ |
Current File : //backups/router/usr/local/share/kea/scripts/pgsql/upgrade_017_to_018.sh |
#!/bin/sh # Copyright (C) 2023-2024 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/. # 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="/usr/local" # Include utilities based on location of this script. Check for sources first, # so that the unexpected situations with weird paths fall on the default # case of installed. script_path=$(cd "$(dirname "${0}")" && pwd) if test "${script_path}" = "/usr/obj/usr/ports/net/kea/work/kea-2.6.1/src/share/database/scripts/pgsql"; then # shellcheck source=./src/bin/admin/admin-utils.sh.in . "/usr/obj/usr/ports/net/kea/work/kea-2.6.1/src/bin/admin/admin-utils.sh" else # shellcheck source=./src/bin/admin/admin-utils.sh.in . "${prefix}/share/kea/scripts/admin-utils.sh" fi VERSION=$(pgsql_version "$@") if [ "$VERSION" != "17.0" ]; then printf 'This script upgrades 17.0 to 18.0. ' printf 'Reported version is %s. Skipping upgrade.\n' "${VERSION}" exit 0 fi psql "$@" >/dev/null <<EOF -- This line starts the schema upgrade to version 18.0. -- Drop binaddr index and column from lease6. DROP INDEX lease6_by_binaddr; ALTER TABLE lease6 DROP COLUMN binaddr; -- Change lease6:address to INET. ALTER TABLE lease6 ALTER COLUMN address TYPE INET USING address::INET; -- Change ipv6_reservations:address to INET. ALTER TABLE ipv6_reservations ALTER COLUMN address TYPE INET USING address::INET; -- Invoke HOST() on address now that address type is inet CREATE OR REPLACE FUNCTION lease6DumpData() RETURNS TABLE ( address VARCHAR, duid VARCHAR, valid_lifetime BIGINT, expire BIGINT, subnet_id BIGINT, pref_lifetime BIGINT, lease_type SMALLINT, iaid INT, prefix_len SMALLINT, fqdn_fwd INT, fqdn_rev INT, hostname VARCHAR, hwaddr VARCHAR, state INT8, user_context VARCHAR, hwtype SMALLINT, hwaddr_source SMALLINT, pool_id BIGINT ) AS \$\$ SELECT HOST(address), colonSeparatedHex(encode(duid, 'hex')), valid_lifetime, extract(epoch from expire)::bigint, subnet_id, pref_lifetime, lease_type, iaid, prefix_len, fqdn_fwd::int, fqdn_rev::int, replace(hostname, ',', ','), colonSeparatedHex(encode(hwaddr, 'hex')), state, replace(user_context, ',', ','), hwtype, hwaddr_source, pool_id FROM lease6 ORDER BY address; \$\$ LANGUAGE SQL; -- Invoke HOST() on address now that address type is inet CREATE OR REPLACE FUNCTION lease6Upload( IN address VARCHAR, IN duid VARCHAR, IN valid_lifetime BIGINT, IN expire BIGINT, IN subnet_id BIGINT, IN pref_lifetime BIGINT, IN lease_type INT, IN iaid INT, IN prefix_len INT, IN fqdn_fwd INT, IN fqdn_rev INT, IN hostname VARCHAR, IN hwaddr VARCHAR, IN state INT8, IN user_context VARCHAR, IN hwtype INT, IN hwaddr_source INT, IN pool_id BIGINT ) RETURNS VOID AS \$\$ BEGIN INSERT INTO lease6 ( address, duid, valid_lifetime, expire, subnet_id, pref_lifetime, lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname, hwaddr, state, user_context, hwtype, hwaddr_source, pool_id ) VALUES ( cast(address as inet), decode(replace(duid, ':', ''), 'hex'), valid_lifetime, to_timestamp(expire), subnet_id, pref_lifetime, lease_type, iaid, prefix_len, fqdn_fwd::int::boolean, fqdn_rev::int::boolean, replace(hostname, ',', ','), decode(replace(hwaddr, ':', ''), 'hex'), state, replace(user_context, ',', ','), hwtype, hwaddr_source, pool_id ); END \$\$ LANGUAGE plpgsql; -- Update the schema version number. UPDATE schema_version SET version = '18', minor = '0'; -- This line concludes the schema upgrade to version 18.0. -- Commit the script transaction. COMMIT; EOF