Branch Coverage

blib/lib/DBIx/Class/ResultSet.pm
Criterion Covered Total %
branch 570 690 82.6


line true false branch
307 21 30228 if (ref $class)
313 1 30227 if $source->isa('DBIx::Class::ResultSourceHandle')
316 113 30115 unless $attrs
319 26 30202 if ($attrs->{'page'})
336 30201 27 unless $attrs->{'_dark_selector'}
398 86 7119 if wantarray
401 7118 1 if defined wantarray
409 1 0 unless (caller)[0] =~ /^DBIx\:\:Class\:\:/
439 1660 13560 unless scalar grep({defined $_;} @_)
442 5595 9625 if (@_ == 1) { }
7955 1670 elsif (@_ == 2 and !defined($_[0]) || length ref $_[0]) { }
8 1662 elsif (@_ % 2) { }
2 1660 elsif (@_) { }
454 2 0 unless $rsrc->result_class->isa('DBIx::Class::CDBICompat')
458 2 2 if $i % 2
459 0 2 if not defined $_[$i] or length ref $_[$i]
469 135 5559 if (not grep({not $safe{$_};} keys %$call_attrs) and !defined($call_cond) || ref $call_cond eq 'HASH' && !keys(%$call_cond) || ref $call_cond eq 'ARRAY' && !@$call_cond)
485 7950 7262 if ($call_attrs and keys %$call_attrs)
494 1707 6243 if grep {exists $call_attrs->{$_};} 'columns', 'cols', 'select', 'as'
500 8 7942 if $old_attrs->{'_dark_selector'}
509 2616 60968 if exists $old_attrs->{$_} or exists $call_attrs->{$_}
513 1 7947 if (my $c = delete $new_attrs->{'cols'})
515 0 1 if ($new_attrs->{'columns'}) { }
527 899 14997 if exists $call_attrs->{$key}
531 6058 1890 unless $old_attrs->{'bind'}
7776 172 unless $call_attrs->{'bind'}
536 19464 10956 if (defined $_)
543 27 15183 if (defined $old_having)
551 149 15059 if $cache
560 1 38150 if (exists $attrs->{'include_columns'})
587 2373 150231 ref $attrs->{$key} eq 'ARRAY' ? :
593 74054 2248 if (not @$as || @$sel) { }
0 2248 elsif (@$as and not @$sel) { }
604 1644 elsif (not @$as) { }
0 1644 elsif (@$as < @$sel) { }
2 1642 elsif ($pref and $attrs->{'_dark_selector'}) { }
605 599 5 unless ($attrs->{'_dark_selector'})
608 5 662 if (ref $_ eq 'HASH' and exists $_->{'-as'}) { }
641 21 elsif (not ref $_ and $_ =~ /^ [^\s\(\)]+ $/x) { }
659 13158 1443 defined $left ? :
961 3929 !defined($left) ? :
14601 4890 (defined $left xor defined $right) ? :
705 0 1 if (@bind and ref $bind[-1] eq 'HASH')
780 67 1323 @_ > 1 && ref $_[-1] eq 'HASH' ? :
784 18 1372 if (exists $attrs->{'key'})
787 18 0 defined $attrs->{'key'} ? :
796 1170 220 if (ref $_[0] eq 'HASH') { }
801 219 1 unless defined $constraint_name
805 0 220 unless @c_cols
809 1 219 unless @c_cols == @_
821 23 15 if (length ref $call_cond->{$key} and +($rel_list ||= {map({$_, 1;} $rsrc->relationships)})->{$key} and not &is_literal_value($call_cond->{$key}) and ref(my $foreign_val = delete $call_cond->{$key}) ne 'ARRAY')
846 0 16 unless ($foreign_val->isa($f_result_class))
848 0 0 unless $foreign_val->isa($DBIx::Class::ResultSource::__expected_result_class_isa)
869 7 16 !defined(&blessed($foreign_val)) ? :
874 0 1386 exists $attrs->{'alias'} ? :
876 236 1150 if (defined $constraint_name) { }
8 1142 elsif ($self->{'attrs'}{'accessor'} and $self->{'attrs'}{'accessor'} eq 'single') { }
905 909 2307 $b eq 'primary' ? :
941 3216 $a eq 'primary' ? :
911 823 2995 if $seen_column_combinations{join "\000", sort($rsrc->unique_constraint_columns($c_name))}++
925 1 1960 if $_ =~ /\bFilterColumn\b/
931 1 132 @fc_exceptions ? :
1009 133 @unique_queries ? :
938 11 1371 if ($rs->_resolved_attrs->{'collapse'}) { }
940 1 10 if $rs->next
968 0 132 exists $attrs->{'alias'} ? :
977 1533 0 unless $_ =~ /\./
1113 0 2712 if (@_ > 2)
1121 1 2711 if $attrs->{'collapse'}
1123 9 2702 if ($where)
1124 0 9 if (defined $attrs->{'where'}) { }
1127 0 0 ref $_ eq 'ARRAY' ? :
1140 300 2409 unless @$data
1204 0 0 @_ > 1 && ref $_[-1] eq 'HASH' ? :
1205 0 0 ref $_[0] eq 'HASH' ? :
1235 13 1 $max ? :
1267 65 4836 if (my $cache = $self->get_cache)
1272 2 4834 if ($self->{'attrs'}{'cache'})
1278 1646 3188 unless $self->{'_stashed_results'}
11 4823 if @{[] unless $self->{'_stashed_results'};}
1280 704 4075 unless $self->{'_stashed_results'} = $self->_construct_results
1308 35 1973 if (not $fetch_all || $attrs->{'order_by'} and $attrs->{'collapse'} and my(@pcols) = $rsrc->primary_columns)
1332 1625 7231 if ($fetch_all) { }
115 7116 elsif ($attrs->{'collapse'}) { }
1334 0 1625 $rows ? :
1349 11 8 $attrs->{'order_by'} && $rsrc->schema->storage->_extract_colinfo_of_stable_main_source_order_by_portion($attrs) ? :
19 96 unless defined $attrs->{'_ordered_for_collapse'}
1351 13 102 unless ($attrs->{'_ordered_for_collapse'})
1357 8 5 unless ($cursor->{'_done'})
1358 1 7 $rows ? :
1364 4762 2456 unless $rows
4779 2439 unless ($did_fetch_all or @{[] unless $rows;})
1367 4071 699 if (scalar(my(@r) = $cursor->next))
1372 689 8150 unless $rows
991 7848 unless @{[] unless $rows;}
1375 231 7617 if ($attrs->{'collapse'} and my $aliastypes = $attrs->{'_last_sqlmaker_alias_map'})
1379 346 87 if ($aliastypes->{'multiplying'}{$sel_alias} or $aliastypes->{'premultiplied'}{$sel_alias})
1391 3 2179 if (ref $sel eq 'SCALAR') { }
6 4346 elsif (ref $sel eq 'REF' and ref $$sel eq 'ARRAY') { }
1400 36 2146 if $multiplied_selectors->{$sel} and not $attrs->{'as'}[$i] =~ /\./
1408 1 4653 unless $res_class->can('inflate_result')
1418 4534 113 $inflator_cref == (\&DBIx::Class::Row::inflate_result || die(q[No ::Row::inflate_result() - can't happen])) ? :
4647 3164 unless defined $self->{'_result_inflator'}{'is_core_row'}
1424 98 4555 !$self->{'_result_inflator'}{'is_core_row'} && $inflator_cref == \&DBIx::Class::ResultClass::HashRefInflator::inflate_result ? :
4653 3158 unless defined $self->{'_result_inflator'}{'is_hri'}
1427 7534 277 if ($attrs->{'_simple_passthrough_construction'}) { }
1429 51 7483 if ($self->{'_result_inflator'}{'is_hri'}) { }
7479 4 elsif ($self->{'_result_inflator'}{'is_core_row'} and @$rows < 60) { }
1453 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'
1460 207 11 $self->{'_result_inflator'}{'is_core_row'} ? :
59 218 $self->{'_result_inflator'}{'is_hri'} ? :
1464 229 48 unless ($self->{'_row_parser'}{$parser_type}{'cref'})
1489 25 233 unless my(@r) = $cursor->next
1492 215 62 $did_fetch_all || !$attrs->{'collapse'} ? :
1510 24 0 !defined($self->{'_stashed_rows'}[0][$_]) || length $self->{'_stashed_rows'}[0][$_] < 50 ? :
1511 6 271 if keys %$null_violations
1516 201 70 if ($self->{'_result_inflator'}{'is_core_row'}) { }
11 59 elsif (not $self->{'_result_inflator'}{'is_hri'}) { }
1530 3 7799 if not $fetch_all and @$rows > 1
1575 30248 3349 if ($result_class)
1578 30248 0 unless ref $result_class
1581 1 30243 if ($self->get_cache) { }
1 30242 elsif ($self->{'cursor'} and $self->{'cursor'}{'_pos'}) { }
1614 15 612 if @_ and defined $_[0]
1615 58 554 if $self->get_cache
1624 68 486 if ($self->_has_resolved_attr('collapse', 'group_by')) { }
1632 22 529 if $offset
1633 13 538 if $rows and $rows < $count
1634 1 550 if $count < 0
1662 10 58 if @_
1668 28 30 if ($self->_has_resolved_attr('collapse', 'group_by', 'offset', 'rows')) { }
1710 34 62 if ($attrs->{'collapse'})
1712 0 34 unless $rsrc->_identifying_column_set
1720 93 3 if (my $g = $sub_attrs->{'group_by'}) { }
1728 12 7 if ref $sel eq 'HASH' and $sel->{'-as'}
1735 3 90 if ($attrs->{'having'})
1739 3 0 unless (defined $sql_maker->{'quote_char'} and length $sql_maker->{'quote_char'})
1761 2 1 unless ($seen_having{$part}++)
1773 3 140 if ($colpiece =~ /\./ and not $colpiece =~ /^$attrs->{'alias'}\./)
1783 3 0 @pcols ? :
1833 0 1691 if (@_)
1839 66 1625 if (my $c = $self->get_cache)
1847 12 1593 if $self->{'attrs'}{'cache'}
1927 30 581 if (not $needs_subq and @{$attrs->{'from'};} > 1)
1933 0 30 unless $join_classifications->{'restricting'}
1945 569 42 if (not $needs_subq) { }
1974 20 22 if (@$idcols == 1) { }
1 21 elsif ($storage->_use_multicolumn_in) { }
1989 10 11 if ($existing_group_by or keys %{{} unless $join_classifications->{'multiplying'};})
1994 11 8 unless $join_classifications->{'multiplying'}
1999 2 8 if ($existing_group_by)
2001 8 6 $_ =~ /\./ ? :
2005 1 1 if (join("\000", sort(@current_group_by)) ne join("\000", sort(@{$attrs->{'columns'};})))
2034 496 111 $op eq 'update' ? :
607 3 $cond ? :
2040 20 585 if $guard
2080 0 496 unless ref $values eq 'HASH'
2104 0 1 unless ref $values eq 'HASH'
2138 0 116 if @_
2162 0 270 if @_
2254 0 7767 unless my $data = ref $_[0] eq 'ARRAY' && (@{$_[0];} || (return)) && (ref $_[0][0] eq 'HASH' || ref $_[0][0] eq 'ARRAY') && $_[0]
2267 41 7726 if (defined wantarray)
2270 21 20 if (ref $data->[0] eq 'ARRAY') { }
2272 4 17 if @$data == 1
2274 12 5 if @$data > 2
2284 15 5 if @$data > 1
2290 27 10 if $guard
2291 22 15 wantarray ? :
2310 44707 106 if (ref $data->[$i] eq 'ARRAY') { }
106 0 elsif (ref $data->[$i] eq 'HASH') { }
2313 7682 37025 if ($i == 0) { }
2315 2 7680 if @$data == 1
2326 4 103705 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::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1)
2352 4 0 ref $data->[$i][$_->{'pos'}] eq 'ARRAY' ? :
2353 0 5 if (defined &blessed($_) and $_->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...')))
2375 4 37021 if ($current_slice_seen_rel_infos)
2389 0 97 if $data_start
2398 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::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...'))) && 1)
2424 10 2 ref $data->[$i]{$_} eq 'ARRAY' ? :
2425 1 17 if (defined &blessed($_) and $_->isa($DBIx::Class::ResultSource::__expected_result_class_isa || emit_loud_diag('confess', 1, 'msg', 'Global $DBIx::Class::ResultSource::__expected_result_class_isa unexpectedly unset...')))
2446 11 94 if ($current_slice_seen_rel_infos)
2458 2 37128 if (grep {$_->{'attrs'}{'is_depends_on'};} @{[] unless $current_slice_seen_rel_infos;})
2460 37115 15 unless $current_slice_seen_rel_infos
2467 5 7716 if ($slices_with_rels)
2479 1 4 unless ($rsrc->_identifying_column_set($ci))
2491 9 7711 if (keys %$rs_data)
2498 4 7716 if $slices_with_rels
2510 0 0 unless $rs_data_vals
2514 0 37021 $rs_data_vals ? :
0 37021 $slices_with_rels ? :
88 15 unless $rs_data_vals
37021 103 ref $data->[$_] eq 'ARRAY' ? :
2519 4 7709 if ($slices_with_rels)
2520 0 4 unless my(@rels) = grep({$colinfo->{$_}{'is_rel'};} keys %$colinfo)
2527 0 9 unless defined $sl->{$rel}
2534 4 5 unless (defined $colinfo->{$rel}{'rs'})
2544 0 4 unless $rsrc->resolve_relationship_condition('rel_name', $rel, ('foreign_alias', "!!!\377()!!!_DUMMY_FOREIGN_ALIAS_SHOULD_NEVER_BE_SEEN_IN_USE_!!!()\377!!!", 'self_alias', "!!!\376()!!!_DUMMY_SELF_ALIAS_SHOULD_NEVER_BE_SEEN_IN_USE_!!!()\376!!!"))->{'identity_map'}
2557 9 0 ref $sl->{$rel} eq 'ARRAY' ? :
2564 4 7709 if $guard
2588 12 16 if $self->{'pager'}
2591 0 16 if (not defined $attrs->{'page'}) { }
0 16 elsif ($attrs->{'page'} <= 0) { }
2657 0 827 if @_ > 2 or ref $values ne 'HASH'
2662 6 821 @$cols_from_relations ? :
2671 0 825 if (&reftype($new) eq 'HASH' and not keys %$new and &blessed($new))
2700 10385 1393 if (not defined $self->{'cond'}) { }
6 1387 elsif ($self->{'cond'} eq \'1 = 0') { }
2705 0 6 unless $implied_data
2710 0 1429 ($eqs->{$_} || '') eq \'1 = 0' ? :
2746 0 3277 if (grep {$n eq $_;} '-join')
2753 3149 128 unless defined $attr
2755 0 128 if (ref $attr eq 'HASH') { }
64 64 elsif (ref $attr eq 'ARRAY') { }
2756 0 0 if keys %$attr
2759 64 0 if @$attr
2762 44 20 if $attr
2772 0 0 if $extra_checks{'-join'} and ref $attrs->{'from'} eq 'ARRAY' and @{$attrs->{'from'};} > 1
2786 0 13171 unless $query
2790 4832 972 unless ($key =~ /\./)
2794 957 15 if $key =~ /^(?:\Q$alias\E\.)?([^.]+)$/
2868 1 3 @_ > 1 && ref $_[-1] eq 'HASH' ? :
2869 4 0 ref $_[0] eq 'HASH' ? :
2870 2 2 if (keys %$hash and my $row = $self->find($hash, $attrs))
3037 5 25 @_ > 1 && ref $_[-1] eq 'HASH' ? :
3038 30 0 ref $_[0] eq 'HASH' ? :
3039 7 21 if (keys %$hash and my $row = $self->find($hash, $attrs))
3103 4 9 @_ > 1 && ref $_[-1] eq 'HASH' ? :
3104 13 0 ref $_[0] eq 'HASH' ? :
3107 8 5 if (defined $row)
3166 2 0 @_ > 1 && ref $_[-1] eq 'HASH' ? :
3167 2 0 ref $_[0] eq 'HASH' ? :
3170 1 1 if (defined $row)
3221 0 792 if defined $data and ref $data ne 'ARRAY'
3295 0 247 if @_ > 2
3302 42 205 if defined $_[0]{'related_resultsets'}{$_[1]}
3310 0 205 unless $rel_info
3350 0 205 unless $switch_branch
205 0 if (@{[] unless $switch_branch;})
3362 241 30 if ($sw_idx->{$jalias}) { }
3404 12 193 if (my $cache = $self->get_cache)
3406 15 21 unless $_->related_resultset($rel)->get_cache
3410 7 5 if @related_cache == @$cache
3515 0 112 if wantarray
3559 0 205 unless $self->{'attrs'}
3567 176 29 unless delete $attrs->{'seen_join'}
3572 9 196 if ($attrs->{'from'} and ref $attrs->{'from'} ne 'ARRAY' or $self->_has_resolved_attr(@force_subq_attrs)) { }
27 169 elsif ($attrs->{'from'}) { }
3607 27 178 $seen->{'-relation_chain_depth'} ? :
3629 12 18 if ($rel eq $last_j)
3636 193 12 unless ($already_joined)
3652 11769 9063 if $self->{'_attrs'}
3654 0 9063 unless $self->{'attrs'}
3659 0 45 if $attrs->{'collapse'} and $attrs->{'distinct'}
3664 137 8926 if (defined $attrs->{'offset'})
3666 0 137 if $attrs->{'offset'} =~ /[^0-9]/ or $attrs->{'offset'} < 0
3668 1718 7345 if (defined $attrs->{'rows'})
3670 1 1717 if $attrs->{'rows'} =~ /[^0-9]/ or $attrs->{'rows'} <= 0
3675 7707 1355 if $attrs->{'where'}
3679 6562 2500 unless grep {exists $attrs->{$_};} 'columns', 'cols', 'select', 'as'
3684 10290 16896 if $attrs->{$_} or $$attrs{"+$_"}
3689 7939 1123 if (my $cols = delete $attrs->{'columns'})
3690 7939 0 ref $cols eq 'ARRAY' ? :
3691 1080 34832 if (ref $c eq 'HASH') { }
3708 1173 0 ref $attrs->{'as'} eq 'ARRAY' ? :
3709 1173 7889 if $attrs->{'as'}
3710 1178 0 ref $attrs->{'select'} eq 'ARRAY' ? :
3711 1178 7884 if $attrs->{'select'}
3714 2151 35153 ref $_ || $_ =~ /\./ ? :
3717 256 37013 $_ =~ /^\Q$alias.\E(.+)$/ ? :
3725 10 35979 if ($$seen{"$sel[$i] \000\000 $as[$i]"}++) { }
0 35979 elsif ($$seen{$as[$i]}++) { }
3749 734 8328 if ($attrs->{'join'} or $attrs->{'prefetch'})
3752 0 734 if ref $attrs->{'from'} ne 'ARRAY'
3756 485 249 if (defined $attrs->{'prefetch'})
3766 684 50 unless $attrs->{'seen_join'}
3769 48 686 $attrs->{'seen_join'} && keys %{$$attrs{'seen_join'};} ? :
3778 3627 14497 if (defined $attrs->{$attr})
3782 638 2989 ref $attrs->{$attr} eq 'ARRAY' ? :
3785 23 3604 unless @{$attrs->{$attr};}
3792 353 8709 if (defined $attrs->{'prefetch'} and $prefetch = $self->_merge_joinpref_attr({}, delete $attrs->{'prefetch'}))
3798 0 353 if defined $attrs->{'collapse'} and not $attrs->{'collapse'}
3812 398 8664 if ($attrs->{'collapse'})
3814 398 0 if (ref $attrs->{'from'} eq 'ARRAY') { }
3816 63 335 if (@{$attrs->{'from'};} == 1) { }
3828 54 335 if (ref $t eq 'ARRAY')
3832 335 54 if $t->{'-alias'} and $t->{'-alias'} eq $alias
3837 95 230 unless ($attrs->{'_main_source_premultiplied'} or grep {not $_->[0]{'-is_single'};} @fromlist)
3855 70 8992 if (delete $attrs->{'distinct'})
3856 1 69 if ($attrs->{'group_by'}) { }
3869 61 8 unless $attrs->{'collapse'}
3875 353 8709 if ($prefetch)
3878 1 352 if $attrs->{'_dark_selector'}
3884 352 0 if (ref $attrs->{'from'} eq 'ARRAY')
3889 0 529 unless $j->[0]{'-alias'}
3890 0 529 unless $j->[0]{'-join_path'}
3891 12 517 if ($j->[0]{'-relation_chain_depth'} || 0) < $start_depth
3916 15 9046 if (my $page = delete $attrs->{'page'})
3930 734 1304 if (ref $attr eq 'HASH') { }
940 364 elsif (ref $attr eq 'ARRAY') { }
3944 474 888 if (ref $element eq 'HASH') { }
340 548 elsif (ref $element eq 'ARRAY') { }
3969 44 280 if (defined $a xor defined $b) { }
10 270 elsif (not defined $a) { }
3976 92 178 if (ref $b eq 'HASH') { }
3978 1 91 unless defined $b_key
3979 35 57 if (ref $a eq 'HASH') { }
3981 1 34 unless defined $a_key
3982 25 10 if ($a_key eq $b_key) { }
3988 20 37 $a eq $b_key ? :
3991 30 148 if (ref $a eq 'HASH') { }
3993 12 18 $b eq $a_key ? :
3995 48 100 $b eq $a ? :
4003 1796 1042 unless defined $orig
4004 23 1019 unless defined $import
4015 90 209 if ($score > $best_candidate->{'score'})
4021 176 689 ref $import_element eq 'HASH' ? :
4022 96 769 unless defined $import_key
4024 794 71 if ($best_candidate->{'score'} == 0 or exists $seen_keys->{$import_key}) { }
4029 46 25 if (ref $orig_best ne 'HASH') { }
15 10 elsif (ref $import_element eq 'HASH') { }
4039 841 178 @$orig ? :
4055 74 0 if ($defl xor $defr) { }
0 0 elsif (not $defl) { }
4056 0 74 $defl ? :
4069 5978 0 unless defined $_[0]
4074 1 882 unless defined $_[0] or keys %{$_[1];}
4075 882 0 unless defined $_[0]
4076 0 0 unless keys %{$_[1];}
4082 10338 1 unless defined $_[1]
4087 5 120 unless my(@ret) = @{$_[0];}
4094 0 0 unless @{$_[0];}
4095 0 0 unless keys %{$_[1];}
4102 0 0 unless keys %{$_[0];} or defined $_[1]
4103 0 0 unless defined $_[1]
4104 0 0 unless keys %{$_[0];}
4108 0 0 unless keys %{$_[0];} or @{$_[1];}
4109 0 0 unless @{$_[1];}
4110 0 0 unless keys %{$_[0];}
4115 0 0 unless keys %{$_[0];} or keys %{$_[1];}
4116 0 0 unless keys %{$_[1];}
4117 0 0 unless keys %{$_[0];}
4118 0 0 if $_[0] eq $_[1]
4139 1 145 if ($to_serialize->{'pager'} and ref $to_serialize->{'pager'}{'total_entries'} eq 'CODE')
4165 65 1 if (ref $self and my $rsrc = $self->result_source) { }