On Tue, 22 Apr 2008 11:24:17 +0100, Tim Bunce <[EMAIL PROTECTED]> wrote:
> The DBI needs to sort the keys in %$attr for connect_cached and
> prepare_cached to ensure a canonical cache key is generated.
> 
> Currently this is done in perl and is relatively expensive:
> 
>     my @attr_keys = ($attr) ? sort keys %$attr : ();
>     my $key = do { local $^W; # silence undef warnings
>         join "~~", $dsn, $user, $auth, $attr ? 
> (@attr_keys,@[EMAIL PROTECTED]) : ()
>     };
> 
>     my @attr_keys = ($attr) ? sort keys %$attr : ();
>     my $key = ($attr) ? join("~~", $statement, @attr_keys,
> @[EMAIL PROTECTED]) : $statement;
> 
> I'd like to wrap that up into a _concat_hash_keys( \%hash, $separator,
> [EMAIL PROTECTED] )
> function implemented in C..
> 
> As part of that we'd need a function to return the keys of a hash in
> sorted order. That just needs to allocate an array of char*'s, load it
> with pointers to each of the keys in the hash, and then call qsort().
> 
> The bonus is that that function would enable the ParamValues reported by
> ShowErrorStatement to be listed in sorted order:
>     http://rt.cpan.org/Ticket/Display.html?id=27272
> (function could take a flag to indicate lexical or numeric sort order)
> 
> Any volunteers, either for both or just the sort function?
> 

Hi Tim,

I would be happy to take a crack at them tomorrow -- actually I have a
rough draft implementation that I will work on cleaning up and testing. 

-r


Reply via email to