Thanks, applied.

Tim.

On Mon, Jan 26, 2004 at 10:18:03AM -0000, Avis, Ed wrote:
> This patch to DBI-1.40 fixes an error
> 
> Can't use an undefined value as an ARRAY reference at DBI.pm line 1735
> 
> when using execute_array() with zero values for a bind parameter.  It
> includes some new test cases, but not all of the new tests failed
> before.
> 
> diff -ru DBI-1.40/DBI.pm DBI-1.40-new/DBI.pm
> --- DBI-1.40/DBI.pm   2004-01-08 14:03:57.000000000 +0000
> +++ DBI-1.40-new/DBI.pm       2004-01-26 10:15:46.000000000 +0000
> @@ -1719,7 +1719,7 @@
>  
>      sub execute_for_fetch {
>       my ($sth, $fetch_tuple_sub, $tuple_status) = @_;
> -     @$tuple_status = () if $tuple_status; # reset the status array
> +     @$tuple_status = (); # reset the status array
>  
>       my ($err_count, %errstr_cache);
>       while ( my $tuple = &$fetch_tuple_sub() ) {
> diff -ru DBI-1.40/t/15array.t DBI-1.40-new/t/15array.t
> --- DBI-1.40/t/15array.t      2003-08-20 01:15:34.000000000 +0100
> +++ DBI-1.40-new/t/15array.t  2004-01-26 10:15:15.000000000 +0000
> @@ -3,7 +3,7 @@
>  use strict;
>  use Test;
>  
> -BEGIN { plan tests => 34 }
> +BEGIN { plan tests => 39 }
>  
>  use Data::Dumper;
>  $Data::Dumper::Indent = 0;
> @@ -68,6 +68,25 @@
>  $dumped = Dumper($tuple_status);
>  ok( $dumped, "[1,1,1]");
>  
> +# --- with no values for bind params, should execute zero times
> +
> [EMAIL PROTECTED] = ();
> +ok( $sth->execute_array( { ArrayTupleStatus => $tuple_status },
> +        [], [], [], [],
> +    ),
> +    0);
> +ok( @$rows, 0 );
> +ok( @$tuple_status, 0 );
> +
> +# --- catch 'undefined value' bug with zero bind values
> +
> [EMAIL PROTECTED] = ();
> +my $sth_other = $dbh->prepare("insert", {
> +     rows => $rows,          # where to 'insert' (push) the rows
> +     NUM_OF_PARAMS => 1,
> +});
> +ok( $sth_other->execute_array( {}, [] ), 0 );
> +ok( @$rows, 0);
>  
>  # --- ArrayTupleFetch code-ref tests ---
>  
> 
> -- 
> Ed Avis <[EMAIL PROTECTED]>

Reply via email to