Branch Coverage

blib/lib/DBIx/Class/ResultSet.pm
Criterion Covered Total %
branch 557 672 82.8


line true false branch
304 21 32931 if (ref $class)
310 1 32930 if $source->isa('DBIx::Class::ResultSourceHandle')
313 110 32821 unless $attrs
316 26 32905 if ($attrs->{'page'})
333 32904 27 unless $attrs->{'_dark_selector'}
394 85 16399 if (wantarray) { }
16398 1 elsif (defined wantarray) { }
407 1 0 unless (caller)[0] =~ /^DBIx\:\:Class\:\:/
437 3440 14040 unless scalar grep({defined $_;} @_)
440 5593 11887 if (@_ == 1) { }
8440 3447 elsif (@_ == 2 and !defined($_[0]) || ref $_[0] ne '') { }
6 3441 elsif (@_ % 2) { }
1 3440 elsif (@_) { }
452 1 0 unless $rsrc->result_class->isa('DBIx::Class::CDBICompat')
456 1 1 if $i % 2
457 0 1 if not defined $_[$i] or ref $_[$i] ne ''
467 161 5552 if (not &List::Util::first(sub { not $safe{$_}; } , keys %$call_attrs) and !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond)
483 8435 9039 if ($call_attrs and keys %$call_attrs)
491 1648 6787 if (&List::Util::first(sub { exists $call_attrs->{$_}; } , 'columns', 'cols', 'select', 'as'))
499 8 8427 if $old_attrs->{'_dark_selector'}
508 2550 64914 if exists $old_attrs->{$_} or exists $call_attrs->{$_}
512 1 8432 if (my $c = delete $new_attrs->{'cols'})
514 0 1 if ($new_attrs->{'columns'}) { }
526 885 15981 if exists $call_attrs->{$key}
530 6582 1851 unless $old_attrs->{'bind'}
8247 186 unless $call_attrs->{'bind'}
535 21718 13226 if (defined $_)
542 27 17445 if (defined $old_having)
550 155 17315 if $cache
560 1 41338 if (exists $attrs->{'include_columns'})
587 2358 162998 ref $attrs->{$key} eq 'ARRAY' ? :
593 80443 2235 if (not @$as || @$sel) { }
0 2235 elsif (@$as and not @$sel) { }
599 1636 elsif (not @$as) { }
0 1636 elsif (@$as < @$sel) { }
2 1634 elsif ($pref and $attrs->{'_dark_selector'}) { }
605 594 5 unless ($attrs->{'_dark_selector'})
608 5 655 if (ref $_ eq 'HASH' and exists $$_{-'as'}) { }
634 21 elsif (not ref $_ and $_ =~ /^ [^\s\(\)]+ $/x) { }
659 16856 4889 if (defined $left xor defined $right) { }
968 3921 elsif (not defined $left) { }
660 15412 1444 defined $left ? :
706 0 1 if (@bind and ref $bind[-1] eq 'HASH')
781 375 1006 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
786 18 1363 if (exists $attrs->{'key'})
789 18 0 defined $attrs->{'key'} ? :
796 1166 215 if (ref $_[0] eq 'HASH') { }
801 214 1 unless defined $constraint_name
805 0 215 unless @c_cols
809 1 214 unless @c_cols == @_
819 19 20 if (length ref $call_cond->{$key} and my $relinfo = $rsrc->relationship_info($key) and ref(my $val = delete $call_cond->{$key}) ne 'ARRAY')
831 0 18 if $crosstable or ref $rel_cond ne 'HASH'
840 0 1379 exists $attrs->{'alias'} ? :
842 231 1148 if (defined $constraint_name) { }
8 1140 elsif ($self->{'attrs'}{'accessor'} and $self->{'attrs'}{'accessor'} eq 'single') { }
871 964 2301 $b eq 'primary' ? :
875 3265 $a eq 'primary' ? :
877 818 2983 if $seen_column_combinations{join "\000", sort($rsrc->unique_constraint_columns($c_name))}++
891 1 1950 if $_ =~ /\bFilterColumn\b/
897 1 132 @fc_exceptions ? :
1007 133 @unique_queries ? :
904 11 1363 if ($rs->_resolved_attrs->{'collapse'}) { }
906 1 10 if $rs->next
934 0 132 exists $attrs->{'alias'} ? :
943 1525 0 unless $_ =~ /\./
1077 0 2704 if (@_ > 2)
1085 1 2703 if $attrs->{'collapse'}
1087 9 2694 if ($where)
1088 0 9 if (defined $attrs->{'where'}) { }
1091 0 0 ref $_ eq 'ARRAY' ? :
1104 294 2408 unless @$data
1168 0 0 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
1169 0 0 ref $_[0] eq 'HASH' ? :
1197 13 1 $max ? :
1229 65 4822 if (my $cache = $self->get_cache)
1234 2 4820 if ($self->{'attrs'}{'cache'})
1240 1631 3189 unless $self->{'_stashed_results'}
11 4809 if @{[] unless $self->{'_stashed_results'};}
1242 704 4069 unless $self->{'_stashed_results'} = $self->_construct_results
1270 35 1965 if (not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'} and my(@pcols) = $rsrc->primary_columns)
1294 1611 7216 if ($fetch_all) { }
109 7107 elsif ($attrs->{'collapse'}) { }
1296 0 1611 $rows ? :
1311 10 8 $attrs->{'order_by'} && $rsrc->schema->storage->_extract_colinfo_of_stable_main_source_order_by_portion($attrs) ? :
18 91 unless defined $attrs->{'_ordered_for_collapse'}
1313 13 96 unless ($attrs->{'_ordered_for_collapse'})
1319 8 5 unless ($cursor->{'_done'})
1320 0 8 $rows ? :
1326 4761 2442 unless $rows
4771 2432 unless ($did_fetch_all or @{[] unless $rows;})
1329 4065 699 if (scalar(my(@r) = $cursor->next))
1334 694 8117 unless $rows
989 7822 unless @{[] unless $rows;}
1337 226 7596 if ($attrs->{'collapse'} and my $aliastypes = $attrs->{'_last_sqlmaker_alias_map'})
1341 341 82 if ($aliastypes->{'multiplying'}{$sel_alias} or $aliastypes->{'premultiplied'}{$sel_alias})
1353 3 2164 if (ref $sel eq 'SCALAR') { }
6 4316 elsif (ref $sel eq 'REF' and ref $$sel eq 'ARRAY') { }
1362 36 2131 if $multiplied_selectors->{$sel} and not $attrs->{'as'}[$i] =~ /\./
1370 1 4631 unless $res_class->can('inflate_result')
1380 4517 109 $inflator_cref == (\&DBIx::Class::Row::inflate_result || die(q[No ::Row::inflate_result() - can't happen])) ? :
4626 3159 unless defined $self->{'_result_inflator'}{'is_core_row'}
1390 96 4535 !$self->{'_result_inflator'}{'is_core_row'} && $inflator_cref == (require DBIx::Class::ResultClass::HashRefInflator && 'DBIx::Class::ResultClass::HashRefInflator'->can('inflate_result')) ? :
4631 3154 unless defined $self->{'_result_inflator'}{'is_hri'}
1393 7519 266 if ($attrs->{'_simple_passthrough_construction'}) { }
1395 51 7468 if ($self->{'_result_inflator'}{'is_hri'}) { }
7464 4 elsif ($self->{'_result_inflator'}{'is_core_row'} and @$rows < 60) { }
1419 0 4 $self->{'_result_inflator'}{'is_core_row'} ? :
1 3 unless eval sprintf($self->{'_result_inflator'}{'is_core_row'} ? '$_ = $inflator_cref->($res_class, $rsrc, { %s }) for @$rows' : '@$rows = map { $inflator_cref->($res_class, $rsrc, { %s } ) } @$rows', join(', ', map({"\$infmap->[$_] => \$_->[$_]";} 0 .. $#$infmap))) . '; 1'
1426 200 9 $self->{'_result_inflator'}{'is_core_row'} ? :
57 209 $self->{'_result_inflator'}{'is_hri'} ? :
1439 223 43 unless $self->{'_row_parser'}{$parser_type}{'cref'}
1450 168 98 if (my $check_non_null_cols = $self->{'_row_parser'}{$parser_type}{'nullcheck'})
1462 0 168 if @violating_idx
1485 2 88 unless my(@r) = $cursor->next
1488 44 12 defined $unrolled_non_null_cols_to_check ? :
210 56 $did_fetch_all || !$attrs->{'collapse'} ? :
1492 56 210 $next_cref ? :
1496 200 66 if ($self->{'_result_inflator'}{'is_core_row'}) { }
9 57 elsif (not $self->{'_result_inflator'}{'is_hri'}) { }
1510 3 7779 if not $fetch_all and @$rows > 1
1555 32949 4006 if ($result_class)
1558 32949 0 unless ref $result_class
1561 1 32944 if ($self->get_cache) { }
1 32943 elsif ($self->{'cursor'} and $self->{'cursor'}{'_pos'}) { }
1594 15 606 if @_ and defined $_[0]
1595 58 548 if $self->get_cache
1604 65 483 if ($self->_has_resolved_attr('collapse', 'group_by')) { }
1612 22 523 if $offset
1613 13 532 if $rows and $rows < $count
1614 1 544 if $count < 0
1642 10 58 if @_
1648 28 30 if ($self->_has_resolved_attr('collapse', 'group_by', 'offset', 'rows')) { }
1690 31 62 if ($attrs->{'collapse'})
1692 0 31 unless $rsrc->_identifying_column_set
1700 90 3 if (my $g = $sub_attrs->{'group_by'}) { }
1708 12 532 if ref $sel eq 'HASH' and $$sel{-'as'}
1715 3 87 if ($attrs->{'having'})
1719 3 0 unless (defined $sql_maker->{'quote_char'} and length $sql_maker->{'quote_char'})
1741 2 1 unless ($seen_having{$part}++)
1753 3 137 if ($colpiece =~ /\./ and not $colpiece =~ /^$attrs->{'alias'}\./)
1763 3 0 @pcols ? :
1810 0 1677 if (@_)
1816 66 1611 if (my $c = $self->get_cache)
1824 12 1578 if $self->{'attrs'}{'cache'}
1903 19 583 if (not $needs_subq and @{$attrs->{'from'};} > 1)
1909 0 19 unless $join_classifications->{'restricting'}
1921 571 31 if (not $needs_subq) { }
1950 20 11 if (@$idcols == 1) { }
1 10 elsif ($storage->_use_multicolumn_in) { }
1965 5 5 if ($existing_group_by or keys %{{} unless $join_classifications->{'multiplying'};})
1970 5 3 unless $join_classifications->{'multiplying'}
1975 2 3 if ($existing_group_by)
1977 8 6 $_ =~ /\./ ? :
1981 1 1 if (join("\000", sort(@current_group_by)) ne join("\000", sort(@{$attrs->{'columns'};})))
2010 496 104 $op eq 'update' ? :
600 1 $cond ? :
2016 9 587 if $guard
2056 0 496 unless ref $values eq 'HASH'
2080 0 1 unless ref $values eq 'HASH'
2114 0 106 if @_
2138 0 270 if @_
2230 0 7698 unless my $data = ref $_[0] eq 'ARRAY' && (@{$_[0];} || (return)) && (ref $_[0][0] eq 'HASH' || ref $_[0][0] eq 'ARRAY') && $_[0]
2240 41 7657 if (defined wantarray)
2243 21 20 if (ref $data->[0] eq 'ARRAY') { }
2245 4 17 if @$data == 1
2247 12 5 if @$data > 2
2257 15 5 if @$data > 1
2263 27 10 if $guard
2264 22 15 wantarray ? :
2284 44395 106 if (ref $data->[$i] eq 'ARRAY') { }
106 0 elsif (ref $data->[$i] eq 'HASH') { }
2287 7613 36782 if ($i == 0) { }
2289 2 7611 if @$data == 1
2300 4 102952 if ($_->{'is_rel'} ||= $$rel_info{$_->{'name'}} && (ref $data->[$i][$_->{'pos'}] eq 'ARRAY' || ref $data->[$i][$_->{'pos'}] eq 'HASH' || defined &blessed($data->[$i][$_->{'pos'}]) && $data->[$i][$_->{'pos'}]->isa('DBIx::Class::Row')) && 1)
2315 4 0 ref $data->[$i][$_->{'pos'}] eq 'ARRAY' ? :
2316 0 5 if (defined &blessed($_) and $_->isa('DBIx::Class::Row'))
2327 4 36778 if ($current_slice_seen_rel_infos)
2341 0 97 if $data_start
2350 12 212 if ($colinfo->{$_}{'is_rel'} ||= $rel_info->{$_} && (ref $data->[$i]{$_} eq 'ARRAY' || ref $data->[$i]{$_} eq 'HASH' || defined &blessed($data->[$i]{$_}) && $data->[$i]{$_}->isa('DBIx::Class::Row')) && 1)
2365 10 2 ref $data->[$i]{$_} eq 'ARRAY' ? :
2366 1 17 if (defined &blessed($_) and $_->isa('DBIx::Class::Row'))
2376 11 94 if ($current_slice_seen_rel_infos)
2388 2 36885 if (grep {$_->{'attrs'}{'is_depends_on'};} @{[] unless $current_slice_seen_rel_infos;})
2390 36872 15 unless $current_slice_seen_rel_infos
2397 5 7647 if ($slices_with_rels)
2409 1 4 unless ($rsrc->_identifying_column_set($ci))
2421 9 7642 if (keys %$rs_data)
2428 4 7647 if $slices_with_rels
2440 0 0 unless $rs_data_vals
2444 0 36778 $rs_data_vals ? :
0 36778 $slices_with_rels ? :
88 15 unless $rs_data_vals
36778 103 ref $data->[$_] eq 'ARRAY' ? :
2449 4 7640 if ($slices_with_rels)
2450 0 4 unless my(@rels) = grep({$colinfo->{$_}{'is_rel'};} keys %$colinfo)
2457 0 9 unless defined $sl->{$rel}
2464 4 5 unless (defined $colinfo->{$rel}{'rs'})
2472 0 4 unless $rsrc->_resolve_relationship_condition('rel_name', $rel, 'self_alias', "\376", 'foreign_alias', "\377")->{'identity_map'}
2485 9 0 ref $sl->{$rel} eq 'ARRAY' ? :
2492 4 7640 if $guard
2516 12 16 if $self->{'pager'}
2519 0 16 if (not defined $attrs->{'page'}) { }
0 16 elsif ($attrs->{'page'} <= 0) { }
2585 0 1492 if @_ > 2
2588 0 1492 unless ref $values eq 'HASH'
2593 6 1486 @$cols_from_relations ? :
2602 0 1490 if (&reftype($new) eq 'HASH' and not keys %$new and &blessed($new))
2631 10290 2067 if (not defined $self->{'cond'}) { }
6 2061 elsif ($self->{'cond'} eq \'1 = 0') { }
2636 0 6 unless $implied_data
2641 0 2107 ($eqs->{$_} || '') eq \'1 = 0' ? :
2677 0 3294 if (grep {$n eq $_;} '-join')
2684 3169 125 unless defined $attr
2686 0 125 if (ref $attr eq 'HASH') { }
64 61 elsif (ref $attr eq 'ARRAY') { }
2687 0 0 if keys %$attr
2690 64 0 if @$attr
2693 41 20 if $attr
2703 0 0 if $extra_checks{-'join'} and ref $attrs->{'from'} eq 'ARRAY' and @{$attrs->{'from'};} > 1
2717 0 14424 unless $query
2721 6644 1655 unless ($key =~ /\./)
2725 1640 15 if $key =~ /^(?:\Q$alias\E\.)?([^.]+)$/
2799 1 3 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
2800 4 0 ref $_[0] eq 'HASH' ? :
2801 2 2 if (keys %$hash and my $row = $self->find($hash, $attrs))
2968 5 25 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
2969 30 0 ref $_[0] eq 'HASH' ? :
2970 7 21 if (keys %$hash and my $row = $self->find($hash, $attrs))
3034 4 9 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
3035 13 0 ref $_[0] eq 'HASH' ? :
3038 8 5 if (defined $row)
3097 2 0 @_ > 1 && ref $_[$#_] eq 'HASH' ? :
3098 2 0 ref $_[0] eq 'HASH' ? :
3101 1 1 if (defined $row)
3152 0 798 if defined $data and ref $data ne 'ARRAY'
3229 14 216 if defined $self->{'related_resultsets'}{$rel}
3235 0 216 unless $rel_info
3278 13 203 if (my $cache = $self->get_cache)
3280 18 21 unless $_->related_resultset($rel)->get_cache
3284 7 6 if @related_cache == @$cache
3423 0 216 unless $self->{'attrs'}
3431 192 24 unless delete $attrs->{'seen_join'}
3436 9 207 if ($attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY' or $self->_has_resolved_attr(@force_subq_attrs)) { }
22 185 elsif ($attrs->{'from'}) { }
3471 22 194 $$seen{-'relation_chain_depth'} ? :
3493 12 18 if ($rel eq $last_j)
3500 204 12 unless ($already_joined)
3516 11822 8960 if $self->{'_attrs'}
3518 0 8960 unless $self->{'attrs'}
3523 0 36 if $attrs->{'collapse'} and $attrs->{'distinct'}
3527 6534 2426 unless &List::Util::first(sub { exists $attrs->{$_}; } , 'columns', 'cols', 'select', 'as')
3532 10180 16700 if $attrs->{$_} or $$attrs{"+$_"}
3537 7845 1115 if (my $cols = delete $attrs->{'columns'})
3538 7845 0 ref $cols eq 'ARRAY' ? :
3539 1065 34672 if (ref $c eq 'HASH') { }
3556 1165 0 ref $attrs->{'as'} eq 'ARRAY' ? :
3557 1165 7795 if $attrs->{'as'}
3558 1170 0 ref $attrs->{'select'} eq 'ARRAY' ? :
3559 1170 7790 if $attrs->{'select'}
3562 2096 35013 ref $_ || $_ =~ /\./ ? :
3565 226 36848 $_ =~ /^\Q$alias.\E(.+)$/ ? :
3573 10 35794 if ($$seen{"$sel[$i] \000\000 $as[$i]"}++) { }
0 35794 elsif ($$seen{$as[$i]}++) { }
3597 720 8240 if ($attrs->{'join'} or $attrs->{'prefetch'})
3600 0 720 if ref $attrs->{'from'} ne 'ARRAY'
3604 485 235 if (defined $attrs->{'prefetch'})
3614 672 48 unless $attrs->{'seen_join'}
3617 46 674 $attrs->{'seen_join'} && keys %{$$attrs{'seen_join'};} ? :
3625 3579 14341 if (defined $attrs->{$attr})
3629 630 2949 ref $attrs->{$attr} eq 'ARRAY' ? :
3632 23 3556 unless @{$attrs->{$attr};}
3639 485 8475 if defined $attrs->{'prefetch'}
3641 353 8607 if ($prefetch)
3644 1 352 if $attrs->{'_dark_selector'}
3647 0 352 if defined $attrs->{'collapse'} and not $attrs->{'collapse'}
3655 352 0 if (ref $attrs->{'from'} eq 'ARRAY')
3660 0 529 unless $j->[0]{-'alias'}
3661 0 529 unless $j->[0]{-'join_path'}
3662 12 517 if ($j->[0]{-'relation_chain_depth'} || 0) < $start_depth
3687 388 8571 if ($attrs->{'collapse'})
3689 388 0 if (ref $attrs->{'from'} eq 'ARRAY') { }
3691 63 325 if (@{$attrs->{'from'};} == 1) { }
3703 48 325 if (ref $t eq 'ARRAY')
3707 325 48 if $$t{-'alias'} and $$t{-'alias'} eq $alias
3712 95 223 unless ($attrs->{'_main_source_premultiplied'} or &List::Util::first(sub { not $_->[0]{-'is_single'}; } , @fromlist))
3729 70 8889 if (delete $attrs->{'distinct'})
3730 1 69 if ($attrs->{'group_by'}) { }
3743 61 8 unless $attrs->{'collapse'}
3760 15 8944 if (my $page = delete $attrs->{'page'})
3774 734 1304 if (ref $attr eq 'HASH') { }
940 364 elsif (ref $attr eq 'ARRAY') { }
3788 474 888 if (ref $element eq 'HASH') { }
340 548 elsif (ref $element eq 'ARRAY') { }
3813 44 280 if (defined $a xor defined $b) { }
10 270 elsif (not defined $a) { }
3820 92 178 if (ref $b eq 'HASH') { }
3822 1 91 unless defined $b_key
3823 35 57 if (ref $a eq 'HASH') { }
3825 1 34 unless defined $a_key
3826 25 10 if ($a_key eq $b_key) { }
3832 20 37 $a eq $b_key ? :
3835 30 148 if (ref $a eq 'HASH') { }
3837 12 18 $b eq $a_key ? :
3839 48 100 $b eq $a ? :
3847 1787 1042 unless defined $orig
3848 23 1019 unless defined $import
3859 90 209 if ($score > $best_candidate->{'score'})
3865 176 689 ref $import_element eq 'HASH' ? :
3866 96 769 unless defined $import_key
3868 794 71 if ($best_candidate->{'score'} == 0 or exists $seen_keys->{$import_key}) { }
3873 46 25 if (ref $orig_best ne 'HASH') { }
15 10 elsif (ref $import_element eq 'HASH') { }
3883 841 178 @$orig ? :
3899 72 0 if ($defl xor $defr) { }
0 0 elsif (not $defl) { }
3900 0 72 $defl ? :
3913 5909 0 unless defined $_[0]
3918 1 866 unless defined $_[0] or keys %{$_[1];}
3919 866 0 unless defined $_[0]
3920 0 0 unless keys %{$_[1];}
3926 10223 1 unless defined $_[1]
3931 5 120 unless my(@ret) = @{$_[0];}
3938 0 0 unless @{$_[0];}
3939 0 0 unless keys %{$_[1];}
3946 0 0 unless keys %{$_[0];} or defined $_[1]
3947 0 0 unless defined $_[1]
3948 0 0 unless keys %{$_[0];}
3952 0 0 unless keys %{$_[0];} or @{$_[1];}
3953 0 0 unless @{$_[1];}
3954 0 0 unless keys %{$_[0];}
3959 0 0 unless keys %{$_[0];} or keys %{$_[1];}
3960 0 0 unless keys %{$_[1];}
3961 0 0 unless keys %{$_[0];}
3962 0 0 if $_[0] eq $_[1]
3983 1 145 if ($to_serialize->{'pager'} and ref $to_serialize->{'pager'}{'total_entries'} eq 'CODE')
4009 56 1 if (ref $self and my $rsrc = $self->result_source) { }