From 3bd7a960db49f8da38cb89aeefdb04c40cc118e1 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Thu, 9 Oct 2025 15:25:26 +0200 Subject: [PATCH] MT#63724 reduce contract_cnt limit to 10 select count(1) from (select 1 from Y .. limit X) can have a longer runtime, depending on order of rows in table Y. to better limit the runtime, X is reduced from 1000 to 10. the UI will show now "used by 10+ contracts" instead of "used by 1000+ contracts". Change-Id: I028b0569cd5f3325d4bd6bed314517b061e4659b (cherry picked from commit 82b253973e47457164738e8da3bec1ba80eccf7e) (cherry picked from commit 05897591f724661ab7db04fee006ad50d418e33c) --- lib/NGCP/Panel/Controller/Billing.pm | 4 ++-- lib/NGCP/Panel/Controller/Network.pm | 4 ++-- lib/NGCP/Panel/Controller/Package.pm | 4 ++-- lib/NGCP/Panel/Role/API/BillingNetworks.pm | 2 +- lib/NGCP/Panel/Role/API/BillingProfiles.pm | 2 +- lib/NGCP/Panel/Role/API/ProfilePackages.pm | 2 +- lib/NGCP/Panel/Utils/Billing.pm | 2 +- lib/NGCP/Panel/Utils/BillingNetworks.pm | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/NGCP/Panel/Controller/Billing.pm b/lib/NGCP/Panel/Controller/Billing.pm index 3b5e5e4978..a5d1834fc2 100644 --- a/lib/NGCP/Panel/Controller/Billing.pm +++ b/lib/NGCP/Panel/Controller/Billing.pm @@ -47,7 +47,7 @@ sub _profile_resultset_admin { my $rs = $c->model('DB')->resultset('billing_profiles')->search({ 'me.status' => { '!=' => 'terminated' }, }, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::Billing::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::Billing::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }); @@ -61,7 +61,7 @@ sub _profile_resultset_reseller { ->search_rs({ 'me.status' => { '!=' => 'terminated' }, }, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::Billing::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::Billing::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }); diff --git a/lib/NGCP/Panel/Controller/Network.pm b/lib/NGCP/Panel/Controller/Network.pm index 5612881c8b..0e41038f31 100644 --- a/lib/NGCP/Panel/Controller/Network.pm +++ b/lib/NGCP/Panel/Controller/Network.pm @@ -47,7 +47,7 @@ sub _network_resultset_admin { })->search_rs({ 'me.status' => { '!=' => 'terminated' }, }, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }); @@ -65,7 +65,7 @@ sub _network_resultset_reseller { })->search_rs({ 'me.status' => { '!=' => 'terminated' }, }, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }); diff --git a/lib/NGCP/Panel/Controller/Package.pm b/lib/NGCP/Panel/Controller/Package.pm index a5334383ca..6fce977903 100644 --- a/lib/NGCP/Panel/Controller/Package.pm +++ b/lib/NGCP/Panel/Controller/Package.pm @@ -47,7 +47,7 @@ sub _package_resultset_admin { { group_by => 'me.id', })->search_rs( undef, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_voucher_count_stmt() ] , -as => 'voucher_cnt' }, ], }); @@ -64,7 +64,7 @@ sub _package_resultset_reseller { { group_by => 'me.id', })->search_rs( undef, - { '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + { '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_voucher_count_stmt() ] , -as => 'voucher_cnt' }, ], }); diff --git a/lib/NGCP/Panel/Role/API/BillingNetworks.pm b/lib/NGCP/Panel/Role/API/BillingNetworks.pm index ac61f82dcb..173f2b6084 100644 --- a/lib/NGCP/Panel/Role/API/BillingNetworks.pm +++ b/lib/NGCP/Panel/Role/API/BillingNetworks.pm @@ -72,7 +72,7 @@ sub _item_rs { my $item_rs = $c->model('DB')->resultset('billing_networks')->search_rs(); my $search_xtra = { - '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + '+select' => [ { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::BillingNetworks::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }; diff --git a/lib/NGCP/Panel/Role/API/BillingProfiles.pm b/lib/NGCP/Panel/Role/API/BillingProfiles.pm index a5867779f2..db9fed26a0 100644 --- a/lib/NGCP/Panel/Role/API/BillingProfiles.pm +++ b/lib/NGCP/Panel/Role/API/BillingProfiles.pm @@ -19,7 +19,7 @@ sub _item_rs { my $item_rs = $c->model('DB')->resultset('billing_profiles'); my $search_xtra = { - '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + '+select' => [ { '' => \[ NGCP::Panel::Utils::Billing::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::Billing::get_contract_exists_stmt() ] , -as => 'contract_exists' }, { '' => \[ NGCP::Panel::Utils::Billing::get_package_count_stmt() ] , -as => 'package_cnt' }, ], }; diff --git a/lib/NGCP/Panel/Role/API/ProfilePackages.pm b/lib/NGCP/Panel/Role/API/ProfilePackages.pm index 386f0975d7..03ac4e9222 100644 --- a/lib/NGCP/Panel/Role/API/ProfilePackages.pm +++ b/lib/NGCP/Panel/Role/API/ProfilePackages.pm @@ -92,7 +92,7 @@ sub _item_rs { my $item_rs = $c->model('DB')->resultset('profile_packages')->search_rs(); my $search_xtra = { - '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(1000) ] , -as => 'contract_cnt' }, + '+select' => [ { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_contract_count_stmt(10) ] , -as => 'contract_cnt' }, { '' => \[ NGCP::Panel::Utils::ProfilePackages::get_voucher_count_stmt() ] , -as => 'voucher_cnt' }, ], }; diff --git a/lib/NGCP/Panel/Utils/Billing.pm b/lib/NGCP/Panel/Utils/Billing.pm index 2ae69f1da9..8c4d14e993 100644 --- a/lib/NGCP/Panel/Utils/Billing.pm +++ b/lib/NGCP/Panel/Utils/Billing.pm @@ -507,7 +507,7 @@ sub get_datatable_cols { { name => "prepaid", "search" => 0, "title" => $c->loc("Prepaid"), custom_renderer => 'function ( data, type, full, opt ) { opt.escapeHtml = false; return \'\'; }' }, { name => "contract_cnt", "search" => 0, "title" => $c->loc("Used (contracts)"), - custom_renderer => 'function ( data, type, full, opt ) { if(full.contract_cnt > 1000){return \'1000+\'}return full.contract_cnt; }' }, + custom_renderer => 'function ( data, type, full, opt ) { if(full.contract_cnt > 10){return \'10+\'}return full.contract_cnt; }' }, { name => "package_cnt", "search" => 0, "title" => $c->loc("Used (packages)"), }, ); diff --git a/lib/NGCP/Panel/Utils/BillingNetworks.pm b/lib/NGCP/Panel/Utils/BillingNetworks.pm index 9970522791..a700a6dd05 100644 --- a/lib/NGCP/Panel/Utils/BillingNetworks.pm +++ b/lib/NGCP/Panel/Utils/BillingNetworks.pm @@ -201,7 +201,7 @@ sub get_datatable_cols { my $grp_len = 30; return ( { name => "contract_cnt", "search" => 0, "title" => $c->loc("Used (contracts)"), - custom_renderer => 'function ( data, type, full, opt ) { if(full.contract_cnt > 1000){return \'1000+\'}return full.contract_cnt; }' }, + custom_renderer => 'function ( data, type, full, opt ) { if(full.contract_cnt > 10){return \'10+\'}return full.contract_cnt; }' }, { name => "package_cnt", "search" => 0, "title" => $c->loc("Used (packages)"), }, { name => 'blocks_grp', accessor => "blocks_grp", search => 0, title => $c->loc('Network Blocks'), literal_sql => "if(length(".$grp_stmt.") > ".$grp_len.", concat(left(".$grp_stmt.", ".$grp_len."), '...'), ".$grp_stmt.")" },