[Rt-devel] Re: Problem (and workaround) with Handle.pm in DBIx::SearchQuery used by RT

Stephen Turner sturner at MIT.EDU
Tue Dec 14 09:57:04 EST 2004


Hi,

I was wondering if this problem has been resolved? I encountered the same 
issue myself and ran into a correspondence between Jesse and the humble, 
helpful folks at DBD::Oracle which didn't seem to suggest a solution.

I'm unable to create new users through the web interface, I get an 
ORA-12704 on the Users insert. One piece of information that may be useful 
is that I AM able to create users using a command-line perl script that 
calls the RT API.

Steve

At Tuesday 11/30/2004 07:19 PM, Jesse Vincent wrote:

>On Tue, Nov 30, 2004 at 03:54:05PM -0800, Pei Ku wrote:
> > Hi,
> >
> > First of all, if this is wrong protocol for communication issues, my 
> apology.  I'm not very familiar with open source development 
> bug-reporting protocol.
>
>Hi Pei,
>
>         Thanks very much for the error report.   Generally,
>DBIx-SearchBuilder gets discussed on the rt-devel mailinglist, but I'll
>take good bug reports with extensive triage like yours in whatever
>format and forum I can get them ;)
>
>
> > I am trying to get RT running against an Oracle 9.2.0.4 db.  Here is a 
> summary of what my environment looks like:
> >
> > "App" server is Redhat 8, running the following:
> > 
> httpd-2.0.52/         mod_fastcgi-2.4.2/        perl-5.8.5/         rt-3.2.2/
> > oracle client is 9.2.0.4 for RH/linux
>
>And I'm betting DBD::Oracle 1.16. The error you report has popped up
>since the upgrade to 1.16. Backing down to 1.15 makes it go away again.
>That doesn't mean it's not our bug, just that it wasn't tickled before
>this release.
>
>
> > ORA-12704 seems to surface when CLOB/NCLOB columns are used (based on 
> information from Oracle Metalink support).   The error description seems 
> to indicate this is something that can be fixed with setting NLS_LANG in 
> the client environment; I tried to tweak it to no avail.  In any case, RT 
> seems to hardcode the value to ".UTF8" in the code anyway.
>
>Do you have a sense of what it _should_ be? Everything we've read
>implies that .UTF8 should be acceptable.
>
>
> > Being an Oracle DBA and an occassional perl hacker, I took the 
> challenge to see if I can see what's going on.  After staring the code in 
> Handle.pm ( DBIx::SearchBuilder v1.15) for a while, I uncommented one 
> line and then I was able the get rid of the problem.  The line I 
> uncommented out is line #464
>
>By uncommented out, you really mean "commented out", right?
>
>
>
> >     460         if ( ref( $bind_values[$bind_idx] ) eq "HASH" ) {
> >     461             my $bhash = $bind_values[$bind_idx];
> >     462             $bind_values[$bind_idx] = $bhash->{'value'};
> >     463             delete $bhash->{'value'};
> >     464             #     $sth->bind_param( $bind_idx + 1, undef, $bhash );
> >     465         }
> >
> >     ...
> >
> >     475         eval { $executed = $sth->execute(@bind_values) };
> >
> >
> > I am not a Perl guru, but it looks me line #464 is unnecessary: when 
> $sth->execute is called at line 475, @bind_values is passed as the 
> input.  My understanding is that one should either use $sth->bind_param 
> to set up all the bind values before calling execute(), or just pass 
> @bind_values to $sth->execute(), but not both.  It may be ok to do both 
> (what would take precendence, then?  values set up by bind_param(), or 
> values passed to execute()?), but in some weird cases (such as the 
> presence of CLOB columns in a table), things break.
> >
> > line #464 seems to be binding 'undef' to @bind_values only for those 
> elements that were a HASH/ref.   So line #464 is not really performing 
> binding for all the bind variables; it's only setting those that were a 
> HASH to undef.  I guess I don't understand the rationale behind that.
>
>I'm going to have to dig a bit deeper. I can't remember whether that
>code was added to deal with oracle param binding or something else.
>
>Does a "make regression" pass with your change?
>
>
> > At any rate, now I am able to create new users after commenting out 
> that line.  I don't know if I created new problems by making this change.
> >
> > thanks!
> >
> >
> >
> > Pei L. Ku
> > Manager, Application and Database Services
> > ATC
> > pku at autotradecenter.com
> > office: 650 532 6318
> >
> >
>
>--
>_______________________________________________
>Rt-devel mailing list
>Rt-devel at lists.bestpractical.com
>http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel

Stephen Turner
Senior Programmer/Analyst - Client Support Services
Information Services and Technology (IS&T)

sturner at mit.edu



More information about the Rt-devel mailing list