David Mansfield wrote:
Hi All,

I submitted a bug via the email interface to rt: bug-dbd-oracle at
rt.cpan.org, but I have no reason to believe that bug report got
through.  I didn't want to have to register a bunch of places to submit
a bug, but I'm willing to if its the only way.  Otherwise, is there
someplace I can see if my bug got through correctly?

http://rt.cpan.org/Public/Dist/Display.html?Name=DBD-Oracle

Doesn't look like it did.

Here's the text of my report FWIW:

Subject: execute_array does not honor UTF8 flag like execute does (and
like docs say it should)

Body:

Hi All.

When a statement with placeholders is 'execute'd then DBD::Oracle
follows the docs as per the section 'Sending Data using Placeholders',
with respect to bound variables with the utf8 flag set (i.e a "Perl
Unicode string").

However, if 'execute_array' is used, only the NLS_LANG controls this
behavior (and database values can be corrupted as a result).

This appears to be due to the fact that dbdimp.c:do_bind_array_exec
doesn't (actually CAN'T) have the same logic that the the other 'rebind'
methods have for handling UTF8.
My suggestion:

* execute and execute_array MUST have the exact same semantics

* in the guts of ora_st_execute_array, have the code check in the nested
'for' loops over the data for consistency of the utf8 flag across the
entire list of values for a given placeholder

* if all of the values are UTF8, use the existing approach as the normal
bind (check csform, csid etc)

* if some values are UTF8, others are not, croak with "cannot mix
Unicode and native encoding in execute_array for placeholder :foo"

I'm not subscribed to anything, so if possible, cc me on any follow ups?

Thanks,
David




Interesting issue. I have a lot of execute_array calls with utf-8 data so I'll go away and check where and when I have NLS_LANG set.

The DBD::Oracle maintainer is on this list but I cannot comment as to his preference for how bugs are reported.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to