Hi, I am having a bit of trouble using aggregate functions with DBI::CSV (version 0.22) and could use some help figuring out why.
I have the following code snippet that queries a CSV file named "masterdata", located at c:/test/output folder. ============================ use DBI; my $dbh = DBI->connect("DBI:CSV:f_dir=c:/test/output") or die "Cannot connect: " . $DBI::errstr(); my $sth = $dbh->prepare("SELECT callingPartyUnicodeLoginUserID as user, count(duration) as calls, sum(duration) as duration FROM cmasterdata WHERE dateTimeOrigination > 1201979253 AND callingPartyUnicodeLoginUserID not like '' group by callingPartyUnicodeLoginUserID order by calls desc") or die "Cannot prepare: " . $dbh->errstr(); eval { $sth->execute(); } if ($@) { print "error: [EMAIL PROTECTED]"; } ============================= The execute() statement above fails with the following error message when there are no matching records in the CSV file. DBD::CSV::st execute failed: Can't use an undefined value as an ARRAY reference at C:/MYINST~1/objects/perl/ActivePerl- 5.8.8.822-MSWin32-x86-280952/site/lib/SQL/Statement.pm line 1197, <GEN0> line 242. [for Statement "SELECT callingPartyUnicodeLoginUserID as users,count(duration)as calls,sum(duration) as duration FROM masterdata WHERE dateTimeOrigination > 1201991649 AND callingPartyUnicodeLoginUserID not like '' group by callingPartyUnicodeLoginUserID order by calls desc"] However, the code runs fine (on the same CSV file) if I remove aggregate functions from the query. For example, the following query is fine: SELECT callingPartyUnicodeLoginUserID as user, dateTimeOrigination as datetime FROM cmasterdata WHERE dateTimeOrigination > 1201979253 AND callingPartyUnicodeLoginUserID not like '' Is there a known issue with DBD::CSV where trying aggregate functions when no matching records gives an error, or am I just doing something wrong here? TIA, Ashok