Branch Coverage

blib/lib/Attean/API/QueryPlanner.pm
Criterion Covered Total %
branch 70 102 68.6


line true false branch
135 0 26 unless shift()
139 26 0 $self->keep ? :
146 0 2082 unless &blessed($model) and $model->does("Attean::API::Model")
148 1283 799 if ($plan->has_cost) { }
151 799 0 if ($model->does("Attean::API::CostPlanner"))
152 27 772 if (defined(my $cost = $model->cost_for_plan($plan, $self)))
161 0 772 if ($plan->isa('Attean::Plan::Quad')) { }
0 772 elsif ($plan->isa('Attean::Plan::Table')) { }
408 364 elsif ($plan->isa('Attean::Plan::NestedLoopJoin')) { }
356 8 elsif ($plan->isa('Attean::Plan::HashJoin')) { }
3 5 elsif ($plan->isa('Attean::Plan::Service')) { }
0 5 elsif ($plan->isa('Attean::Plan::Unique')) { }
162 0 0 if &blessed($_)
170 26 382 if ($lcost == 0) { }
0 382 elsif ($rcost == 0) { }
181 52 356 unless $plan->children_are_variable_connected
188 0 356 unless $plan->children_are_variable_connected
207 0 772 if ($self->log->is_trace) { }
256 0 13 $k < scalar @todo ? :
262 16 52 if scalar @$o == 0
263 16 36 if scalar @$o == scalar @$s
288 51 9 if ($cost == $min)
301 51 0 if (not defined $min_key or $min_key eq $v_key)
337 0 125 unless shift()
340 0 125 if ($self->log->is_trace)
356 0 1075 unless &blessed($model) and $model->does("Attean::API::Model")
358 796 279 if ($plan->has_cost) { }
361 279 0 if ($model->does("Attean::API::CostPlanner"))
362 29 250 if (defined(my $cost = $model->cost_for_plan($plan, $self)))
371 4 246 if ($plan->isa('Attean::Plan::Quad')) { }
0 246 elsif ($plan->isa('Attean::Plan::Table')) { }
124 122 elsif ($plan->isa('Attean::Plan::NestedLoopJoin')) { }
104 18 elsif ($plan->isa('Attean::Plan::HashJoin')) { }
1 17 elsif ($plan->isa('Attean::Plan::Service')) { }
0 17 elsif ($plan->isa('Attean::Plan::Unique')) { }
372 12 4 if &blessed($_)
381 2 122 if ($lcost == 0) { }
2 120 elsif ($rcost == 0) { }
393 0 104 if ($lcost == 0) { }
0 104 elsif ($rcost == 0) { }
466 0 4 if ($t->subject->does('Attean::API::Variable')) { }
471 0 4 if ($t->predicate->does('Attean::API::Variable')) { }
474 0 4 if ($t->predicate->equals(iri('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'))) { }
480 4 0 if ($t->object->does('Attean::API::Variable')) { }
0 0 elsif ($t->object->does('Attean::API::Literal')) { }
497 208 16 if (scalar @$jv) { }
498 64 144 if (&all(sub {
505 64 0 if ($lnodes[$i]->does("Attean::API::Variable") and $lnodes[$i]->value eq $var)
508 64 0 if ($rnodes[$i]->does("Attean::API::Variable") and $rnodes[$i]->value eq $var)
511 64 0 if scalar keys %joinpos >= 2
520 64 0 if (exists $costs{$joinpos})