X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FRecord.pm;h=9fa82961b5b63e5a61fbeba6bb69ff2044e4d4ab;hb=a1c46091ebd0cc17bcbe19be266dc2efa9f2d92b;hp=a667f4e7e1ec8ed511c367f88d304abf7d7f1d8a;hpb=f48943ca9b3d280919d5e2d4cb6880ea8f095d7b;p=freeside.git diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index a667f4e7e..9fa82961b 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -32,7 +32,8 @@ our @encrypt_payby = qw( CARD DCRD CHEK DCHK ); #export dbdef for now... everything else expects to find it here our @EXPORT_OK = qw( dbh fields hfields qsearch qsearchs dbdef jsearch - str2time_sql str2time_sql_closing regexp_sql not_regexp_sql concat_sql + str2time_sql str2time_sql_closing regexp_sql not_regexp_sql + concat_sql group_concat_sql midnight_sql ); @@ -3568,6 +3569,24 @@ sub concat_sql { } +=item group_concat_sql COLUMN, DELIMITER + +Returns an SQL expression to concatenate an aggregate column, using +GROUP_CONCAT() for mysql and array_to_string() and array_agg() for Pg. + +=cut + +sub group_concat_sql { + my ($col, $delim) = @_; + $delim = dbh->quote($delim); + if ( driver_name() =~ /^mysql/i ) { + # DISTINCT(foo) is valid as $col + return "GROUP_CONCAT($col SEPARATOR $delim)"; + } else { + return "array_to_string(array_agg($col), $delim)"; + } +} + =item midnight_sql DATE Returns an SQL expression to convert DATE (a unix timestamp) to midnight