[Dbix-class] DBIC to DBD::Oracle UTF-8 placeholder checks

Matt S Trout dbix-class at trout.me.uk
Sat Nov 15 21:35:13 GMT 2008


On Mon, Oct 27, 2008 at 02:50:20PM +0000, peter at dragonstaff.com wrote:
> I've a question about the best way to interpose in checking the  
> arguments passed from DBIC via DBI to DBD::Oracle::execute().
> 
> From DBD::Oracle docs
> http://search.cpan.org/~pythian/DBD-Oracle-1.22/Oracle.pm#DBD::Oracle_and_Unicode
> there's a strange situation.
> 
> Data fetched is always returned as UTF-8 marked Perl variables.
> When sending data using placeholders, however, if you use Perl  
> internal byte encoded format variables containing wide characters you  
> can get broken (double encoded) results on re-retrieving.
> 
> Ideally, I'd like to catch the check all the arguments that end up  
> passed to execute() and either throw an exception on non UTF-8 marked  
> vars with wide characters or call decode('iso-8859-1', $var) on each  
> one first.
> This is so I can replicate the behaviour of the BBC's internal caching  
> db library.

Wrap _prep_for_execute?

Factor _dbh_execute out a bit further to make this cleaner?

I see no useful third option from a quick prod.

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/



More information about the DBIx-Class mailing list