Hi Gerald,

Doesn't look like DBIx::Recordset supports composite primary keys - is
that by design or it just a feature you haven't needed? 

Where it would be most useful for me is on Execute updates, since that's
how you're distinguishing keys from values - I guess you can use an
explicit where clause but it's much less clean than being able to say 
'!PrimKey' => 'uid,name', for example.

The change just for updates is fairly modest (patch attached, against 
0.24); changing it across the board looks much less so. 

Cheers,
Gavin
*** Recordset-dist.pm   Mon Oct 29 08:21:02 2001
--- Recordset.pm        Mon Oct 29 10:05:41 2001
***************
*** 2552,2578 ****
         
      
      if (defined ($primkey = $self->{'*PrimKey'}))
!       {
!         $val = $data -> {$primkey} ;
!       $val = $$val if (ref ($val) eq 'SCALAR') ;
!       #print LOG "1 primkey = $primkey d=$data->{$primkey} w=" . 
($where?$where->{$primkey}:'<undef>') . " v=$val\n" ;
!       if (defined ($val) && !$where)
!           {
!           $where = {$primkey => $val} ;
!           }
!       elsif (ref ($where) eq 'HASH' && $val eq $where -> {$primkey})
!           {
!           delete $data -> {$primkey} ;
!           }
!       else
!           {
!           $primkey = '' ;
!           }
!       }
!     else
!       {
!       $primkey = '' ;
!       }
  
      #print LOG "2 primkey = $primkey d=$data->{$primkey} w=" . 
($where?$where->{$primkey}:'<undef>') . " v=$val\n" ;
      my $datacnt = 0 ; 
--- 2552,2585 ----
         
      
      if (defined ($primkey = $self->{'*PrimKey'}))
!       {
!         my $nowhere = !$where ;
!         $where = {} if $nowhere ;
!         my $reset = 0 ;
!         for my $pk (split /,\s*/, $primkey) 
!             {
!             $val = $data -> {$pk} ;
!           $val = $$val if (ref ($val) eq 'SCALAR') ;
!           #print LOG "1 primkey = $pk d=$data->{$pk} w=" . 
($where?$where->{$pk}:'<undef>') . " v=$val\n" ;
!           if (defined ($val) && $nowhere) 
!               {
!               $where->{$pk} = $val ;
!               }
!           elsif (ref ($where) eq 'HASH' && $val eq $where -> {$pk})
!               {
!               delete $data -> {$pk} ;
!               }
!           else
!               {
!                 $reset = 1;
!               }
!             }
!         $primkey = '' if $reset;
!       }
!      else
!       {
!       $primkey = '' ;
!       }
  
      #print LOG "2 primkey = $primkey d=$data->{$primkey} w=" . 
($where?$where->{$primkey}:'<undef>') . " v=$val\n" ;
      my $datacnt = 0 ; 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to