diff options
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/Record.pm | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 31b6070a3..d783870cc 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -224,19 +224,27 @@ sub qsearch { if ( ! defined( $record->{$_} ) || $record->{$_} eq '' ) { if ( $op eq '=' ) { - if ( driver_name =~ /^Pg$/i ) { - qq-( $column IS NULL OR $column = '' )-; + if ( driver_name eq 'Pg' ) { + if ( $dbdef->table($table)->column($column)->type =~ /(int)/i ) { + qq-( $column IS NULL )-; + } else { + qq-( $column IS NULL OR $column = '' )-; + } } else { qq-( $column IS NULL OR $column = "" )-; } } elsif ( $op eq '!=' ) { - if ( driver_name =~ /^Pg$/i ) { - qq-( $column IS NOT NULL AND $column != '' )-; + if ( driver_name eq 'Pg' ) { + if ( $dbdef->table($table)->column($column)->type =~ /(int)/i ) { + qq-( $column IS NOT NULL )-; + } else { + qq-( $column IS NOT NULL AND $column != '' )-; + } } else { qq-( $column IS NOT NULL AND $column != "" )-; } } else { - if ( driver_name =~ /^Pg$/i ) { + if ( driver_name eq 'Pg' ) { qq-( $column $op '' )-; } else { qq-( $column $op "" )-; |