From: Thomas Markwalder Date: Sat, 18 Apr 2026 17:01:52 +0000 (-0400) Subject: [#4447] Removed left joins from pick functions X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=601fc441d0d3477cfefef2280d5252ab1cdbbc54;p=thirdparty%2Fkea.git [#4447] Removed left joins from pick functions Left joins are perf killers. Relying on free leseseX consistency instead. a/src/bin/admin/tests/mysql_tests.sh.in mysql_sflqPickFreeLease6() mysql_sflqPickFreeLease6() - updated tests /src/bin/admin/tests/pgsql_tests.sh.in pgsql_sflqPickFreeLease6() pgsql_sflqPickFreeLease6() - updated tests /src/lib/dhcpsrv/testutils/generic_lease_mgr_unittest.cc GenericLeaseMgrTest::testSflqLeaseOps4() GenericLeaseMgrTest::testSflqLeaseOps6() - updated tests /src/share/database/scripts/mysql/dhcpdb_create.mysql /src/share/database/scripts/mysql/upgrade_033_to_034.sh.in - remove left join from SFLQ pick functions /src/share/database/scripts/pgsql/dhcpdb_create.pgsql /src/share/database/scripts/pgsql/upgrade_032_to_033.sh.in - remove left join from SFLQ pick functions --- diff --git a/changelog_unreleased/4447-shared-flq-allocator-reconcile-sflq-pool-create-and-pick-free-lease-inconsistency b/changelog_unreleased/4447-shared-flq-allocator-reconcile-sflq-pool-create-and-pick-free-lease-inconsistency new file mode 100644 index 0000000000..0c3bf79423 --- /dev/null +++ b/changelog_unreleased/4447-shared-flq-allocator-reconcile-sflq-pool-create-and-pick-free-lease-inconsistency @@ -0,0 +1,8 @@ +[func] tmark + Added an experimental allocator type, 'shared-flq'. + It implements a free lease queue mechanism for + MySQL and Postgresql lease back ends. It is + intended for use in configurations that share + lease data between mulitple servers (i.e. shared + lease backends). + (Gitlab #4336, #4373, #4405, #4417, #4441, #4447) diff --git a/src/bin/admin/tests/mysql_tests.sh.in b/src/bin/admin/tests/mysql_tests.sh.in index 5ee6837301..2938d43d3d 100755 --- a/src/bin/admin/tests/mysql_tests.sh.in +++ b/src/bin/admin/tests/mysql_tests.sh.in @@ -4200,29 +4200,32 @@ mysql_sflqPickFreeLease4() { run_statement "sflqPickFreeLease4.2" "$sql" "127.0.0.1"; run_statement "sflqPickFreeLease4.3" "$sql" "127.0.0.2"; + # Inserting an active lease directly. Pick should still see it. sql="insert into lease4 (address, subnet_id) values (inet_aton('127.0.0.1'), 1)"; run_statement "insert 127.0.0.1" "$sql" ""; sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))" run_statement "sflqPickFreeLease4.4" "$sql" "127.0.0.0"; - run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.2"; + # Updating it to reclaimed directly. Pick should still see it. sql="update lease4 set state = 2 where address = (inet_aton('127.0.0.1'));" run_statement "update 127.0.0.1" "$sql" ""; sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))" - run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.1"; - run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.2"; + # Deleting a lease directly. Pick should still see it. sql="delete from lease4" run_statement "delete 127.0.0.1" "$sql" ""; sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))" - run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.1"; - run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.2"; # Check pools with one address. address='192.0.2.0' @@ -4372,29 +4375,32 @@ mysql_sflqPickFreeLease6() { run_statement "sflqPickFreeLease6.2" "$sql" "3001::2"; run_statement "sflqPickFreeLease6.3" "$sql" "3001::"; + # Inserting an active lease directly. Pick should still see it. sql="insert into lease6 (address, lease_type, subnet_id) values (inet6_aton('3001::1'), 1, 1)"; run_statement "insert 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::', '3001::02')" - run_statement "sflqPickFreeLease6.4" "$sql" "3001::2"; - run_statement "sflqPickFreeLease6.5" "$sql" "3001::"; - run_statement "sflqPickFreeLease6.6" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.4" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.5" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.6" "$sql" "3001::"; + # Updating to reclaimed directly. Pick should still see it. sql="update lease6 set state = 2 where address = (inet6_aton('3001::1'));" run_statement "update 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::', '3001::02')" - run_statement "sflqPickFreeLease6.7" "$sql" "3001::"; - run_statement "sflqPickFreeLease6.8" "$sql" "3001::1"; - run_statement "sflqPickFreeLease6.9" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.7" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.8" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.9" "$sql" "3001::"; + # Deleting a lease directly. Pick should still see it. sql="delete from lease6" run_statement "delete 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::', '3001::02')" - run_statement "sflqPickFreeLease6.10" "$sql" "3001::"; - run_statement "sflqPickFreeLease6.11" "$sql" "3001::1"; - run_statement "sflqPickFreeLease6.12" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.10" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.11" "$sql" "3001::2"; + run_statement "sflqPickFreeLease6.12" "$sql" "3001::"; # Check pools with one address. address='2001:db8::8bd:1002' diff --git a/src/bin/admin/tests/pgsql_tests.sh.in b/src/bin/admin/tests/pgsql_tests.sh.in index 1c0fbbf1e5..97efbf7aae 100755 --- a/src/bin/admin/tests/pgsql_tests.sh.in +++ b/src/bin/admin/tests/pgsql_tests.sh.in @@ -3358,29 +3358,33 @@ pgsql_sflqPickFreeLease4() { run_statement "sflqPickFreeLease4.2" "$sql" "127.0.0.1"; run_statement "sflqPickFreeLease4.3" "$sql" "127.0.0.2"; + # Inserting a lease directly. Pick should still see it. sql="insert into lease4 (address, subnet_id) values ('127.0.0.1'::inet - '0.0.0.0'::inet, 1)"; run_statement "insert 127.0.0.1" "$sql" ""; + # Inserting an active lease directly. Pick should still see it. sql="select ('0.0.0.0'::inet + sflqPickFreeLease4($start_address, $end_address))" run_statement "sflqPickFreeLease4.4" "$sql" "127.0.0.0"; - run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.2"; + # Updating a lease directly. Pick should still see it. sql="update lease4 set state = 2 where address = ('127.0.0.1'::inet - '0.0.0.0'::inet);" run_statement "update 127.0.0.1" "$sql" ""; sql="select ('0.0.0.0'::inet + sflqPickFreeLease4($start_address, $end_address))" - run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.1"; - run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.2"; + # Deleting a lease directly. Pick should still see it. sql="delete from lease4" run_statement "delete 127.0.0.1" "$sql" ""; sql="select ('0.0.0.0'::inet + sflqPickFreeLease4($start_address, $end_address))" - run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.1"; - run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.2"; - run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.0"; + run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.1"; + run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.2"; # Check pools with one address. address="('192.0.2.0'::inet - '0.0.0.0'::inet)" @@ -3530,29 +3534,32 @@ pgsql_sflqPickFreeLease6() { run_statement "sflqPickFreeLease6.2" "$sql" "3001::1"; run_statement "sflqPickFreeLease6.3" "$sql" "3001::2"; + # Inserting a lease directly. Pick should still see it. sql="insert into lease6 (address, lease_type, subnet_id) values ('3001::1'::inet, 1::smallint, 1::bigint)"; run_statement "insert 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)" run_statement "sflqPickFreeLease6.4" "$sql" "3001::"; - run_statement "sflqPickFreeLease6.5" "$sql" "3001::2"; - run_statement "sflqPickFreeLease6.6" "$sql" "3001::"; + run_statement "sflqPickFreeLease6.5" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.6" "$sql" "3001::2"; + # Updating to reclaimed directly. Pick should still see it. sql="update lease6 set state = 2 where address = ('3001::1'::inet);" run_statement "update 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)" - run_statement "sflqPickFreeLease6.7" "$sql" "3001::1"; - run_statement "sflqPickFreeLease6.8" "$sql" "3001::2"; - run_statement "sflqPickFreeLease6.9" "$sql" "3001::"; + run_statement "sflqPickFreeLease6.7" "$sql" "3001::"; + run_statement "sflqPickFreeLease6.8" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.9" "$sql" "3001::2"; + # Deleting a lease directly. Pick should still see it. sql="delete from lease6" run_statement "delete 3001::1" "$sql" ""; sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)" - run_statement "sflqPickFreeLease6.10" "$sql" "3001::1"; - run_statement "sflqPickFreeLease6.11" "$sql" "3001::2"; - run_statement "sflqPickFreeLease6.12" "$sql" "3001::"; + run_statement "sflqPickFreeLease6.10" "$sql" "3001::"; + run_statement "sflqPickFreeLease6.11" "$sql" "3001::1"; + run_statement "sflqPickFreeLease6.12" "$sql" "3001::2"; # Check pools with one address. address="'2001:db8::8bd:1002'::inet" diff --git a/src/lib/dhcpsrv/testutils/generic_lease_mgr_unittest.cc b/src/lib/dhcpsrv/testutils/generic_lease_mgr_unittest.cc index 691e11325d..d1e70d4cc0 100644 --- a/src/lib/dhcpsrv/testutils/generic_lease_mgr_unittest.cc +++ b/src/lib/dhcpsrv/testutils/generic_lease_mgr_unittest.cc @@ -5796,19 +5796,25 @@ GenericLeaseMgrTest::testSflqLeaseOps4() { // Create a subnet with a one address pool for simplicity. IOAddress start_address("192.0.2.0"); IOAddress end_address("192.0.2.0"); + Lease4Ptr preop_lease = initializeLease4(start_address.toText()); CfgSubnets4Ptr cfg = CfgMgr::instance().getStagingCfg()->getCfgSubnets4(); Subnet4Ptr subnet; Pool4Ptr pool; - subnet.reset(new Subnet4(start_address, 24, 1, 2, 3, 1)); + subnet.reset(new Subnet4(start_address, 24, 1, 2, 3, preop_lease->subnet_id_)); pool.reset(new Pool4(start_address, end_address)); subnet->addPool(pool); - AllocatorPtr sflq_allocator(new SharedFlqAllocator(Lease::TYPE_V4, subnet)); - subnet->setAllocator(Lease::TYPE_V4, sflq_allocator); + + subnet->setAllocatorType("shared-flq"); + ASSERT_NO_THROW_LOG(subnet->createAllocators()); cfg->add(subnet); + ASSERT_NO_THROW(CfgMgr::instance().commit()); // Should create the SFLQ pool for the subnet. cfg->initAllocatorsAfterConfigure(); + ASSERT_TRUE(SharedFlqAllocator::inUse()); + ASSERT_TRUE(LeaseMgr::useSharedFlqStatement(preop_lease)); + // Defines a list of lease operations. enum LeaseOp { ADD, @@ -5843,12 +5849,15 @@ GenericLeaseMgrTest::testSflqLeaseOps4() { // Delete the lease. {__LINE__, DELETE, Lease::STATE_DEFAULT, !expired, !should_exist, can_pick }, -#if 0 - // @todo This hinges on #4447 + // Add an expired lease. {__LINE__, ADD, Lease::STATE_DEFAULT, - !expired, should_exist, can_pick }, -#endif + expired, should_exist, !can_pick }, + + // Delete the lease. + {__LINE__, DELETE, Lease::STATE_DEFAULT, + !expired, !should_exist, can_pick }, + // Add a reclaimed lease. {__LINE__, ADD, Lease::STATE_EXPIRED_RECLAIMED, !expired, should_exist, can_pick }, @@ -5863,7 +5872,6 @@ GenericLeaseMgrTest::testSflqLeaseOps4() { }; // Iterate over the scenarios. - Lease4Ptr preop_lease = initializeLease4(start_address.toText()); for ( auto const& scenario : scenarios ){ std::ostringstream os; os << "scenario at line: " << scenario.lineno_; @@ -5963,10 +5971,13 @@ GenericLeaseMgrTest::testSflqLeaseOps6(Lease::Type lease_type) { // Create a subnet with a one address pool for simplicity. IOAddress start_address("2001:db8::"); IOAddress end_address("2001:db8::"); + Lease6Ptr preop_lease = initializeLease6(start_address.toText()); + preop_lease->type_ = lease_type; + CfgSubnets6Ptr cfg = CfgMgr::instance().getStagingCfg()->getCfgSubnets6(); Subnet6Ptr subnet; Pool6Ptr pool; - subnet.reset(new Subnet6(start_address, 64, 1, 2, 3, 4, 1)); + subnet.reset(new Subnet6(start_address, 64, 1, 2, 3, 4, preop_lease->subnet_id_)); if (lease_type == Lease::TYPE_NA) { pool.reset(new Pool6(Lease::TYPE_NA, start_address, end_address)); @@ -5980,10 +5991,14 @@ GenericLeaseMgrTest::testSflqLeaseOps6(Lease::Type lease_type) { ASSERT_NO_THROW_LOG(subnet->createAllocators()); cfg->add(subnet); + ASSERT_NO_THROW(CfgMgr::instance().commit()); // Should create the SFLQ pool for the subnet. cfg->initAllocatorsAfterConfigure(); + ASSERT_TRUE(SharedFlqAllocator::inUse()); + ASSERT_TRUE(LeaseMgr::useSharedFlqStatement(preop_lease)); + // Defines a list of lease operations. enum LeaseOp { ADD, @@ -6018,12 +6033,15 @@ GenericLeaseMgrTest::testSflqLeaseOps6(Lease::Type lease_type) { // Delete the lease. {__LINE__, DELETE, Lease::STATE_DEFAULT, !expired, !should_exist, can_pick }, -#if 0 - // @todo This hinges on #4447 + // Add an expired lease. {__LINE__, ADD, Lease::STATE_DEFAULT, - !expired, should_exist, can_pick }, -#endif + expired, should_exist, !can_pick }, + + // Delete the lease. + {__LINE__, DELETE, Lease::STATE_DEFAULT, + !expired, !should_exist, can_pick }, + // Add a reclaimed lease. {__LINE__, ADD, Lease::STATE_EXPIRED_RECLAIMED, !expired, should_exist, can_pick }, @@ -6038,8 +6056,6 @@ GenericLeaseMgrTest::testSflqLeaseOps6(Lease::Type lease_type) { }; // Iterate over the scenarios. - Lease6Ptr preop_lease = initializeLease6(start_address.toText()); - preop_lease->type_ = lease_type; for ( auto const& scenario : scenarios ){ std::ostringstream os; os << "scenario at line: " << scenario.lineno_; diff --git a/src/share/database/scripts/mysql/dhcpdb_create.mysql b/src/share/database/scripts/mysql/dhcpdb_create.mysql index 5c19acffd8..1bd51ea67e 100644 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@ -6854,9 +6854,7 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 on f.address = lease4.address WHERE (f.address > last_address and f.address <= alloc_end_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address ASC LIMIT 1; @@ -6866,9 +6864,7 @@ BEGIN IF (free_address = 0) THEN SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 on f.address = lease4.address WHERE (f.address >= alloc_start_address AND f.address <= last_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address ASC LIMIT 1; END IF; @@ -7022,10 +7018,8 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.bin_address = lease6.address WHERE (f.bin_address > bin_last_address AND f.bin_address <= bin_end_address) - AND (lease6.address IS NULL OR lease6.state = 2) ORDER BY f.bin_address LIMIT 1; @@ -7035,10 +7029,8 @@ BEGIN IF (found_rows() = 0) THEN SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.bin_address = lease6.address WHERE (f.bin_address >= bin_start_address - AND f.bin_address <= bin_last_address) - AND (lease6.address IS NULL OR lease6.state = 2) + AND f.bin_address <= bin_last_address) ORDER BY f.bin_address LIMIT 1; END IF; diff --git a/src/share/database/scripts/mysql/upgrade_033_to_034.sh.in b/src/share/database/scripts/mysql/upgrade_033_to_034.sh.in index 603e1625df..361e55c62b 100755 --- a/src/share/database/scripts/mysql/upgrade_033_to_034.sh.in +++ b/src/share/database/scripts/mysql/upgrade_033_to_034.sh.in @@ -434,9 +434,7 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 on f.address = lease4.address WHERE (f.address > last_address and f.address <= alloc_end_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address ASC LIMIT 1; @@ -446,9 +444,7 @@ BEGIN IF (free_address = 0) THEN SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 on f.address = lease4.address WHERE (f.address >= alloc_start_address AND f.address <= last_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address ASC LIMIT 1; END IF; @@ -603,10 +599,8 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.bin_address = lease6.address WHERE (f.bin_address > bin_last_address AND f.bin_address <= bin_end_address) - AND (lease6.address IS NULL OR lease6.state = 2) ORDER BY f.bin_address LIMIT 1; @@ -616,10 +610,8 @@ BEGIN IF (found_rows() = 0) THEN SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.bin_address = lease6.address WHERE (f.bin_address >= bin_start_address - AND f.bin_address <= bin_last_address) - AND (lease6.address IS NULL OR lease6.state = 2) + AND f.bin_address <= bin_last_address) ORDER BY f.bin_address LIMIT 1; END IF; diff --git a/src/share/database/scripts/pgsql/dhcpdb_create.pgsql b/src/share/database/scripts/pgsql/dhcpdb_create.pgsql index 1661ba95eb..a2b186cd02 100644 --- a/src/share/database/scripts/pgsql/dhcpdb_create.pgsql +++ b/src/share/database/scripts/pgsql/dhcpdb_create.pgsql @@ -6940,9 +6940,7 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 ON f.address = lease4.address WHERE (f.address > last_address and f.address <= p_end_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address LIMIT 1; @@ -6952,9 +6950,7 @@ BEGIN IF (free_address IS NULL) THEN SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 ON f.address = lease4.address WHERE (f.address >= p_start_address AND f.address <= last_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address LIMIT 1; END IF; @@ -7323,9 +7319,8 @@ BEGIN bin_last_address = inetToBytea(last_address); -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 ON f.address = lease6.address - WHERE ((f.bin_address > bin_last_address AND f.bin_address <= bin_end_address) - AND (lease6.address IS NULL OR lease6.state = 2)) + WHERE (f.bin_address > bin_last_address AND + f.bin_address <= bin_end_address) ORDER BY f.bin_address LIMIT 1; @@ -7335,10 +7330,8 @@ BEGIN IF (free_address IS NULL) THEN SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.address = lease6.address - WHERE ((f.bin_address >= bin_start_address AND - f.bin_address <= bin_last_address) - AND (lease6.address IS NULL OR lease6.state = 2)) + WHERE (f.bin_address >= bin_start_address AND + f.bin_address <= bin_last_address) ORDER BY f.bin_address LIMIT 1; END IF; diff --git a/src/share/database/scripts/pgsql/upgrade_032_to_033.sh.in b/src/share/database/scripts/pgsql/upgrade_032_to_033.sh.in index 979e41d73f..1a8db51420 100755 --- a/src/share/database/scripts/pgsql/upgrade_032_to_033.sh.in +++ b/src/share/database/scripts/pgsql/upgrade_032_to_033.sh.in @@ -226,9 +226,7 @@ BEGIN -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 ON f.address = lease4.address WHERE (f.address > last_address and f.address <= p_end_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address LIMIT 1; @@ -238,9 +236,7 @@ BEGIN IF (free_address IS NULL) THEN SELECT f.address INTO free_address FROM free_lease4 f - LEFT JOIN lease4 ON f.address = lease4.address WHERE (f.address >= p_start_address AND f.address <= last_address) - AND (lease4.address IS NULL OR lease4.state = 2) ORDER BY f.address LIMIT 1; END IF; @@ -610,9 +606,8 @@ BEGIN bin_last_address = inetToBytea(last_address); -- Find first address greater than the last pick. SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 ON f.address = lease6.address - WHERE ((f.bin_address > bin_last_address AND f.bin_address <= bin_end_address) - AND (lease6.address IS NULL OR lease6.state = 2)) + WHERE (f.bin_address > bin_last_address AND + f.bin_address <= bin_end_address) ORDER BY f.bin_address LIMIT 1; @@ -622,10 +617,8 @@ BEGIN IF (free_address IS NULL) THEN SELECT f.address INTO free_address FROM free_lease6 f - LEFT JOIN lease6 on f.address = lease6.address - WHERE ((f.bin_address >= bin_start_address AND - f.bin_address <= bin_last_address) - AND (lease6.address IS NULL OR lease6.state = 2)) + WHERE (f.bin_address >= bin_start_address AND + f.bin_address <= bin_last_address) ORDER BY f.bin_address LIMIT 1; END IF;