[Bast-commits] r6251 - in DBIx-Class/0.08/trunk: lib/DBIx/Class t/delete

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Wed May 13 23:41:31 GMT 2009


Author: ribasushi
Date: 2009-05-13 23:41:31 +0000 (Wed, 13 May 2009)
New Revision: 6251

Modified:
   DBIx-Class/0.08/trunk/lib/DBIx/Class/ResultSet.pm
   DBIx-Class/0.08/trunk/t/delete/related.t
Log:
Better testing and heuristics for subqueried _cond_for_update_delete

Modified: DBIx-Class/0.08/trunk/lib/DBIx/Class/ResultSet.pm
===================================================================
--- DBIx-Class/0.08/trunk/lib/DBIx/Class/ResultSet.pm	2009-05-13 22:30:34 UTC (rev 6250)
+++ DBIx-Class/0.08/trunk/lib/DBIx/Class/ResultSet.pm	2009-05-13 23:41:31 UTC (rev 6251)
@@ -1315,7 +1315,7 @@
   # Some attributes when present require a subquery
   # This might not work on some database (mysql), but...
   # it won't work without the subquery either so who cares
-  if (grep { defined $self->{attrs}{$_} } qw/join rows group_by/) {
+  if (grep { defined $self->{attrs}{$_} } qw/seen_join from rows group_by/) {
 
     foreach my $pk ($self->result_source->primary_columns) {
       $cond->{$pk} = { IN => $self->get_column($pk)->as_query };

Modified: DBIx-Class/0.08/trunk/t/delete/related.t
===================================================================
--- DBIx-Class/0.08/trunk/t/delete/related.t	2009-05-13 22:30:34 UTC (rev 6250)
+++ DBIx-Class/0.08/trunk/t/delete/related.t	2009-05-13 23:41:31 UTC (rev 6251)
@@ -12,29 +12,34 @@
 my $cdrs = $schema->resultset('CD');
 
 # create some custom entries
-$ars->create ({ artistid => 9, name => 'dead man walking' });
+$ars->populate ([
+  [qw/artistid  name/],
+  [qw/71        a1/],
+  [qw/72        a2/],
+  [qw/73        a3/],
+]);
 $cdrs->populate ([
   [qw/cdid artist title   year/],
-  [qw/70   2      delete0 2005/],
-  [qw/71   3      delete1 2005/],
-  [qw/72   3      delete2 2005/],
-  [qw/73   3      delete3 2006/],
-  [qw/74   3      delete4 2007/],
-  [qw/75   9      delete5 2008/],
+  [qw/70   71     delete0 2005/],
+  [qw/71   72     delete1 2005/],
+  [qw/72   72     delete2 2005/],
+  [qw/73   72     delete3 2006/],
+  [qw/74   72     delete4 2007/],
+  [qw/75   73     delete5 2008/],
 ]);
 
 my $total_cds = $cdrs->count;
 
 # test that delete_related w/o conditions deletes all related records only
-$ars->find (9)->delete_related ('cds');
+$ars->search ({name => 'a3' })->search_related ('cds')->delete;
 is ($cdrs->count, $total_cds -= 1, 'related delete ok');
 
-my $a3_cds = $ars->find(3)->cds;
+my $a2_cds = $ars->search ({ name => 'a2' })->search_related ('cds');
 
 # test that related deletion w/conditions deletes just the matched related records only
-$a3_cds->search ({ year => 2005 })->delete;
+$a2_cds->search ({ year => 2005 })->delete;
 is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok');
 
 # test that related deletion with limit condition works
-$a3_cds->search ({}, { rows => 1})->delete;
+$a2_cds->search ({}, { rows => 1})->delete;
 is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok');




More information about the Bast-commits mailing list