RT 3.6.0pre - Listings disappering from RT at a glance

Would like to know if anybody has experienced this? I am new to RT.
Located the place in SearchBuilder.pm where the problem was (in 3.5.7)
but not sure where to fix it or whether there is some other issue?

Thanks in advance

RT version: 3.6.0pre (was also observed in 3.5.7)
Server info: Linux // 2.6.15-1.1831_FC4 #1
Tue Feb 7 13:37:42 EST 2006 i686 i686 i386 GNU/Linux

Bug Description:

Listings disappering from RT at a glance

Refer to the listings are displayed on the home page (RT at a glance).
User clicks the Edit hyperlink in “10 highest priority tickets I own”,
and changes rows per page in the resulting preference page and saves.
When the RT at a glance is displayed again the ticket entries are lost
in the section “10 highest priority tickets”. This is because of a bug
in SearchBuilder.pm which attempts to string together the query. At some
point one of the components of the query happens to be an array
reference which is incorrect. Sample error (One DBI error corresponds to
display of “10 highest priority tickets” and the other to display of “10
newest unowned tickets
<Search/Results.html?Order=DESC&Query=%20Owner%20%3D%20%27Nobody%27%20AND%20%28%20Status%20%3D%20%27new%27%20OR%20Status%20%3D%20%27open%27%29&OrderBy=Created&Format=%27%3Ca%20href%3D%22%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__id__%3C%2Fa%3E%2FTITLE%3A%23%27%2C%20%27%3Ca%20href%3D%22%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__Subject__%3C%2Fa%3E%2FTITLE%3ASubject%27%2C%20QueueName%2C%20ExtendedStatus%2C%20CreatedRelative%2C%20%27%3CA%20HREF%3D%22%2Frt%2FTicket%2FDisplay.html%3FAction%3DTake%26id%3D__id__%22%3ETake%3C%2Fa%3E%2FTITLE%3A%26nbsp%3B%27%20>”):

[Thu Mar 23 21:28:16 2006] [warning]: DBD::Oracle::db prepare failed:
ORA-00907: missing right parenthesis (DBD ERROR: error possibly near <>
indicator at char 301 in 'SELECT * FROM ( SELECT limitquery.
,rownum
limitrownum FROM ( SELECT main.* FROM Tickets main WHERE
((main.EffectiveId = main.id)) AND ((main.Status != ‘deleted’)) AND
((main.Type = ‘ticket’)) AND ( ( (main.Owner = ‘22’) ) AND (
(main.Status = ‘new’)OR(main.Status = ‘open’) ) ) ORDER BY
ARRAY(main<>.0xbe2a138) ASC ) limitquery WHERE rownum <= 10 ) WHERE
limitrownum >= 1’) [for Statement "SELECT * FROM ( SELECT
limitquery.
,rownum limitrownum FROM ( SELECT main.* FROM Tickets main
WHERE ((main.EffectiveId = main.id)) AND ((main.Status != ‘deleted’))
AND ((main.Type = ‘ticket’)) AND ( ( (main.Owner = ‘22’) ) AND (
(main.Status = ‘new’)OR(main.Status = ‘open’) ) ) ORDER BY
ARRAY(main.0xbe2a138) ASC ) limitquery WHERE rownum <= 10 ) WHERE
limitrownum >= 1"] at
/usr/lib/perl5/vendor_perl/5.8.6/DBIx/SearchBuilder/Handle.pm line 453,
line 41.
(/usr/lib/perl5/vendor_perl/5.8.6/DBIx/SearchBuilder/Handle.pm:453)
[Thu Mar 23 21:28:16 2006] [warning]: RT::Handle=HASH(0xb673854)
couldn’t prepare the query ‘SELECT * FROM ( SELECT limitquery.,rownum
limitrownum FROM ( SELECT main.
FROM Tickets main WHERE
((main.EffectiveId = main.id)) AND ((main.Status != ‘deleted’)) AND
((main.Type = ‘ticket’)) AND ( ( (main.Owner = ‘22’) ) AND (
(main.Status = ‘new’)OR(main.Status = ‘open’) ) ) ORDER BY
ARRAY(main.0xbe2a138) ASC ) limitquery WHERE rownum <= 10 ) WHERE
limitrownum >= 1’ORA-00907: missing right parenthesis (DBD ERROR: error
possibly near <> indicator at char 301 in 'SELECT * FROM ( SELECT
limitquery.
,rownum limitrownum FROM ( SELECT main.* FROM Tickets main
WHERE ((main.EffectiveId = main.id)) AND ((main.Status != ‘deleted’))
AND ((main.Type = ‘ticket’)) AND ( ( (main.Owner = ‘22’) ) AND (
(main.Status = ‘new’)OR(main.Status = ‘open’) ) ) ORDER BY
ARRAY(main<*>.0xbe2a138) ASC ) limitquery WHERE rownum <= 10 ) WHERE
limitrownum >= 1’)
(/usr/lib/perl5/vendor_perl/5.8.6/DBIx/SearchBuilder/Handle.pm:460)

RT_SiteConfig.pm:
Set( $rtname, ‘/somevalidname/’);
Set($Organization , “/orgname/”);
Set($DatabaseHost , ‘</fully qualified database hostname>/’);
Set($DatabaseRTHost , ‘/fully qualified database hostname/’);
Set($DatabasePort , ‘1521’);
Set($DatabaseUser , ‘REQTRACKER’);
Set($DatabasePassword , ‘???’);
Set($DatabaseName , ‘host=</fully qual database
hostname/>;port=1521;sid=</database SID/>’);
Set($OwnerEmail , ‘/valid email address/’);
Set($MailCommand , ‘sendmailpipe’);
Set($SendmailPath , ‘/usr/sbin/sendmail’);
Set($SendmailArguments, “-oi -t -ODeliveryMode=b -OErrorMode=m”);
Set($CorrespondAddress, “//”);
Set($CommentAddress, “</valid email address>/”);
Set($NotifyActor, 0);
Set($WebPath , “/rt”);
Set($WebBaseURL , “http:////:8080”);
Set($WebExternalAuth, ‘true’);
Set($WebExternalAuto, ‘true’);
Set($LogToSyslog, ‘’); # disable syslog
Set($LogToFile, ‘debug’); # Set file logging to include everything
Set($LogDir, ‘/home/radhakrr/rtdev/var/log’); # path to log
Set($LogToFileNamed, ‘rt.log’); # logfile name

Set($MyTicketsLength, 20); # What does this do?

1;

Loaded perl modules

Perl v5.8.6 under linux
Apache2::Const v2.000001;
Apache2::Log v2.000001;
Apache2::Module v2.000001;
Apache2::RequestIO v2.000001;
Apache2::RequestRec v2.000001;
Apache2::RequestUtil v2.000001;
Apache2::Response v2.000001;
Apache2::ServerUtil v2.000001;
Apache2::Status v3.00;
Apache::DBI v0.9901;
Apache::Session v1.6;
Apache::Session::File v1.54;
Apache::Session::Generate::MD5 v2.1;
Apache::Session::lock::File v1.02;
Apache::Session::Serialize::Storable v1.00;
Apache::Session::Store::File v1.02;
APR v0.009000;
APR::Pool v0.009000;
APR::Table v0.009000;
AutoLoader v5.60;
base v2.06;
Benchmark v1.06;
bytes v1.01;
Cache::Simple::TimedExpiry v0.23;
Carp v1.03;
CGI v3.10;
CGI::Cookie v1.25;
CGI::Util v1.5;
Class::Container v0.12;
Class::Data::Inheritable v0.04;
Class::ReturnValue v0.53;
Clone v0.18;
Compress::Zlib v1.37;
constant v1.04;
Convert::ASN1 v0.19;
Cwd v3.01;
Data::Dumper v2.121_02;
DBD::Oracle v1.16;
DBI v1.48;
DBIx::SearchBuilder v1.38;
DBIx::SearchBuilder::Union v0;
DBIx::SearchBuilder::Unique v0.01;
Devel::StackTrace v1.12;
Devel::StackTraceFrame v0.6;
Digest::base v1.00;
Digest::MD5 v2.33;
DynaLoader v1.05;
Encode v2.08;
Encode::Alias v2.02;
Encode::Config v2.00;
Encode::Encoding v2.02;
Errno v1.09;
Exception::Class v1.21;
Exception::Class::Base v1.2;
Exporter v5.58;
Exporter::Heavy v5.58;
Fcntl v1.05;
File::Basename v2.73;
File::Glob v1.03;
File::Path v1.06;
File::Spec v3.01;
File::Spec::Unix v1.5;
File::Temp v0.14;
FileHandle v2.01;
HTML::Entities v1.29;
HTML::HeadParser v2.21;
HTML::Mason v1.3101;
HTML::Mason::ApacheHandler v1.69;
HTML::Mason::Exception v1.1;
HTML::Mason::Exception::Abort v1.1;
HTML::Mason::Exception::Compilation v1.1;
HTML::Mason::Exception::Compilation::IncompatibleCompiler v1.1;
HTML::Mason::Exception::Compiler v1.1;
HTML::Mason::Exception::Decline v1.1;
HTML::Mason::Exception::Params v1.1;
HTML::Mason::Exception::Syntax v1.1;
HTML::Mason::Exception::System v1.1;
HTML::Mason::Exception::TopLevelNotFound v1.1;
HTML::Mason::Exception::VirtualMethod v1.1;
HTML::Mason::Exceptions v1.43;
HTML::Parser v3.45;
HTML::Scrubber v0.08;
HTTP::Date v1.46;
HTTP::Headers v1.62;
HTTP::Message v1.56;
HTTP::Request v1.40;
HTTP::Response v1.52;
HTTP::Status v1.28;
I18N::LangTags v0.35;
I18N::LangTags::Detect v1.03;
integer v1.00;
IO v1.21;
IO::File v1.10;
IO::Handle v1.24;
IO::InnerFile v2.110;
IO::Lines v2.110;
IO::Scalar v2.110;
IO::ScalarArray v2.110;
IO::Seekable v1.09;
IO::Select v1.16;
IO::Socket v1.28;
IO::Socket::INET v1.27;
IO::Socket::UNIX v1.21;
IO::Wrap v2.110;
IO::WrapTie v2.110;
IPC::Open2 v1.01;
IPC::Open3 v1.0106;
lib v0.5565;
List::Util v1.14;
locale v1.00;
Locale::Maketext v1.09;
Locale::Maketext::Fuzzy v0.02;
Locale::Maketext::Lexicon v0.53;
Locale::Maketext::Lexicon::Gettext v0.14;
Log::Dispatch v2.11;
Log::Dispatch::Base v1.09;
Log::Dispatch::File v1.22;
Log::Dispatch::Output v1.26;
Log::Dispatch::Screen v1.17;
LWP v5.803;
LWP::Protocol v1.43;
LWP::UserAgent v2.033;
Mail::Address v1.67;
Mail::Field v1.67;
Mail::Field::AddrList v1.67;
Mail::Field::Date v1.67;
Mail::Header v1.67;
Mail::Internet v1.67;
MIME::Base64 v3.05;
MIME::Body v5.419;
MIME::Decoder v5.419;
MIME::Entity v5.419;
MIME::Field::ContDisp v5.419;
MIME::Field::ConTraEnc v5.419;
MIME::Field::ContType v5.419;
MIME::Field::ParamVal v5.419;
MIME::Head v5.419;
MIME::Parser v5.419;
MIME::QuotedPrint v3.03;
MIME::Tools v5.419;
MIME::Words v5.419;
mod_perl v2.000001;
mod_perl2 v2.000001;
ModPerl::Const v2.000001;
Module::Versions::Report v1.02;
Net::HTTP v1.00;
Net::HTTP::Methods v1.02;
Net::LDAP v0.33;
Net::LDAP::ASN v0.03;
Net::LDAP::Constant v0.04;
Net::LDAP::Message v1.08;
overload v1.02;
Params::Validate v0.80;
POSIX v1.08;
re v0.04;
Regexp::Common v2.120;
Regexp::Common::delimited v2.104;
RT v3.6.0pre0;
RT::Interface::Email v1.02;
Scalar::Util v1.14;
SelectSaver v1.00;
Socket v1.77;
Storable v2.13;
strict v1.03;
Symbol v1.05;
Text::Autoformat v1.13;
Text::Quoted v1.8;
Text::Reform v1.11;
Text::Tabs v98.112801;
Text::Template v1.44;
Text::Wrapper v1.000;
Tie::Hash v1.01;
Time::HiRes v1.65;
Time::JulianDay v2003.1125;
Time::Local v1.1;
Time::ParseDate v2003.1126;
Time::Timezone v2003.0211;
Time::Zone v2.22;
Tree::Simple v1.15;
URI v1.35;
URI::Escape v3.28;
utf8 v1.04;
vars v1.01;
warnings v1.03;
warnings::register v1.00;
XSLoader v0.02;

RT Variables

RT::AmbiguousDayInPast 1
RT::BasePath /home/radhakrr/rtdev
RT::BinPath /home/radhakrr/rtdev/bin
RT::CORE_CONFIG_FILE /home/radhakrr/rtdev/etc/RT_Config.pm
RT::CommentAddress </some valid email address>/
RT::CorrespondAddress </some valid email address>/
RT::DatabaseHost </fully qualified database hostname>/
RT::DatabaseName host=</fully qualified host name>/;port=1521;sid=/
RT::DatabasePassword /Password not printed/
RT::DatabasePort 1521
RT::DatabaseRTHost </fully qualified host name>/
RT::DatabaseType Oracle
RT::DatabaseUser REQTRACKER
RT::DateDayBeforeMonth 1
RT::DefaultSearchResultFormat ‘id/TITLE:#’, ‘Subject/TITLE:Subject’,
Status, QueueName, OwnerName, Priority, ‘NEWLINE’, ‘’,
Requestors’, ‘CreatedRelative’,
ToldRelative’,
LastUpdatedRelative’, ‘TimeLeft
RT::DefaultSummaryRows 10
RT::EmailOutputEncoding utf-8
RT::EtcPath /home/radhakrr/rtdev/etc
RT::FriendlyFromLineFormat “%s via RT” <%s>
RT::FriendlyToLineFormat “%s of </RT Systemname>/ Ticket #%s”:;
RT::LinkTransactionsRun1Scrip 1
RT::LocalEtcPath /home/radhakrr/rtdev/local/etc
RT::LocalLexiconPath /home/radhakrr/rtdev/local/po
RT::LocalPath /home/radhakrr/rtdev/local
RT::LogDir /home/radhakrr/rtdev/var/log
RT::LogToFile debug
RT::LogToFileNamed rt.log
RT::LogToScreen error
RT::LogoURL /rt/NoAuth/images/bplogo.gif
RT::LoopsToRTOwner 1
RT::MailCommand sendmailpipe
RT::MasonComponentRoot /home/radhakrr/rtdev/share/html
RT::MasonDataDir /home/radhakrr/rtdev/var/mason_data
RT::MasonLocalComponentRoot /home/radhakrr/rtdev/local/html
RT::MasonSessionDir /home/radhakrr/rtdev/var/session_data
RT::MaxAttachmentSize 10000000
RT::MaxInlineBody 13456
RT::MessageBoxWidth 72
RT::MessageBoxWrap HARD
RT::MinimumPasswordLength 5
RT::Organization </org name>/
RT::OwnerEmail </valid email address>/
RT::RTAddressRegexp </a valid regexp>/
RT::RecordOutgoingEmail 1
RT::RedistributeAutoGeneratedMessages privileged
RT::SITE_CONFIG_FILE /home/radhakrr/rtdev/etc/RT_SiteConfig.pm
RT::SendmailArguments -oi -t -ODeliveryMode=b -OErrorMode=m
RT::SendmailBounceArguments -f “<>”
RT::SendmailPath /usr/sbin/sendmail
RT::Timezone </valid TimeZone>/
RT::UseFriendlyFromLine 1
RT::VERSION 3.6.0pre0
RT::VarPath /home/radhakrr/rtdev/var
RT::WebBaseURL http://</fully qualified server name>/:8080
RT::WebDefaultStylesheet 3.5-default
RT::WebExternalAuth true
RT::WebExternalAuto true
RT::WebFlushDbCacheEveryRequest 1
RT::WebImagesURL /rt/NoAuth/images/
RT::WebPath /rt
RT::WebPort 80
RT::WebURL http:////:8080/rt/
RT::rtname //

Perl configuration

Summary of my perl5 (revision 5 version 8 subversion 6) configuration:
Platform:
osname=linux, osvers=2.6.9-22.18.bz155725.elsmp, archname=i386-linux-thread-multi
uname=‘linux hs20-bc1-5.build.redhat.com 2.6.9-22.18.bz155725.elsmp #1 smp thu nov 17 15:34:08 est 2005 i686 i686 i386 gnulinux ’
config_args=’-des -Doptimize=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -m32 -march=i386 -mtune=pentium4 -fasynchronous-unwind-tables -Dversion=5.8.6 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_endprotoent_r_proto -Ud_endservent_r_proto -Ud_sethostent_r_proto -Ud_setprotoent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.5 5.8.4 5.8.3’
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc=‘gcc’, ccflags =‘-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm’,
optimize=‘-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -m32 -march=i386 -mtune=pentium4 -fasynchronous-unwind-tables’,
cppflags=‘-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm’
ccversion=‘’, gccversion=‘4.0.2 20051125 (Red Hat 4.0.2-8)’, gccosandvers=‘’
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype=‘long’, ivsize=4, nvtype=‘double’, nvsize=8, Off_t=‘off_t’, lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld=‘gcc’, ldflags =’ -L/usr/local/lib’
libpth=/usr/local/lib /lib /usr/lib
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.5.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version=‘2.3.5’
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=‘-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE’
cccdlflags=‘-fPIC’, lddlflags=‘-shared -L/usr/local/lib’

Would like to know if anybody has experienced this? I am new to RT.
Located the place in SearchBuilder.pm where the problem was (in 3.5.7)
but not sure where to fix it or whether there is some other issue?

I think this is fixed in SVN. See:

http://www.gossamer-threads.com/lists/rt/devel/54099#54099

Cheers!

–j
Jim Meyer, Geek at Large purp@acm.org

Jim Meyer wrote:

Would like to know if anybody has experienced this? I am new to RT.
Located the place in SearchBuilder.pm where the problem was (in 3.5.7)
but not sure where to fix it or whether there is some other issue?

I think this is fixed in SVN. See:

Carbon60: Managed Cloud Services

Cheers!

–j

Jim - The thread you mentioned does not seem to fix this. I think the
SearchBuilder.pm breaks down when you go to edit the options for
displaying (“10 highest priority tickets I own” or “10 newest unowned
tickets”). When the options are edited and any change is made to “Order
by” dropdowns, it results in _OrderClause method of SearchBuilder.pm
getting impacted.
The values of rowhash hash (corresponding to keys ‘ALIAS’, ‘FIELD’ and
‘ORDER’) are no longer scalars but ARRAY references.
The following appears to fix this:
SearchBuilder.pm.20060321 - SearchBuilder.pm version 1.40 downloaded
from CPAN.
SearchBuilder.pm - Version I modified.

I had exported
PERL5LIB=“/home/radhakrr/perl/lib/perl5/5.8.6:/home/radhakrr/perl/lib/perl5/site_perl/5.8.6”
so that my modified SearchBuilder got picked up first before the one in
/usr/lib/perl5/…

/home/radhakrr/perl/lib/perl5/site_perl/5.8.6/DBIx>diff
SearchBuilder.pm.20060321 SearchBuilder.pm | more
1075a1076

1086,1096c1087,1111
<
< if ($rowhash{‘FIELD’} =~ /^(\w+()(.*))$/) {
< # handle ‘FUNCTION(FIELD)’ formatted fields
< $rowhash{‘ALIAS’} = $1 . $rowhash{‘ALIAS’};
< $rowhash{‘FIELD’} = $2;
< }
<
< $clause .= ($clause ? ", " : " ");
< $clause .= $rowhash{‘ALIAS’} . “.”;
< $clause .= $rowhash{‘FIELD’} . " ";
< $clause .= $rowhash{‘ORDER’};

        my (@tmp_alias, @tmp_field, @tmp_order);
        my ($tmp_alias, $tmp_field, $tmp_order);
        my $prev_valid_alias;

        @tmp_alias = (ref($rowhash{'ALIAS'}) eq "ARRAY") ? 

@{$rowhash{‘ALIAS’}} : ($rowhash{‘ALIAS’});

        @tmp_field = (ref($rowhash{'FIELD'}) eq "ARRAY") ? 

@{$rowhash{‘FIELD’}} : ($rowhash{‘FIELD’});

        @tmp_order = (ref($rowhash{'ORDER'}) eq "ARRAY") ? 

@{$rowhash{‘ORDER’}} : ($rowhash{‘ORDER’});

        for my $i (0..$#tmp_field)
        {
            ($tmp_alias, $tmp_field, $tmp_order) = 

($tmp_alias[$i], $tmp_field[$i], $tmp_order[$i]);

Jim Meyer wrote:

Would like to know if anybody has experienced this? I am new to RT.
Located the place in SearchBuilder.pm where the problem was (in 3.5.7)
but not sure where to fix it or whether there is some other issue?

I think this is fixed in SVN. See:

Carbon60: Managed Cloud Services

Cheers!

–j

Jim - The thread you mentioned does not seem to fix this. I think the
Yep, fix is in another revision but anyway problem is fixed in the RT-3.4 svn.

SearchBuilder.pm breaks down when you go to edit the options for displaying
(“10 highest priority tickets I own” or “10 newest unowned tickets”). When
the options are edited and any change is made to “Order by” dropdowns, it
results in _OrderClause method of SearchBuilder.pm getting impacted.
The values of rowhash hash (corresponding to keys ‘ALIAS’, ‘FIELD’ and
‘ORDER’) are no longer scalars but ARRAY references.
The following appears to fix this:
SearchBuilder.pm.20060321 - SearchBuilder.pm version 1.40 downloaded from
CPAN.
SearchBuilder.pm - Version I modified.
I think this patch should work too, but RT uses old DBIx::SB API in
other places and that was more correct to fix RT instead of changing
SB.

You could cleanup patch a little and send it to rt-devel@ list in diff
-u format.

I had exported
PERL5LIB=“/home/radhakrr/perl/lib/perl5/5.8.6:/home/radhakrr/perl/lib/perl5/site_perl/5.8.6”
so that my modified SearchBuilder got picked up first before the one in
/usr/lib/perl5/…

/home/radhakrr/perl/lib/perl5/site_perl/5.8.6/DBIx>diff
SearchBuilder.pm.20060321 SearchBuilder.pm | more
1075a1076

1086,1096c1087,1111
<
< if ($rowhash{‘FIELD’} =~ /^(\w+()(.*))$/) {
< # handle ‘FUNCTION(FIELD)’ formatted fields
< $rowhash{‘ALIAS’} = $1 . $rowhash{‘ALIAS’};
< $rowhash{‘FIELD’} = $2;
< }
<
< $clause .= ($clause ? ", " : " ");
< $clause .= $rowhash{‘ALIAS’} . “.”;
< $clause .= $rowhash{‘FIELD’} . " ";
< $clause .= $rowhash{‘ORDER’};

        my (@tmp_alias, @tmp_field, @tmp_order);
        my ($tmp_alias, $tmp_field, $tmp_order);
        my $prev_valid_alias;

        @tmp_alias = (ref($rowhash{'ALIAS'}) eq "ARRAY") ?

@{$rowhash{‘ALIAS’}} : ($rowhash{‘ALIAS’});

        @tmp_field = (ref($rowhash{'FIELD'}) eq "ARRAY") ?

@{$rowhash{‘FIELD’}} : ($rowhash{‘FIELD’});

        @tmp_order = (ref($rowhash{'ORDER'}) eq "ARRAY") ?

@{$rowhash{‘ORDER’}} : ($rowhash{‘ORDER’});

        for my $i (0..$#tmp_field)
        {
            ($tmp_alias, $tmp_field, $tmp_order) = ($tmp_alias[$i],

$tmp_field[$i], $tmp_order[$i]);

            next if ($tmp_field =~ /^\s*$/);
          if ($tmp_field =~ /^(\w+\()(.*\))$/) {
              # handle 'FUNCTION(FIELD)' formatted fields
              $tmp_alias = $1 . $tmp_alias;
              $tmp_field = $2;
          }

            $clause .= ($clause ? ", " : " ");
            $clause .= $tmp_alias . "." if ($tmp_alias =~ /^\w+$/);
            $clause .= $tmp_field . " ";
            $clause .= $tmp_order;
        }

List info:
The rt-devel Archives

Best Practical is hiring! Come hack Perl for us:
Careers — Best Practical Solutions

Best regards, Ruslan.