Condition Coverage

File:blib/lib/Database/Abstraction.pm
Coverage:57.2%

line%coveragecondition
516100
ABdec
0X0
100
111
$$params{"expires_in"} and not $$params{"cache_duration"}
522100
Adec
00
11
$defaults{"cache_duration"} ||= "1 hour"
54433
ABdec
0X0
100
111
scalar @_ == 1 and ref $_[0] eq "HASH"
67
ABdec
0X0
100
111
scalar @_ == 0 and ref $pkg eq "HASH"
793100
ABdec
0X0
100
111
scalar @_ == 1 and not ref $_[0]
83033
ABdec
0X0
100
111
defined $args{"logger"} and not &Scalar::Util::blessed($args{"logger"})
83457
ABCDEFdec
0000000
0000011
00001X1
0001XX1
001XXX1
01XXXX1
1XXXXX1
$args{"dsn"} or $defaults{"dsn"} or $args{"url"} or $defaults{"url"} or $args{"database"} or $defaults{"database"}
835100
ABdec
000
011
1X1
$args{"directory"} or $defaults{"directory"}
83967
ABdec
000
011
1X1
$args{"host"} // $defaults{"host"}
840100
ABdec
0X0
100
111
$given_host and not $class->_is_local_host($given_host)
84167
ABdec
000
011
1X1
$args{'directory'} || $defaults{'directory'}
33
ABdec
000
011
1X1
$args{'directory'} || $defaults{'directory'}
88033
ABdec
0X0
100
111
defined $$src{"redis_key"} and not defined $$src{"database"}
9460
ABdec
0X0
100
111
defined $db_num and $db_num =~ /\A\d+\z/
169433
ABdec
000
011
1X1
defined $cols or $distinct
169533
ABdec
0X0
100
111
defined $rows and @{$rows;}
1832100
Adec
00
11
Params::Get::get_params(undef, \@_) // {}
183833
ABdec
0X0
100
111
defined $bl and not $bl =~ /\A\d+\z/
184233
ABdec
0X0
100
111
defined $bo and not $bo =~ /\A\d+\z/
18500
Adec
00
11
$$a{$bsc} // ""
0
Adec
00
11
$$b{$bsc} // ""
18520
Adec
00
11
$$b{$bsc} // ""
0
Adec
00
11
$$a{$bsc} // ""
185533
ABdec
000
011
1X1
defined $bl or defined $bo
185933
ABdec
000
011
1X1
$bcols or $bdist
1871100
Adec
00
11
$params //= {}
190867
ABdec
0X0
100
111
defined $c and $c =~ /$SAFE_QUALIFIED/
1920100
ABCdec
0XX0
10X0
1100
1111
not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params)
192167
ABdec
0X0
100
111
ref $$self{"data"} eq "ARRAY" and not $$self{$table}
75
ABCdec
0XX0
10X0
1100
1111
scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $$self{"no_entry"}
193550
Adec
00
11
$$a{$sort_col} // ""
50
Adec
00
11
$$b{$sort_col} // ""
1937100
Adec
00
11
$$b{$sort_col} // ""
50
Adec
00
11
$$a{$sort_col} // ""
1940100
ABdec
000
011
1X1
defined $offset or defined $limit
19550
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
19570
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
196033
ABdec
000
011
1X1
defined $offset or defined $limit
19800
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
19820
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
198533
ABdec
000
011
1X1
defined $offset or defined $limit
198967
ABdec
000
011
1X1
$columns or $distinct
20020
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
20040
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
200733
ABdec
000
011
1X1
defined $offset or defined $limit
201133
ABdec
000
011
1X1
$columns or $distinct
201950
Adec
00
11
$$self{"type"} // ""
2038100
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
20600
Adec
00
11
$$self{"_dialect"} // ""
0
ABCdec
0X00
0X11
1000
1011
11X1
$dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
0
Adec
00
11
$$dbh{"Driver"}{"Name"} // ""
2105100
ABdec
0X0
100
111
$rc and not $$self{"no_fixate"}
21880
Adec
00
11
Params::Get::get_params(undef, \@_) // {}
21920
ABdec
0X0
100
111
defined $bl and not $bl =~ /\A\d+\z/
21960
ABdec
0X0
100
111
defined $bo and not $bo =~ /\A\d+\z/
22040
Adec
00
11
$$a{$bsc} // ""
0
Adec
00
11
$$b{$bsc} // ""
22060
Adec
00
11
$$b{$bsc} // ""
0
Adec
00
11
$$a{$bsc} // ""
22090
ABdec
000
011
1X1
defined $bl or defined $bo
2230100
Adec
00
11
$params //= {}
225950
ABCdec
0XX0
10X0
1100
1111
not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params)
22610
ABdec
0X0
100
111
ref $$self{"data"} eq "ARRAY" and not $$self{$table}
50
ABCdec
0XX0
10X0
1100
1111
scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $$self{"no_entry"}
2284100
Adec
00
11
$$a{$sort_col} // ""
50
Adec
00
11
$$b{$sort_col} // ""
228650
Adec
00
11
$$b{$sort_col} // ""
50
Adec
00
11
$$a{$sort_col} // ""
2289100
ABdec
000
011
1X1
defined $offset or defined $limit
230867
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
23290
Adec
00
11
$$self{"_dialect"} // ""
0
ABCdec
0X00
0X11
1000
1011
11X1
$dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
0
Adec
00
11
$$dbh{"Driver"}{"Name"} // ""
238550
Adec
00
11
Params::Get::get_params(undef, \@_) // {}
238933
ABdec
0X0
100
111
defined $bl and not $bl =~ /\A\d+\z/
239333
ABdec
0X0
100
111
defined $bo and not $bo =~ /\A\d+\z/
24010
Adec
00
11
$$a{$bsc} // ""
0
Adec
00
11
$$b{$bsc} // ""
24030
Adec
00
11
$$b{$bsc} // ""
0
Adec
00
11
$$a{$bsc} // ""
240633
ABdec
000
011
1X1
defined $bl or defined $bo
2416100
Adec
00
11
$params //= {}
244475
ABCdec
0XX0
10X0
1100
1111
not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params)
24450
ABdec
0X0
100
111
ref $$self{"data"} eq "ARRAY" and not $$self{$table}
50
ABCdec
0XX0
10X0
1100
1111
scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $$self{"no_entry"}
24520
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
24540
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
245733
ABdec
000
011
1X1
defined $offset or defined $limit
246633
ABdec
000
011
1X1
defined $offset or defined $limit
24880
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
24900
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
249333
ABdec
000
011
1X1
defined $offset or defined $limit
25090
Adec
00
11
$$a{$sort_col} // ""
0
Adec
00
11
$$b{$sort_col} // ""
25110
Adec
00
11
$$b{$sort_col} // ""
0
Adec
00
11
$$a{$sort_col} // ""
25140
ABdec
000
011
1X1
defined $offset or defined $limit
2527100
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
25600
Adec
00
11
$$self{"_dialect"} // ""
0
ABCdec
0X00
0X11
1000
1011
11X1
$dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
0
Adec
00
11
$$dbh{"Driver"}{"Name"} // ""
2669100
Adec
00
11
Params::Get::get_params(undef, \@_) // {}
267650
Adec
00
11
$params // {}
267967
ABdec
000
011
1X1
$self->_has_complex_criteria($params) || $$self{$table}
75
ABCdec
0XX0
10X0
1100
1111
scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $$self{"no_entry"}
268767
ABdec
0X0
100
111
exists $$self{'data'}{$$params{'entry'}} && $$self{'data'}{$$params{'entry'}}
2709100
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
282767
ABCDEdec
0XXXX0
10XXX0
110XX0
1110X0
111100
111111
$$self{"data"} and not $$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $self->_has_complex_criteria($params)
283925
ABCdec
0XX0
10X0
1100
1111
not $$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $$params{"entry"}
284320
ABCDdec
0XXX0
10XX0
110X0
11100
11111
$$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $id and defined $$params{$id}
285833
ABdec
000
011
1X1
$raw_target // $table
2867100
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
3020100
Adec
00
11
$$self{"_dialect"} // ""
302233
ABdec
0X0
100
111
defined $dsn and $dsn =~ /\Adbi:SQLite:(?:dbname=)?(.+)\z/i
308833
ABdec
0X0
100
111
ref $data eq "ARRAY" and @{$data;}
319633
ABdec
0X0
100
111
ref $data eq "ARRAY" and @{$data;}
319867
ABdec
0X0
100
111
$$self{"infer_types"} and $first
322750
Adec
00
11
$$self{$table}{"Driver"}{"Name"} // ""
329350
Adec
00
11
$$dbh{"Driver"}{"Name"} // ""
75
ABCdec
0XX0
10X0
1100
1111
$dbh and ref $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite"
3416100
Adec
00
11
$params //= {}
3430100
ABdec
0X0
100
111
$join_clause and not $$self{$table}
343150
Adec
00
11
$$self{"type"} // "slurp"
3440100
ABdec
0X0
100
111
$$self{$table} and not $has_perl_only
348150
ABCdec
0XX0
1000
1011
11X1
not defined $$row{$as} and $fn eq 'sum' || $fn eq 'count' || $fn eq 'count_distinct'
350950
Adec
00
11
$$b{$scol} // ""
50
Adec
00
11
$$a{$scol} // ""
351850
Adec
00
11
$$b{$bn} // ""
50
Adec
00
11
$$a{$bn} // ""
3547100
Adec
00
11
$by //= []
3553100
ABdec
0X0
100
111
defined $col and $col =~ /$SAFE_QUALIFIED/
100
Adec
00
11
$col // ""
3560100
ABdec
0X0
100
111
ref $meas eq "ARRAY" and scalar @{$meas;} > 0
3564100
Adec
00
11
ref $m || 'scalar'
3567100
Adec
00
11
$$m{"fn"} // ""
3575100
ABdec
0X0
100
111
defined $col and length $col
357867
ABdec
0X0
100
111
defined $col and length $col
3583100
ABdec
0X0
100
111
defined $as and length $as
3595100
ABdec
0X0
100
111
$fn eq "count" and not defined $col && length $col
67
ABdec
0X0
100
111
defined $col && length $col
3614100
ABdec
000
011
1X1
$k eq "-or" or $k eq "-and"
3616100
ABdec
000
011
1X1
$by_name_set{$k} or $alias_set{$k}
3627100
Adec
00
11
$sort_col // ""
100
ABCdec
0XX0
1000
1011
11X1
defined $sort_col and $by_name_set{$sort_col} || $alias_set{$sort_col}
3628100
ABdec
000
011
1X1
$sort_dir eq "ASC" or $sort_dir eq "DESC"
50
Adec
00
11
$sort_col // ""
368267
ABdec
0X0
100
111
($$self{"type"} // "") eq "CSV" and not $$self{"no_entry"}
50
Adec
00
11
$$self{"type"} // ""
37210
Adec
00
11
$$self{"_dialect"} // ""
20
ABCdec
0X00
0X11
1000
1011
11X1
$dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
50
Adec
00
11
$$dbh{"Driver"}{"Name"} // ""
375367
ABdec
000
011
1X1
$agg_expr // $k
3763100
ABdec
000
011
1X1
$op eq "-in" or $op eq "-not_in"
385367
ABdec
0X0
100
111
$col && $$self{'_schema'}
38540
Adec
00
11
($$self{"_schema"}{$col} // {})->{"type"} // "TEXT"
0
Adec
00
11
$$self{"_schema"}{$col} // {}
38550
ABdec
000
011
1X1
$t eq 'INTEGER' || $t eq 'REAL'
3865100
Adec
00
11
$$row{$$_{"name"}} // ""
388067
ABdec
000
011
1X1
$fn eq "median" or $fn eq "stddev"
100
ABdec
000
011
1X1
$fn eq "min" or $fn eq "max"
390567
ABdec
0X0
100
111
defined $col && exists $row->{$col}
390767
ABdec
000
011
1X1
$fn eq "median" or $fn eq "stddev"
390840
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $val and length $val and &Scalar::Util::looks_like_number($val)
391267
ABdec
000
011
1X1
$$acc{"first_bad"} //= $val
391560
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $val and length $val and &Scalar::Util::looks_like_number($val)
392033
ABdec
000
011
1X1
$$acc{"first_bad"} //= $val
39470
ABCDdec
0XXX0
10XX0
110X0
11100
11111
defined $val and length $val and &Scalar::Util::looks_like_number($val)
39510
ABdec
000
011
1X1
$$acc{"first_bad"} //= $val
3973100
ABdec
000
011
1X1
$fn eq "min" or $fn eq "max"
397467
ABdec
0X0
100
111
$$acc{"bad"} and not $warned{$as}++
397967
ABdec
0X0
100
111
$$acc{"bad"} and not $warned{$as}++
399033
ABdec
0X0
100
111
$$acc{"bad"} and not $warned{$as}++
400333
ABdec
0X0
100
111
$$acc{"bad"} and not $warned{$as}++
411467
ABdec
0X0
100
111
exists $self->{'auto_load'} and not $$self{"auto_load"}
412833
ABdec
0X0
100
111
$$self{"no_entry"} and not $$self{"berkeley"}
4144100
ABdec
000
011
1X1
delete $params{'distinct'} || delete $params{'unique'}
4146100
ABdec
0X0
100
111
wantarray and not $distinct
4147100
ABdec
0X0
100
111
scalar keys %params == 0 and my $data = $$self{"data"}
415550
ABCdec
0XX0
10X0
1100
1111
$$self{"data"} and not $$self{$table} and not $self->_has_complex_criteria(\%params)
416667
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
4177100
ABdec
0X0
100
111
scalar keys %params == 1 and defined(my $key = $params{"entry"})
418450
ABCdec
0XX0
10X0
1100
1111
exists $row->{$key} and defined $$row{$key} and $$row{$key} eq $value
419667
ABdec
0X0
100
111
exists $data->{$key} and defined(my $hash = $$data{$key})
423375
ABCdec
0XX0
10X0
1100
1111
exists $row->{$key} and defined $$row{$key} and $$row{$key} eq $value
4245100
ABdec
0X0
100
111
$$self{"type"} eq "CSV" and not $$self{"no_entry"}
427467
ABdec
0X0
100
111
scalar @args and $args[0]
429833
ABdec
000
011
1X1
$$self{$table}->prepare_cached($query) || croak($query)
430833
ABdec
0X0
100
111
scalar @rc and not $$self{"no_fixate"}
432233
ABdec
0X0
100
111
defined $^V and $^V ge "v5.14.0"
4336100
ABdec
0X0
100
111
defined $temp_path and -f $temp_path
434667
ABdec
000
011
1X1
$$self{'table'} || ref $self
4378100
Adec
00
11
$$j{"type"} // "INNER"
4430100
ABdec
0X0
100
111
defined $col and $col =~ /$SAFE_QUALIFIED/
4434100
ABdec
000
011
1X1
$dir eq "ASC" or $dir eq "DESC"
4448100
ABdec
000
011
1X1
exists $params->{'-or'} or exists $params->{'-and'}
449850
Adec
00
11
$params //= {}
4509100
ABdec
000
011
1X1
defined $or_list or defined $and_list
4575100
ABdec
000
011
1X1
$op eq "-in" or $op eq "-not_in"
463050
Adec
00
11
$params //= {}
4697100
ABdec
0X0
100
111
index($lc_pat, "%") == -1 and index($lc_pat, "_") == -1
4707100
ABdec
0X0
100
111
$first_pct == 0 and $last_pct == 0
471067
ABdec
0X0
100
111
$str_len >= $sfx_len && substr($lc_str, $str_len - $sfx_len) eq $sfx
4715100
ABdec
0X0
100
111
$last_pct == $pat_len - 1 and $first_pct == $pat_len - 1
472475
ABCdec
0XX0
10X0
1100
1111
$first_pct == 0 and $last_pct == $pat_len - 1 and $pat_len >= 3
4748100
ABdec
000
011
1X1
$$prev[$j] || $$curr[$j - 1]
4752100
ABdec
0X0
100
111
$$prev[$j - 1] && ($pc eq '_' || $pc eq substr($lc_str, $j - 1, 1))
477050
Adec
00
11
($$self{"_schema"}{$col} // {})->{"type"} // "TEXT"
100
ABdec
0X0
100
111
$col && $$self{'_schema'}
50
Adec
00
11
$$self{"_schema"}{$col} // {}
4781100
ABdec
0X0
100
111
defined $row_val and $numeric ? grep({$row_val == $_;} @{$operand;}) : grep({$row_val eq $_;} @{$operand;})
478667
ABdec
0X0
100
111
defined $row_val and $numeric ? grep({$row_val == $_;} @{$operand;}) : grep({$row_val eq $_;} @{$operand;})
4788100
ABCdec
0XX0
10X0
1100
1111
defined $row_val and $row_val >= $$operand[0] and $row_val <= $$operand[1]
479967
ABdec
0X0
100
111
defined $row_val and $row_val != $operand
4801100
ABdec
0X0
100
111
defined $row_val and $row_val ne $operand
480467
ABdec
0X0
100
111
defined $row_val and $row_val > $operand
480667
ABdec
0X0
100
111
defined $row_val and $row_val < $operand
480867
ABdec
0X0
100
111
defined $row_val and $row_val >= $operand
481067
ABdec
0X0
100
111
defined $row_val and $row_val <= $operand
4816100
ABdec
0X0
100
111
defined $row_val && defined $crit_val
100
ABdec
000
011
1X1
defined $row_val || defined $crit_val
483667
ABdec
000
011
1X1
$$self{"_table_name"} //= do {         my $t = $$self{'table'} || ref $self; $t =~ s/\A.*:://; $t }
483767
ABdec
000
011
1X1
$$self{'table'} || ref $self
4846100
ABCdec
0000
0011
01X1
1XX1
$$self{$table} or $$self{"data"} or $$self{"berkeley"}
485733
ABdec
000
011
1X1
$$self{'table'} || ref $self
4903100
ABdec
000
011
1X1
$magic{unpack "N", $buf} or $magic{unpack "V", $buf}
490967
ABdec
000
011
1X1
$hex12 eq '6115' || $hex12 eq '1561'
494867
ABdec
0X0
100
111
defined $n and $n == 4
4950100
ABdec
000
011
1X1
$magic eq 'DPDB' || $magic eq 'DPDP'
496333
ABdec
0X0
100
111
scalar @messages and my $logger = $$self{"logger"}