Branch Coverage

lib/UR/DataSource/QueryPlan.pm
Criterion Covered Total %
branch 289 446 64.8


line true false branch
98 3040 798 if @loaded
102 0 798 unless (defined $id)
108 798 0 if (my $alt_ids = $class_meta->{'id_by'})
109 0 798 if (@$alt_ids == 1) { }
120 0 798 if (my $method_name = $class_meta->sub_classification_method_name)
123 0 0 if ($sub_class_name ne $class)
160 0 798 if $self->_is_initialized
167 655 143 if ($ds->isa('UR::DataSource::RDBMS')) { }
33 110 elsif ($ds->isa('UR::DataSource::Filesystem')) { }
178 61 49 if $ds->isa('UR::DataSource::Default')
188 32702 10666 if $self->can($key)
207 43 645 if ($order_by)
215 20 28 if ($order_by_prop =~ /^(-|\+)(.*)$/)
221 0 48 unless ($order_by_prop_meta)
227 18 30 $is_descending{$order_by_prop} ? :
228 45 3 if ($order_by_property_names{$name} = $db_property_data_map{$order_by_prop_meta->property_name}) { }
239 37 6 if (@column_data)
247 18 58 $is_descending{$_} ? :
296 13 642 if ($group_by)
299 0 3 unless ($class_name->can($name))
306 1 46 if ($group_by_property_names{$name})
328 630 25 unless (@all_id_property_names == 1 and $all_id_property_names[0] eq 'id')
333 35 620 $order_by ? :
336 655 0 $hints ? :
13 642 $group_by ? :
345 18 967 if (index($property_name, '.') != -1)
351 0 967 unless (@pmeta)
352 0 0 if ($class_name->can($property_name)) { }
369 287 989 unless $candidate_prop_meta
370 850 139 if ($candidate_prop_meta->column_name)
382 0 967 if ($property->can('expr_sql'))
383 0 0 unless ($table_name)
388 0 0 if (exists $filters{$property_name})
411 9 958 if ($property->is_calculated and $property->calculate_from)
418 2 965 if (exists $filters{$property_name} and $filters{$property_name} eq 'isa') { }
848 117 elsif (my $column_name = $property->column_name) { }
76 41 elsif ($property->is_delegated) { }
33 8 elsif (not exists $hints{$property_name} or exists $filters{$property_name}) { }
425 0 848 unless ($table_name)
429 809 39 if (exists $filters{$property_name})
458 0 655 if (@errors)
514 5 119 if ($i < $#joins and ($joins[$i]{'foreign_class'}->isa('UR::Value') and $joins[$i + 1]{'source_class'}->isa('UR::Value')))
531 1 4 if ($joins[$i + 1]{'where'})
540 86 8 if (@joins and $joins[-1]{'foreign_class'}->isa('UR::Value'))
545 0 86 unless @joins
568 1 147 if ($foreign_class_object->join_hint and not $hints_included{$foreign_class_name}++)
572 0 148 unless (exists $ds_for_class{$foreign_class_name})
579 0 148 unless ($ds)
595 5 143 unless ($alias)
609 127 16 if ($current_inheritance_depth_for_this_target_join == 1)
610 96 31 if ($final_accessor and $last_class_object->property_meta_for_name($final_accessor))
614 16 111 if (@parents)
618 0 16 if @parent_id_property_names > 1
640 89 0 unless (@joins or $alias_for_property_value)
644 77 12 if ($final_accessor and grep {$_->[1]->property_name eq $final_accessor;} @{$$foreign_class_loading_data{'direct_table_properties'};}) { }
665 62 15 if (defined $value_position)
667 0 62 if (not $final_accessor) { }
675 0 62 unless ($final_accessor_property_meta)
683 0 62 if ($final_accessor_property_meta->is_calculated) { }
685 0 0 unless (defined $sql_lvalue)
692 0 62 unless (defined $sql_lvalue)
699 0 62 unless ($alias_for_property_value)
736 3 652 if $class_meta->select_hint
740 655 0 defined $first_table_name ? :
751 48 137 if ($$condition{-'is_required'}) { }
764 48 224 if substr($column_name, 0, 1) eq '-'
767 0 224 substr($column_name, 0, 1) eq ' ' ? :
771 185 39 if $right_coercion
773 39 185 if $cnt++
775 185 39 if ($link_table_name and $link_column_name) { }
0 39 elsif (defined $value_position) { }
778 185 0 if $left_coercion
786 39 0 if ($more_sql) { }
808 0 871 substr($column_name, 0, 1) eq ' ' ? :
813 0 871 if ($link_table_name and $link_column_name) { }
820 0 871 unless (defined $value_position)
833 5 650 if ($recursion_desc)
834 0 5 unless (ref $recursion_desc eq 'ARRAY')
837 0 5 if (@$recursion_desc != 2)
843 0 5 if ($ds->does_support_recursive_queries eq 'connect by') { }
847 0 0 unless ($this_property_meta)
851 0 0 unless ($prior_property_meta)
859 0 0 unless ($this_table_name)
863 0 0 unless ($prior_table_name)
883 642 13 unless ($group_by)
887 13 642 if ($group_by)
890 3 10 if scalar @$group_by
898 3 10 if $select_clause
901 6 4 if $ag eq 'count'
905 0 13 unless (@$group_by == @$db_property_data)
910 3 652 scalar @select_hint ? :
979 0 148 if (not %$class_alias and $source_class_object->table_name)
992 4 144 if (not $foreign_data_source or $foreign_data_source ne $ds)
1004 138 6 unless (@$source_table_and_column_names)
1009 8 129 if (my($view, $alias) = $ds->parse_view_and_alias_from_inline_view($_->[0]))
1018 0 138 unless ($p)
1022 137 1 if ($table_name and $column_name) { }
1032 1 143 unless @$source_table_and_column_names
1044 0 143 unless (@foreign_column_names)
1049 0 143 unless ($foreign_table_name)
1057 0 143 unless (@foreign_column_names == @foreign_property_meta)
1064 143 0 unless ($alias)
1068 0 143 if (substr($alias_name, -1) eq '?')
1069 0 0 if substr($alias_name, -1) eq '?'
1074 0 143 if ($alias_length > $alias_max_length) { }
1085 137 6 if ($foreign_class_object->table_name)
1092 39 98 if ($where)
1097 0 39 if (index($name, '-') == 0)
1107 0 39 unless ($column)
1112 6 33 $op ? :
1113 6 33 $op ? :
1176 131 6 unless ($group_by)
1190 6 137 if ($group_by)
1191 2 4 if ($self->_groups_by_property($property_name))
1206 0 143 if ($self->_orders_by_property($property_name))
1219 76 67 unless ($is_optional)
1226 137 6 if ($foreign_class_object->table_name)
1244 0 182 if ($_->is_calculated) { }
1245 0 0 if ($_->calculate_sql) { }
1258 8 174 if ($table_name and $table_name =~ /^(.*)\s+(\w+)\s*$/s)
1268 78 65 unless $self->_alias_data
1274 78 65 unless $self->_join_data
1281 2186 162 unless $alias_data and exists $alias_data->{$alias}
1300 0 137 unless ref $data
1326 0 404 if ($data_type =~ /LOB$/)
1344 150 331 if ($db_column_data->[$resultset_col][1]->class_name eq $class_name and $db_column_data->[$resultset_col][1]->property_name eq $property_name and $db_column_data->[$resultset_col][3] == $object_num)
1358 0 93 unless $object_num
1363 93 379 if $db_column_data->[$resultset_col][3] >= $object_num
1364 102 277 if ($db_column_data->[$resultset_col][1]->class_name eq $class_name and $db_column_data->[$resultset_col][1]->property_name eq $property_name)
1400 1 2221 if $seen{$class_name}++
1409 703 1518 if ($table_name)
1411 48 655 if ($prev_table_name)
1412 0 48 if @id_property_objects > 1
1414 2 46 if ($prev_table_name =~ /.*\s+(\w+)\s*$/) { }
1459 0 114 unless ($meta)
1464 2 112 if ($meta->property_name eq 'id' and $meta->class_name eq 'UR::Object')
1466 2 0 if (@id_properties == 1) { }
0 0 elsif (@id_properties > 1) { }
1475 25 87 if ($meta->data_type and $meta->data_type =~ /::/) { }
1480 0 112 unless $last_class_meta
1489 44 70 if $pmeta->is_optional or $pmeta->is_many
1492 0 94 unless @joins
1520 5 650 if ($recursion_desc)
1540 630 25 unless (@all_id_property_names == 1 and $all_id_property_names[0] eq 'id')
1555 18 893 if (index($key, '.') != -1)
1562 655 1566 if $class_name eq 'UR::Object' or not $class_name->isa('UR::Object')
1564 0 1566 if (@id_property_objects == 0)
1566 0 0 if (@id_property_objects == 0)
1576 41 893 unless $property
1580 524 369 if $id_properties{$property_name}
1581 0 893 if ($property->is_legacy_eav) { }
51 842 elsif ($property->is_delegated) { }
7 835 elsif ($property->is_calculated or $property->is_transient) { }
1601 0 655 if (my(@errors) = keys %filters)
1619 0 51 unless ($relationship_name)
1626 0 51 unless $via_accessor_meta
1630 0 51 unless ($data_type)
1635 0 51 unless ($data_type_meta)
1642 0 51 unless ($final_accessor_meta)
1652 0 10 if $final_accessor_meta->id_by or $final_accessor_meta->id_class_by
1656 0 10 unless ($final_accessor_meta)
1669 48 66 if $foreign_class_name->isa('UR::Value')
1672 0 66 if (not $foreign_data_source) { }
3 63 elsif ($foreign_data_source ne $ds or not $ds->does_support_joins or not $foreign_data_source->does_support_joins) { }
1688 0 63 unless ($p)
1691 0 63 unless ($p->class_name->__meta__)
1698 0 63 unless ($foreign_table_name)
1715 0 0 defined $_->calculate_sql ? :
0 63 $_->is_calculated ? :
1719 0 63 unless (@foreign_column_names)
1723 0 63 unless (@foreign_column_names == @foreign_property_meta)
1728 60 3 unless ($alias)
1751 176 105 if defined $_->column_name
1762 0 0 unless ($delegated_property->via)
1766 0 0 unless ($final_accessor_property_meta)
1772 0 0 if ($final_accessor_property_meta->is_calculated) { }
1774 0 0 unless (defined $sql_lvalue)
1781 0 0 unless (defined $sql_lvalue)
1791 5 650 $recursion_desc ? :
1793 61 594 if ($sub_typing_property)
1852 0 143 if ($recursion_desc)
1878 99 44 unless (@all_id_property_names == 1 and $all_id_property_names[0] eq 'id')
1893 2 152 if (index($key, '.') != -1)
1900 143 255 if $class_name eq 'UR::Object' or not $class_name->isa('UR::Object')
1904 0 255 if (@id_property_objects == 0)
1906 0 0 if (@id_property_objects == 0)
1919 39 152 unless $property
1925 86 66 if $id_properties{$property_name}
1927 0 152 if ($property->is_legacy_eav) { }
0 152 elsif ($property->is_transient) { }
7 145 elsif ($property->is_delegated) { }
0 145 elsif ($property->is_calculated) { }
1953 0 143 if (my(@errors) = keys %filters)
1974 0 7 unless ($relationship_name)
1985 0 7 unless ($final_accessor_meta)
1991 0 0 unless ($final_accessor_meta)
2006 0 7 if (not $foreign_data_source) { }
7 0 elsif ($foreign_data_source ne $ds or not $ds->does_support_joins or not $foreign_data_source->does_support_joins) { }
2024 0 0 unless ($p)
2034 0 0 unless ($foreign_table_name)
2052 0 0 defined $_->calculate_sql ? :
0 0 $_->is_calculated ? :
2056 0 0 unless (@foreign_column_names)
2060 0 0 unless (@foreign_column_names == @foreign_property_meta)
2066 0 0 unless ($alias)
2098 0 0 if defined $_->column_name
2112 0 0 unless ($delegated_property->via)
2117 0 0 unless ($final_accessor_property_meta)
2124 0 0 if ($final_accessor_property_meta->is_calculated) { }
2126 0 0 unless (defined $sql_lvalue)
2133 0 0 unless (defined $sql_lvalue)
2146 0 143 $recursion_desc ? :
2149 1 142 if ($sub_typing_property)
2153 559 77 if not $_->[1]->is_delegated
2198 0 185 if ($pmeta->is_delegated)
2205 45 16 if ($bx_template->subject_class_name->isa('UR::Value'))
2228 0 0 $recursion_desc ? :
2231 0 0 if ($sub_typing_property)
2283 638 2983 unless ($self->{'_order_by_column_list'})
2288 7 1071 /^-(.*)/ ? :
2291 0 638 unless $self->order_by_columns
2313 2 2172 if (my $join = $self->_get_alias_join($table_name)) { }
2317 2 0 $prop_name ? :