From 7517eaa583bcb213b62dfd0c11288aa50a350e8a Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 25 Aug 2006 19:30:52 +0000 Subject: use GROUP BY instead of DISTINCT ON in the state and country queries for better cross-database compatibility, based on a preliminary patch from Jason Thomas --- FS/FS/Misc.pm | 10 ++++++---- FS/FS/Record.pm | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'FS') diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index 101a2d4e0..06fa51f54 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -359,10 +359,12 @@ sub states_hash { # sort map { s/[\n\r]//g; $_; } map { $_->state; } - qsearch( 'cust_main_county', - { 'country' => $country }, - 'DISTINCT ON ( state ) *', - ) + qsearch({ + 'select' => 'state', + 'table' => 'cust_main_county', + 'hashref' => { 'country' => $country }, + 'extra_sql' => 'GROUP BY state', + }) ; #it could throw a fatal "Invalid country code" error (for example "AX") diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index a551bb8cc..cc7f551e9 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -388,7 +388,7 @@ sub qsearch { my %result; tie %result, "Tie::IxHash"; my @stuff = @{ $sth->fetchall_arrayref( {} ) }; - if($pkey) { + if ( $pkey && $stuff[0]->{$pkey} ) { %result = map { $_->{$pkey}, $_ } @stuff; } else { @result{@stuff} = @stuff; -- cgit v1.2.1