mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-03 15:35:17 +00:00
[393-global-search-through-leases-by-mac-or-hostname-w-o-specifying-a-subnet-id] Moves lease hostnames to lower case
This commit is contained in:
@@ -29,8 +29,8 @@ Lease::Lease(const isc::asiolink::IOAddress& addr,
|
||||
uint32_t valid_lft, SubnetID subnet_id, time_t cltt,
|
||||
const bool fqdn_fwd, const bool fqdn_rev,
|
||||
const std::string& hostname, const HWAddrPtr& hwaddr)
|
||||
:addr_(addr), valid_lft_(valid_lft), cltt_(cltt),
|
||||
subnet_id_(subnet_id), hostname_(hostname), fqdn_fwd_(fqdn_fwd),
|
||||
:addr_(addr), valid_lft_(valid_lft), cltt_(cltt), subnet_id_(subnet_id),
|
||||
hostname_(boost::algorithm::to_lower_copy(hostname)), fqdn_fwd_(fqdn_fwd),
|
||||
fqdn_rev_(fqdn_rev), hwaddr_(hwaddr), state_(STATE_DEFAULT) {
|
||||
}
|
||||
|
||||
@@ -237,6 +237,7 @@ Lease::fromElementCommon(const LeasePtr& lease, const data::ConstElementPtr& ele
|
||||
}
|
||||
|
||||
lease->hostname_ = hostname->stringValue();
|
||||
boost::algorithm::to_lower(lease->hostname_);
|
||||
|
||||
// state
|
||||
ConstElementPtr state = element->get("state");
|
||||
|
@@ -117,7 +117,7 @@ struct Lease : public isc::data::UserContext, public isc::data::CfgToElement {
|
||||
|
||||
/// @brief Client hostname
|
||||
///
|
||||
/// This field may be empty
|
||||
/// This field is in lower case and may be empty.
|
||||
std::string hostname_;
|
||||
|
||||
/// @brief Forward zone updated?
|
||||
|
@@ -126,7 +126,7 @@ TEST_F(Lease4Test, constructor) {
|
||||
// Create the lease
|
||||
Lease4 lease(ADDRESS[i], hwaddr_, clientid_, VALID_LIFETIME,
|
||||
current_time, SUBNET_ID, true, true,
|
||||
"hostname.example.com.");
|
||||
"Hostname.Example.Com.");
|
||||
|
||||
EXPECT_EQ(ADDRESS[i], lease.addr_.toUint32());
|
||||
EXPECT_TRUE(util::equalValues(hwaddr_, lease.hwaddr_));
|
||||
@@ -370,7 +370,7 @@ TEST_F(Lease4Test, operatorEquals) {
|
||||
EXPECT_TRUE(lease1 == lease2); // Check that the reversion has made the
|
||||
EXPECT_FALSE(lease1 != lease2); // ... leases equal
|
||||
|
||||
lease1.hostname_ += std::string("Something random");
|
||||
lease1.hostname_ += std::string("something random");
|
||||
EXPECT_FALSE(lease1 == lease2);
|
||||
EXPECT_TRUE(lease1 != lease2);
|
||||
lease1.hostname_ = lease2.hostname_;
|
||||
@@ -493,7 +493,7 @@ TEST_F(Lease4Test, toElement) {
|
||||
|
||||
const time_t current_time = 12345678;
|
||||
Lease4 lease(IOAddress("192.0.2.3"), hwaddr_, clientid_, 3600,
|
||||
current_time, 789, true, true, "urania.example.org");
|
||||
current_time, 789, true, true, "URANIA.example.org");
|
||||
lease.setContext(Element::fromJSON("{ \"foobar\": 1234 }"));
|
||||
|
||||
std::string expected = "{"
|
||||
@@ -556,7 +556,7 @@ TEST_F(Lease4Test, fromElement) {
|
||||
"\"cltt\": 12345678,"
|
||||
"\"fqdn-fwd\": true,"
|
||||
"\"fqdn-rev\": true,"
|
||||
"\"hostname\": \"urania.example.org\","
|
||||
"\"hostname\": \"urania.example.ORG\","
|
||||
"\"hw-address\": \"08:00:2b:02:3f:4e\","
|
||||
"\"ip-address\": \"192.0.2.3\","
|
||||
"\"state\": 0,"
|
||||
@@ -634,7 +634,7 @@ TEST_F(Lease4Test, decline) {
|
||||
const time_t current_time = 12345678;
|
||||
Lease4 lease(IOAddress("192.0.2.3"), hwaddr_, clientid_, 3600,
|
||||
current_time, 789);
|
||||
lease.hostname_="foo.example.org";
|
||||
lease.hostname_ = "foo.example.org";
|
||||
lease.fqdn_fwd_ = true;
|
||||
lease.fqdn_rev_ = true;
|
||||
|
||||
@@ -746,7 +746,7 @@ TEST(Lease6Test, Lease6ConstructorWithFQDN) {
|
||||
IOAddress addr(ADDRESS[i]);
|
||||
Lease6Ptr lease(new Lease6(Lease::TYPE_NA, addr,
|
||||
duid, iaid, 100, 200, subnet_id,
|
||||
true, true, "host.example.com."));
|
||||
true, true, "Host.Example.Com."));
|
||||
|
||||
EXPECT_TRUE(lease->addr_ == addr);
|
||||
EXPECT_TRUE(*lease->duid_ == *duid);
|
||||
@@ -862,7 +862,7 @@ TEST(Lease6Test, operatorEquals) {
|
||||
EXPECT_TRUE(lease1 == lease2); // Check that the reversion has made the
|
||||
EXPECT_FALSE(lease1 != lease2); // ... leases equal
|
||||
|
||||
lease1.hostname_ += std::string("Something random");
|
||||
lease1.hostname_ += std::string("something random");
|
||||
EXPECT_FALSE(lease1 == lease2);
|
||||
EXPECT_TRUE(lease1 != lease2);
|
||||
lease1.hostname_ = lease2.hostname_;
|
||||
@@ -1220,7 +1220,7 @@ TEST(Lease6Test, fromElementNA) {
|
||||
"\"duid\": \"00:01:02:03:04:05:06:0a:0b:0c:0d:0e:0f\","
|
||||
"\"fqdn-fwd\": false,"
|
||||
"\"fqdn-rev\": false,"
|
||||
"\"hostname\": \"urania.example.org\","
|
||||
"\"hostname\": \"urania.EXAMPLE.org\","
|
||||
"\"hw-address\": \"08:00:2b:02:3f:4e\","
|
||||
"\"iaid\": 123456,"
|
||||
"\"ip-address\": \"2001:db8::1\","
|
||||
@@ -1266,7 +1266,7 @@ TEST(Lease6Test, fromElementPD) {
|
||||
"\"duid\": \"00:01:02:03:04:05:06:0a:0b:0c:0d:0e:0f\","
|
||||
"\"fqdn-fwd\": false,"
|
||||
"\"fqdn-rev\": false,"
|
||||
"\"hostname\": \"urania.example.org\","
|
||||
"\"hostname\": \"uraniA.exaMple.orG\","
|
||||
"\"hw-address\": \"08:00:2b:02:3f:4e\","
|
||||
"\"iaid\": 123456,"
|
||||
"\"ip-address\": \"3000::\","
|
||||
|
@@ -374,6 +374,12 @@ ALTER TABLE hosts ADD lower_case_hostname VARCHAR;
|
||||
-- Make the lower case hostname an index.
|
||||
CREATE INDEX IF NOT EXISTS hostsindex8 ON hosts (lower_case_hostname);
|
||||
|
||||
-- Create a new hostname index on lease4.
|
||||
CREATE INDEX IF NOT EXISTS lease4index6 ON lease4 (hostname);
|
||||
|
||||
-- Create a new hostname index on lease6.
|
||||
CREATE INDEX IF NOT EXISTS lease6index7 ON lease6 (hostname);
|
||||
|
||||
DELETE FROM schema_version WHERE version=4;
|
||||
INSERT INTO schema_version (version, minor) VALUES(5, 0);
|
||||
|
||||
|
@@ -33,6 +33,7 @@ DROP INDEX IF EXISTS lease4index2;
|
||||
DROP INDEX IF EXISTS lease4index3;
|
||||
DROP INDEX IF EXISTS lease4index4;
|
||||
DROP INDEX IF EXISTS lease4index5;
|
||||
DROP INDEX IF EXISTS lease4index6;
|
||||
|
||||
DROP INDEX IF EXISTS lease6index1;
|
||||
DROP INDEX IF EXISTS lease6index2;
|
||||
@@ -40,6 +41,7 @@ DROP INDEX IF EXISTS lease6index3;
|
||||
DROP INDEX IF EXISTS lease6index4;
|
||||
DROP INDEX IF EXISTS lease6index5;
|
||||
DROP INDEX IF EXISTS lease6index6;
|
||||
DROP INDEX IF EXISTS lease6index7;
|
||||
|
||||
DROP INDEX IF EXISTS hostsindex1;
|
||||
DROP INDEX IF EXISTS hostsindex2;
|
||||
|
@@ -41,6 +41,12 @@ ALTER TABLE hosts ADD lower_case_hostname VARCHAR;
|
||||
-- Make the lower case hostname an index.
|
||||
CREATE INDEX IF NOT EXISTS hostsindex8 ON hosts (lower_case_hostname);
|
||||
|
||||
-- Create a new hostname index on lease4.
|
||||
CREATE INDEX IF NOT EXISTS lease4index6 ON lease4 (hostname);
|
||||
|
||||
-- Create a new hostname index on lease6.
|
||||
CREATE INDEX IF NOT EXISTS lease6index7 ON lease6 (hostname);
|
||||
|
||||
DELETE FROM schema_version WHERE version=4;
|
||||
INSERT INTO schema_version (version, minor) VALUES(5, 0);
|
||||
|
||||
@@ -54,17 +60,37 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to delete temporary update files
|
||||
# Functions to delete temporary update files
|
||||
clean_up() {
|
||||
# clean up the files
|
||||
if [ -e "$export_file" ]
|
||||
if [ -e "$host_export_file" ]
|
||||
then
|
||||
rm $export_file
|
||||
rm $host_export_file
|
||||
fi
|
||||
|
||||
if [ -e "$update_file" ]
|
||||
if [ -e "$host_update_file" ]
|
||||
then
|
||||
rm $update_file
|
||||
rm $host_update_file
|
||||
fi
|
||||
|
||||
if [ -e "$lease4_export_file" ]
|
||||
then
|
||||
rm $lease4_export_file
|
||||
fi
|
||||
|
||||
if [ -e "$lease4_update_file" ]
|
||||
then
|
||||
rm $lease4_update_file
|
||||
fi
|
||||
|
||||
if [ -e "$lease6_export_file" ]
|
||||
then
|
||||
rm $lease6_export_file
|
||||
fi
|
||||
|
||||
if [ -e "$lease6_update_file" ]
|
||||
then
|
||||
rm $lease6_update_file
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -97,29 +123,26 @@ exit_now() {
|
||||
#
|
||||
# No parameters.
|
||||
update_host_data() {
|
||||
export_file="$temp_file_dir/cql_export.csv"
|
||||
update_file="$temp_file_dir/cql_update.cql"
|
||||
|
||||
clean_up
|
||||
|
||||
# Fetch hosts data so we have primary key components and hostname.
|
||||
echo "Exporting hostnames to $export_file ..."
|
||||
query="COPY hosts (key, id, hostname) TO '$export_file'"
|
||||
echo "Exporting hostnames to $host_export_file ..."
|
||||
query="COPY hosts (key, id, hostname) TO '$host_export_file'"
|
||||
|
||||
cqlsh $cqlargs -e "$query"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra get hostname failed! Could not update data!"
|
||||
exit_now 1 "Cassandra get hostname failed! Could not update host!"
|
||||
fi
|
||||
|
||||
# Strip the carriage returns that CQL insists on adding.
|
||||
if [ -e "$export_file" ]
|
||||
if [ -e "$host_export_file" ]
|
||||
then
|
||||
cat $export_file | tr -d '\015' > $export_file.2
|
||||
mv $export_file.2 $export_file
|
||||
cat $host_export_file | tr -d '\015' > $host_export_file.2
|
||||
mv $host_export_file.2 $host_export_file
|
||||
else
|
||||
# Shouldn't happen but then again we're talking about CQL here
|
||||
exit_now 1 "Cassandra export file $export_file is missing?"
|
||||
exit_now 1 "Cassandra export file $host_export_file is missing?"
|
||||
fi
|
||||
|
||||
# Iterate through the exported data, accumulating update statements,
|
||||
@@ -167,31 +190,232 @@ update_host_data() {
|
||||
if [ "$hostname" != "" ]
|
||||
then
|
||||
lower=$(echo $hostname | tr '[:upper:]' '[:lower:]')
|
||||
echo "update hosts set lower_case_hostname = '$lower' where key = $key and id = $host_id;" >> $update_file
|
||||
echo "update hosts set lower_case_hostname = '$lower' where key = $key and id = $host_id;" >> $host_update_file
|
||||
update_cnt=$((update_cnt + 1))
|
||||
fi
|
||||
|
||||
IFS="$xIFS"
|
||||
done < $export_file
|
||||
done < $host_export_file
|
||||
|
||||
# If we didn't record any updates, then hey, we're good to go!
|
||||
if [ "$update_cnt" -eq 0 ]
|
||||
then
|
||||
exit_now 0 "Completed successfully: No updates were needed"
|
||||
exit_now 0 "Completed successfully: No host updates were needed"
|
||||
fi
|
||||
|
||||
# We have at least one update in the update file, so submit it # to cqlsh.
|
||||
echo "$update_cnt update statements written to $update_file"
|
||||
echo "$update_cnt host update statements written to $host_update_file"
|
||||
echo "Running the updates..."
|
||||
cqlsh $cqlargs -f "$update_file"
|
||||
cqlsh $cqlargs -f "$host_update_file"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra updates failed"
|
||||
exit_now 1 "Cassandra host updates failed"
|
||||
fi
|
||||
|
||||
exit_now 0 "Updated $update_cnt of $line_cnt records"
|
||||
exit_now 0 "Updated $update_cnt of $line_cnt host records"
|
||||
}
|
||||
|
||||
# This function moves lease4 hostnames to lower case.
|
||||
#
|
||||
# After exhausting the export file, the update file is submitted to
|
||||
# cqlsh for execution.
|
||||
#
|
||||
# No parameters.
|
||||
update_lease4_data() {
|
||||
clean_up
|
||||
|
||||
# Fetch lease4 data so we have primary address and hostname.
|
||||
echo "Exporting hostnames to $lease4_export_file ..."
|
||||
query="COPY lease4 (address, hostname) TO '$lease4_export_file'"
|
||||
|
||||
cqlsh $cqlargs -e "$query"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra get hostname failed! Could not update lease4!"
|
||||
fi
|
||||
|
||||
# Strip the carriage returns that CQL insists on adding.
|
||||
if [ -e "$lease4_export_file" ]
|
||||
then
|
||||
cat $lease4_export_file | tr -d '\015' > $lease4_export_file.2
|
||||
mv $lease4_export_file.2 $lease4_export_file
|
||||
else
|
||||
# Shouldn't happen but then again we're talking about CQL here
|
||||
exit_now 1 "Cassandra export file $lease4_export_file is missing?"
|
||||
fi
|
||||
|
||||
# Iterate through the exported data, accumulating update statements,
|
||||
# one for each lease that needs updating. We should have one lease4
|
||||
# per line.
|
||||
line_cnt=0;
|
||||
update_cnt=0;
|
||||
|
||||
while read -r line
|
||||
do
|
||||
line_cnt=$((line_cnt + 1));
|
||||
xIFS="$IFS"
|
||||
IFS=$','
|
||||
|
||||
i=1
|
||||
hostname=
|
||||
# Parse the column values
|
||||
for val in $line
|
||||
do
|
||||
case $i in
|
||||
1)
|
||||
address="$val"
|
||||
;;
|
||||
2)
|
||||
hostname="$val"
|
||||
;;
|
||||
*)
|
||||
# We're going to assume that since any error is fatal
|
||||
exit_now 1 "Line# $line_cnt, too many values, wrong or corrupt file"
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
|
||||
if [ "$i" -lt 2 ]
|
||||
then
|
||||
# We're going to assume that since any error is fatal
|
||||
exit_now 1 "Line# $line_cnt, too few values, wrong or corrupt file"
|
||||
fi
|
||||
|
||||
# If the hostname was not null set the lower case value
|
||||
if [ "$hostname" != "" ]
|
||||
then
|
||||
lower=$(echo $hostname | tr '[:upper:]' '[:lower:]')
|
||||
echo "update lease4 set hostname = '$lower' where address = $address;" >> $lease4_update_file
|
||||
update_cnt=$((update_cnt + 1))
|
||||
fi
|
||||
|
||||
IFS="$xIFS"
|
||||
done < $lease4_export_file
|
||||
|
||||
# If we didn't record any updates, then hey, we're good to go!
|
||||
if [ "$update_cnt" -eq 0 ]
|
||||
then
|
||||
exit_now 0 "Completed successfully: No lease4 updates were needed"
|
||||
fi
|
||||
|
||||
# We have at least one update in the update file, so submit it # to cqlsh.
|
||||
echo "$update_cnt lease4 update statements written to $lease4_update_file"
|
||||
echo "Running the updates..."
|
||||
cqlsh $cqlargs -f "$lease4_update_file"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra lease4 updates failed"
|
||||
fi
|
||||
|
||||
exit_now 0 "Updated $update_cnt of $line_cnt lease4 records"
|
||||
}
|
||||
|
||||
# This function moves lease6 hostnames to lower case.
|
||||
#
|
||||
# After exhausting the export file, the update file is submitted to
|
||||
# cqlsh for execution.
|
||||
#
|
||||
# No parameters.
|
||||
update_lease6_data() {
|
||||
clean_up
|
||||
|
||||
# Fetch lease6 data so we have primary address and hostname.
|
||||
echo "Exporting hostnames to $lease6_export_file ..."
|
||||
query="COPY lease6 (address, hostname) TO '$lease6_export_file'"
|
||||
|
||||
cqlsh $cqlargs -e "$query"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra get hostname failed! Could not update lease6!"
|
||||
fi
|
||||
|
||||
# Strip the carriage returns that CQL insists on adding.
|
||||
if [ -e "$lease6_export_file" ]
|
||||
then
|
||||
cat $lease6_export_file | tr -d '\015' > $lease6_export_file.2
|
||||
mv $lease6_export_file.2 $lease6_export_file
|
||||
else
|
||||
# Shouldn't happen but then again we're talking about CQL here
|
||||
exit_now 1 "Cassandra export file $lease6_export_file is missing?"
|
||||
fi
|
||||
|
||||
# Iterate through the exported data, accumulating update statements,
|
||||
# one for each lease that needs updating. We should have one lease6
|
||||
# per line.
|
||||
line_cnt=0;
|
||||
update_cnt=0;
|
||||
|
||||
while read -r line
|
||||
do
|
||||
line_cnt=$((line_cnt + 1));
|
||||
xIFS="$IFS"
|
||||
IFS=$','
|
||||
|
||||
i=1
|
||||
hostname=
|
||||
# Parse the column values
|
||||
for val in $line
|
||||
do
|
||||
case $i in
|
||||
1)
|
||||
address="$val"
|
||||
;;
|
||||
2)
|
||||
hostname="$val"
|
||||
;;
|
||||
*)
|
||||
# We're going to assume that since any error is fatal
|
||||
exit_now 1 "Line# $line_cnt, too many values, wrong or corrupt file"
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
|
||||
if [ "$i" -lt 2 ]
|
||||
then
|
||||
# We're going to assume that since any error is fatal
|
||||
exit_now 1 "Line# $line_cnt, too few values, wrong or corrupt file"
|
||||
fi
|
||||
|
||||
# If the hostname was not null set the lower case value
|
||||
if [ "$hostname" != "" ]
|
||||
then
|
||||
lower=$(echo $hostname | tr '[:upper:]' '[:lower:]')
|
||||
echo "update lease6 set hostname = '$lower' where address = $address;" >> $lease6_update_file
|
||||
update_cnt=$((update_cnt + 1))
|
||||
fi
|
||||
|
||||
IFS="$xIFS"
|
||||
done < $lease6_export_file
|
||||
|
||||
# If we didn't record any updates, then hey, we're good to go!
|
||||
if [ "$update_cnt" -eq 0 ]
|
||||
then
|
||||
exit_now 0 "Completed successfully: No lease6 updates were needed"
|
||||
fi
|
||||
|
||||
# We have at least one update in the update file, so submit it # to cqlsh.
|
||||
echo "$update_cnt lease6 update statements written to $lease6_update_file"
|
||||
echo "Running the updates..."
|
||||
cqlsh $cqlargs -f "$lease6_update_file"
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
exit_now 1 "Cassandra lease6 updates failed"
|
||||
fi
|
||||
|
||||
exit_now 0 "Updated $update_cnt of $line_cnt lease6 records"
|
||||
}
|
||||
|
||||
host_export_file="$temp_file_dir/cql_host_export.csv"
|
||||
host_update_file="$temp_file_dir/cql_host_update.cql"
|
||||
lease4_export_file="$temp_file_dir/cql_lease4_export.csv"
|
||||
lease4_update_file="$temp_file_dir/cql_lease4_update.cql"
|
||||
lease6_export_file="$temp_file_dir/cql_lease6_export.csv"
|
||||
lease6_update_file="$temp_file_dir/cql_lease6_update.cql"
|
||||
|
||||
check_version
|
||||
update_schema
|
||||
update_host_data
|
||||
update_lease4_data
|
||||
update_lease6_data
|
||||
|
@@ -2785,6 +2785,12 @@ SET version = '8', minor = '2';
|
||||
# Create hostname index for host reservations
|
||||
CREATE INDEX hosts_by_hostname ON hosts (hostname);
|
||||
|
||||
# Create hostname index for lease4
|
||||
CREATE INDEX lease4_by_hostname ON lease4 (hostname);
|
||||
|
||||
# Create hostname index for lease6
|
||||
CREATE INDEX lease6_by_hostname ON lease6 (hostname);
|
||||
|
||||
# Update the schema version number
|
||||
UPDATE schema_version
|
||||
SET version = '9', minor = '0';
|
||||
|
@@ -21,6 +21,20 @@ mysql "$@" <<EOF
|
||||
# Create hostname index for host reservations
|
||||
CREATE INDEX hosts_by_hostname ON hosts (hostname);
|
||||
|
||||
# Move to lower case hostnames in lease4 table.
|
||||
UPDATE lease4 SET hostname = LOWER(hostname)
|
||||
WHERE BINARY LOWER(hostname) != hostname;
|
||||
|
||||
# Move to lower case hostnames in lease6 table.
|
||||
UPDATE lease6 SET hostname = LOWER(hostname)
|
||||
WHERE BINARY LOWER(hostname) != hostname;
|
||||
|
||||
# Create hostname index for lease4
|
||||
CREATE INDEX lease4_by_hostname ON lease4 (hostname);
|
||||
|
||||
# Create hostname index for lease6
|
||||
CREATE INDEX lease6_by_hostname ON lease6 (hostname);
|
||||
|
||||
# Update the schema version number
|
||||
UPDATE schema_version
|
||||
SET version = '9', minor = '0';
|
||||
|
@@ -891,10 +891,18 @@ UPDATE schema_version
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- Create a lower case hostname index.
|
||||
-- Create a lower case hostname index for hosts.
|
||||
CREATE INDEX hosts_by_hostname ON hosts (lower(hostname))
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Create a hostname index for lease4.
|
||||
CREATE INDEX lease4_by_hostname ON lease4 (hostname)
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Create a hostname index for lease6.
|
||||
CREATE INDEX lease6_by_hostname ON lease6 (hostname)
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Set 6.0 schema version.
|
||||
UPDATE schema_version
|
||||
SET version = '6', minor = '0';
|
||||
|
@@ -20,10 +20,26 @@ psql "$@" >/dev/null <<EOF
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- Create a lower case hostname index.
|
||||
-- Create a lower case hostname index for hosts.
|
||||
CREATE INDEX hosts_by_hostname ON hosts (lower(hostname))
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Create a hostname index for lease4.
|
||||
CREATE INDEX lease4_by_hostname ON lease4 (hostname)
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Create a hostname index for lease6.
|
||||
CREATE INDEX lease6_by_hostname ON lease6 (hostname)
|
||||
WHERE hostname IS NOT NULL;
|
||||
|
||||
-- Move to lower case hostnames in lease4 table.
|
||||
UPDATE lease4 SET hostname = lower(hostname)
|
||||
WHERE lower(hostname) != hostname;
|
||||
|
||||
-- Move to lower case hostnames in lease6 table.
|
||||
UPDATE lease6 SET hostname = lower(hostname)
|
||||
WHERE lower(hostname) != hostname;
|
||||
|
||||
-- Set 6.0 schema version.
|
||||
UPDATE schema_version
|
||||
SET version = '6', minor = '0';
|
||||
|
Reference in New Issue
Block a user