[rt-users] Chart problem with PostgreSQL 8.3
Kenneth Marshall
ktm at rice.edu
Tue Feb 3 13:06:40 EST 2009
Just a bug report and a hopefully simple fix. The chart option
for Created Daily, Created Monthly,... gives the following
error when run:
Feb 3 10:54:23 rt1 RT: RT::Handle=HASH(0xa891050) couldn't execute the query 'SELECT COUNT(main.id) AS id, SUBSTR(Created,1,7) AS createdmonthly FROM Tickets main WHERE (main.Status != 'deleted') AND (main.Created > '2008-01-01 06:00:00' AND main.Created < '2009-01-01 06:00:00') AND (main.Type = 'ticket') AND (main.EffectiveId = main.id) GROUP BY SUBSTR(Created,1,7) ' at /usr/site/perl-5.8.8/lib/site_perl/5.8.8/DBIx/SearchBuilder/Handle.pm line 518 DBIx::SearchBuilder::Handle::SimpleQuery('RT::Handle=HASH(0xa891050)', 'SELECT COUNT(main.id) AS id, SUBSTR(Created,1,7) AS createdmo...') called at /usr/site/perl-5.8.8/lib/site_perl/5.8.8/DBIx/SearchBuilder.pm line 238 DBIx::SearchBuilder::_DoSearch('RT::Report::Tickets=HASH(0x86a2630)') called at /usr/site/rt-3.8/DEV/bin/../lib/RT/Tickets_Overlay.pm line 2672 RT::Tickets::_DoSearch('RT::Report::Tickets=HASH(0x86a2630)') called at /usr/site/rt-3.8/DEV/bin/../local/lib/RT/Report/Tickets.pm line 152 RT::Report::Tickets::_DoSearch('RT::Report::Tickets=HASH(
Feb 3 10:54:25 rt1 RT: DBD::Pg::st execute failed: ERROR: function substr(timestamp without time zone, integer, integer) does not exist LINE 1: SELECT COUNT(main.id) AS id, SUBSTR(Created,1,7) AS createdm... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. at /usr/site/perl-5.8.8/lib/site_perl/5.8.8/DBIx/SearchBuilder/Handle.pm line 505. (/usr/site/perl-5.8.8/lib/site_perl/5.8.8/DBIx/SearchBuilder/Handle.pm:505)
I fixed the current problem by making a local change to
lib/RT/Report/Tickets.pm to cast the timestamp to text. Hopefully,
there is a fix that will work across all backends:
--------------------------------
diff -u lib/RT/Report/Tickets.pm .
--- local/lib/RT/Report/Tickets.pm 2009-01-21 13:12:22.000000000 -0600
+++ ./Tickets.pm 2009-02-03 11:06:35.000000000 -0600
@@ -169,13 +169,16 @@
if ($field =~ /^(.*)(Daily|Monthly|Annually)$/) {
my ($field, $grouping) = ($1, $2);
if ( $grouping =~ /Daily/ ) {
- $args{'FUNCTION'} = "SUBSTR($field,1,10)";
+# $args{'FUNCTION'} = "SUBSTR($field,1,10)";
+ $args{'FUNCTION'} = "SUBSTR(${field}::text,1,10)";
}
elsif ( $grouping =~ /Monthly/ ) {
- $args{'FUNCTION'} = "SUBSTR($field,1,7)";
+# $args{'FUNCTION'} = "SUBSTR($field,1,7)";
+ $args{'FUNCTION'} = "SUBSTR(${field}::text,1,7)";
}
elsif ( $grouping =~ /Annually/ ) {
- $args{'FUNCTION'} = "SUBSTR($field,1,4)";
+# $args{'FUNCTION'} = "SUBSTR($field,1,4)";
+ $args{'FUNCTION'} = "SUBSTR(${field}::text,1,4)";
}
} elsif ( $field =~ /^(?:CF|CustomField)\.{(.*)}$/ ) { #XXX: use CFDecipher method
my $cf_name = $1;
--------------------------------
Cheers,
Ken
More information about the rt-users
mailing list