Branch Coverage

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

line%coveragebranch
515100TFif (my $params = Params::Get::get_params(undef, \@_))
516100TFif ($$params{"expires_in"} and not $$params{"cache_duration"})
54450TFif (scalar @_ == 0 and ref $pkg eq 'HASH') { }
100TFelsif (scalar(@_) % 2 == 0) { }
50TFelsif (scalar @_ == 1 and ref $_[0] eq 'HASH') { }
0TFelsif (scalar @_ > 0) { }
793100TFif (scalar @_ == 1 and not ref $_[0]) { }
100TFelsif (my $params = Params::Get::get_params(undef, @_)) { }
79950TFif (not defined $class) { }
100TFelsif ($class eq __PACKAGE__) { }
100TFelsif (&Scalar::Util::blessed($class)) { }
8000TFif (scalar keys %args > 0)
814100TFif (defined $args{"id"})
816100TFunless $args{"id"} =~ /$SAFE_IDENTIFIER/
818100TFif (defined $args{"table"})
82050TFunless $args{"table"} =~ /$SAFE_QUALIFIED/
83050TFif (defined $args{"logger"} and not &Scalar::Util::blessed($args{"logger"}))
834100TFunless ($args{"dsn"} or $defaults{"dsn"} or $args{"url"} or $defaults{"url"} or $args{"database"} or $defaults{"database"})
835100TFunless $args{"directory"} or $defaults{"directory"}
840100TFunless ($given_host and not $class->_is_local_host($given_host))
841100TFunless -d ($args{'directory'} || $defaults{'directory'})
847100TFif (defined $$src{"id"})
849100TFunless $$src{"id"} =~ /$SAFE_IDENTIFIER/
851100TFif (defined $$src{"host"})
853100TFunless $$src{"host"} =~ /\A                                    (?:                   # optional "user\@" prefix                                            [a-zA-Z0-9]       # username: first char must be alnum                                            [a-zA-Z0-9._-]*   # username: rest may include dots and hyphens                                            \@                # literal at-sign; \@ prevents array interpolation                                    )?                                    [a-zA-Z0-9:]          # first char of host or IP; colon allows IPv6                                    [a-zA-Z0-9._:-]*      # rest: hostname, dotted IPv4, or IPv6 hex groups                            \z/x
863100TFif (defined $$src{"url"})
865100TFunless $$src{"url"} =~ m[\Ahttps?://]i
867100TFif (defined $$src{"database"})
86950TFunless $$src{"database"} =~ m[\Aredis://]i
871100TFif (defined $$src{"table"})
873100TFunless $$src{"table"} =~ /$SAFE_QUALIFIED/
88050TFif (defined $$src{"redis_key"} and not defined $$src{"database"})
883100TFif (defined $$src{"base_criteria"})
885100TFunless ref $bc eq "HASH"
888100TFif $k =~ /\A-/
889100TFunless $k =~ /$SAFE_QUALIFIED/
919100TFif (my $logger = $$params{"logger"})
920100TFif (&Scalar::Util::blessed($logger)) { }
9460TFunless defined $db_num and $db_num =~ /\A\d+\z/
9510TFunless $$self{"_redis"}
169450TFunless defined $cols or $distinct
169550TFunless defined $rows and @{$rows;}
170050TFif (defined $cols) { }
1703100TFexists $row->{$_} ? :
1707100TFif ($distinct)
170850TFdefined $$r{$_} ? :
1709100TFif $seen{$key}++
1831100TFif ($$self{"berkeley"})
183850TFif (defined $bl and not $bl =~ /\A\d+\z/)
184250TFif (defined $bo and not $bo =~ /\A\d+\z/)
184850TFif (defined $bsc)
18490TFif ($bsd eq 'DESC') { }
185550TFif (defined $bl or defined $bo)
18560TFif $bo
18570TFif defined $bl
185950TFif $bcols or $bdist
1863100TFif ($$self{'no_entry'}) { }
100TFelsif (scalar @_) { }
1874100TFif (my $join_spec = delete $params->{'join'})
1880100TFif (defined $limit)
1881100TFif (not $limit =~ /\A\d+\z/) { }
1888100TFif (defined $offset)
1889100TFif (not $offset =~ /\A\d+\z/) { }
1901100TFif (defined $columns)
190250TFif (ref $columns ne 'ARRAY') { }
1908100TFif (defined $c and $c =~ /$SAFE_QUALIFIED/) { }
191450TF@valid ? :
1920100TFif (not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params))
1921100TFif (scalar keys %{$params;} == 0) { }
100TFelsif (scalar keys %{$params;} == 1 and defined $$params{'entry'} and not $$self{'no_entry'}) { }
100TFelsif (ref $$self{'data'} eq 'HASH') { }
100TFelsif (ref $$self{'data'} eq 'ARRAY' and not $$self{$table}) { }
1924100TFif (ref $$self{'data'} eq 'HASH') { }
192650TFif (scalar keys %{$$self{"data"};} <= 10)
1933100TFif (defined $sort_col)
1934100TFif ($sort_dir eq 'DESC') { }
1940100TFif (defined $offset or defined $limit)
1941100TFif $offset
1942100TFif defined $limit
194450TF$columns ? :
100TFif $columns
1951100TFunless exists $$self{"data"}{$$params{"entry"}}
195350TFif (defined $sort_col)
19540TFif ($sort_dir eq 'DESC') { }
196050TFif (defined $offset or defined $limit)
19610TFif $offset
19620TFif defined $limit
19640TF$columns ? :
50TFif $columns
197650TFexists $row->{$_} ? :
197850TFif (defined $sort_col)
19790TFif ($sort_dir eq 'DESC') { }
198550TFif (defined $offset or defined $limit)
19860TFif $offset
19870TFif defined $limit
1989100TFif $columns or $distinct
199850TFexists $row->{$_} ? :
200050TFif (defined $sort_col)
20010TFif ($sort_dir eq 'DESC') { }
200750TFif (defined $offset or defined $limit)
20080TFif $offset
20090TFif defined $limit
201150TFif $columns or $distinct
201950TFif ($$self{"type"} // "") eq "Redis"
2025100TFif ($distinct) { }
100TFelsif ($columns) { }
2026100TFif ($columns) { }
2037100TFif $join_clause
2038100TFif ($join_clause) { }
100TFelsif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
2039100TFif $where
2043100TFif $where
2045100TFif $where
204750TFif (defined $sort_col) { }
100TFelsif (not $$self{'no_entry'}) { }
205250TFif (defined $limit) { }
50TFelsif (defined $offset) { }
20600TFif $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
206250TFif (defined $offset)
2067100TFif (defined $query_args[0]) { }
2075100TFif ($c = $$self{'cache'}) { }
2077100TFif (defined $query_args[0])
2081100TFif (my $rc = $c->get($key))
209550TFif (my $sth = $$self{$table}->prepare_cached($query))
209650TFunless $sth->execute(@query_args)
2103100TFif $c
2105100TFif ($rc and not $$self{"no_fixate"})
2180100TFunless ref $callback eq "CODE"
218750TFif ($$self{"berkeley"})
21920TFif (defined $bl and not $bl =~ /\A\d+\z/)
21960TFif (defined $bo and not $bo =~ /\A\d+\z/)
22020TFif (defined $bsc)
22030TFif ($bsd eq 'DESC') { }
22090TFif (defined $bl or defined $bo)
22100TFif $bo
22110TFif defined $bl
2222100TFif ($$self{'no_entry'}) { }
100TFelsif (scalar @_) { }
223350TFif (my $join_spec = delete $params->{'join'})
2239100TFif (defined $limit)
224050TFif (not $limit =~ /\A\d+\z/) { }
2247100TFif (defined $offset)
224850TFif (not $offset =~ /\A\d+\z/) { }
2259100TFif (not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params))
2261100TFif (scalar keys %{$params;} == 0) { }
100TFelsif (scalar keys %{$params;} == 1 and defined $$params{'entry'} and not $$self{'no_entry'}) { }
50TFelsif (ref $$self{'data'} eq 'HASH') { }
0TFelsif (ref $$self{'data'} eq 'ARRAY' and not $$self{$table}) { }
2262100TFref $$self{'data'} eq 'HASH' ? :
2264100TFunless exists $$self{"data"}{$$params{"entry"}}
227150TFexists $row->{$_} ? :
22780TFexists $row->{$_} ? :
228150TFif (@rc)
2282100TFif (defined $sort_col)
2283100TFif ($sort_dir eq 'DESC') { }
2289100TFif (defined $offset or defined $limit)
2290100TFif $offset
2291100TFif defined $limit
230750TFif $join_clause
230850TFif ($join_clause) { }
100TFelsif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
23090TFif $where
231350TFif $where
2315100TFif $where
2317100TFif (defined $sort_col) { }
100TFelsif (not $$self{'no_entry'}) { }
2322100TFif (defined $limit) { }
50TFelsif (defined $offset) { }
23290TFif $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
233150TFif (defined $offset)
2336100TFif (defined $query_args[0]) { }
234350TFunless my $sth = $$self{$table}->prepare_cached($query)
234450TFunless $sth->execute(@query_args)
2354100TFif (my $err = $@)
2384100TFif ($$self{"berkeley"})
238950TFif (defined $bl and not $bl =~ /\A\d+\z/)
239350TFif (defined $bo and not $bo =~ /\A\d+\z/)
239950TFif (defined $bsc)
24000TFif ($bsd eq 'DESC') { }
240650TFif (defined $bl or defined $bo)
24070TFif $bo
24080TFif defined $bl
2410100TFwantarray ? :
2418100TFif (my $join_spec = delete $params->{'join'})
242450TFif (defined $limit)
24250TFif (not $limit =~ /\A\d+\z/) { }
243250TFif (defined $offset)
24330TFif (not $offset =~ /\A\d+\z/) { }
2444100TFif (not $join_clause and $$self{"data"} and not $self->_has_complex_criteria($params))
2445100TFif (scalar keys %{$params;} == 0) { }
100TFelsif (scalar keys %{$params;} == 1 and defined $$params{'entry'} and not $$self{'no_entry'}) { }
50TFelsif (ref $$self{'data'} eq 'HASH') { }
0TFelsif (ref $$self{'data'} eq 'ARRAY' and not $$self{$table}) { }
2449100TFref $$self{'data'} eq 'HASH' ? :
245050TFif (defined $sort_col)
24510TFif ($sort_dir eq 'DESC') { }
245750TFif (defined $offset or defined $limit)
24580TFif $offset
24590TFif defined $limit
2465100TFunless exists $$self{"data"}{$$params{"entry"}}
246650TFif (defined $offset or defined $limit)
24690TFif $offset
24700TFif defined $limit
24710TFwantarray ? :
248450TFexists $row->{$_} ? :
248650TFif (defined $sort_col)
24870TFif ($sort_dir eq 'DESC') { }
249350TFif (defined $offset or defined $limit)
24940TFif $offset
24950TFif defined $limit
25050TFexists $row->{$_} ? :
25070TFif (defined $sort_col)
25080TFif ($sort_dir eq 'DESC') { }
25140TFif (defined $offset or defined $limit)
25150TFif $offset
25160TFif defined $limit
2526100TFif $join_clause
2527100TFif ($join_clause) { }
100TFelsif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
252850TFif $where
2532100TFif $where
2534100TFif $where
253650TFif (defined $sort_col) { }
100TFelsif (not $$self{'no_entry'}) { }
254150TFif (defined $limit) { }
100TFelsif (not wantarray) { }
50TFelsif (defined $offset) { }
25440TFif (defined $offset)
254950TFif (defined $offset) { }
25600TFif $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
2565100TFif (defined $query_args[0]) { }
2573100TFif ($c = $$self{'cache'}) { }
2575100TFif (wantarray)
2578100TFif (defined $query_args[0])
2582100TFif (my $rc = $c->get($key))
2584100TFwantarray ? :
259650TFif (my $sth = $$self{$table}->prepare_cached($query))
259750TFunless $sth->execute(@query_args)
2601100TFunless (wantarray)
2604100TFif $c
2609100TFif $c
261150TFif ($rc)
261250TFunless ($$self{"no_fixate"})
2670100TFif ($$self{"berkeley"})
2678100TFif ($$self{"data"})
2679100TFif (scalar keys %{$params;} == 0) { }
100TFelsif (scalar keys %{$params;} == 1 and defined $$params{'entry'} and not $$self{'no_entry'}) { }
100TFelsif (not $self->_has_complex_criteria($params) || $$self{$table}) { }
2681100TFif (ref $$self{"data"} eq "HASH")
2687100TFexists $$self{'data'}{$$params{'entry'}} && $$self{'data'}{$$params{'entry'}} ? :
270050TFexists $row->{$_} ? :
270150TFref $$self{'data'} eq 'HASH' ? :
2709100TFif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
100TFelsif ($$self{'no_entry'}) { }
2712100TFif $where
2715100TFif $where
2718100TFif $where
2721100TFif (defined $query_args[0]) { }
2729100TFif ($c = $$self{'cache'}) { }
2739100TFif (defined $query_args[0])
2742100TFif (my $rc = $c->get($key))
274450TFref $rc eq 'ARRAY' ? :
275150TFif (my $sth = $$self{$table}->prepare_cached($query))
275250TFunless $sth->execute(@query_args)
2819100TFif (not $$self{'no_entry'}) { }
2827100TFif ($$self{"data"} and not $$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $$params{"entry"} and not $self->_has_complex_criteria($params))
2830100TFunless exists $$self{"data"}{$$params{"entry"}}
2832100TFif (my $bc = $$self{"base_criteria"})
283350TFexists $row->{$_} ? :
100TFunless &all(sub {         $self->_match_criterion(exists $row->{$_} ? $$row{$_} : undef, $$bc{$_}, $_); } , keys %{$bc;})
2838100TFif ($$self{"berkeley"})
283950TFif (not $$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $$params{"entry"})
28430TFif ($$self{"no_entry"} and scalar keys %{$params;} == 1 and defined $id and defined $$params{$id})
28440TFif (my $rc = $$self{"berkeley"}{$$params{$id}})
285350TFif (defined $raw_target)
28550TFunless $raw_target =~ /$SAFE_QUALIFIED/
2861100TF$join_spec ? :
2866100TFif $join_clause
2867100TFif ($join_clause) { }
100TFelsif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
286850TFif $where
287250TFif $where
287450TFif $where
2877100TFif (defined $query_args[0]) { }
2889100TFif ($c)
289150TFif (defined $query_args[0]) { }
2892100TFif wantarray
2897100TFif (my $rc = $c->get($key))
289850TFif (wantarray) { }
28990TFif (ref $rc eq "ARRAY")
290950TFunless my $sth = $$self{$table}->prepare_cached($query)
291050TFunless $sth->execute(@query_args)
2913100TFif ($c)
291450TFif ($rc) { }
2952100TFif ($$self{"berkeley"})
296050TFunless defined $$args{"query"}
296950TFunless $query =~ /\bFROM\b/i
2978100TFif (exists $args->{'args'}) { }
2979100TFref $$args{'args'} eq 'ARRAY' ? :
298050TFunless $sth->execute(@bind)
298250TFunless $sth->execute
2988100TFunless (wantarray)
3020100TFif (($$self{"_dialect"} // "") eq "sqlite")
302250TFif (defined $dsn and $dsn =~ /\Adbi:SQLite:(?:dbname=)?(.+)\z/i)
302550TFif @st
3077100TFif $$self{"_columns"}
3083100TFif ($$self{"berkeley"})
3087100TFif (my $data = $$self{'data'}) { }
3088100TFif (ref $data eq 'HASH') { }
50TFelsif (ref $data eq 'ARRAY' and @{$data;}) { }
309050TFif $first
3181100TFif $$self{"_schema"}
3186100TFif ($$self{"berkeley"})
3193100TFif (my $data = $$self{'data'}) { }
3196100TFif (ref $data eq 'HASH') { }
50TFelsif (ref $data eq 'ARRAY' and @{$data;}) { }
3198100TFif ($$self{"infer_types"} and $first)
320250TFif ++$n >= 100
3207100TFif ($$self{"infer_types"})
320850TF$#{$data;} < 99 ? :
321250TFif ($first)
321650TFexists $_->{$col} ? :
100TF@sample ? :
3218100TF$col eq $id ? :
100TF$col eq $id ? :
3228100TFif ($driver eq 'SQLite') { }
324250TFif ($sth)
3293100TFunless $dbh and ref $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite"
3411100TFif ($$self{'no_entry'}) { }
100TFelsif (scalar @_) { }
3424100TFif ($join_spec)
3430100TFif ($join_clause and not $$self{$table})
343150TF$$self{'berkeley'} ? :
3440100TFif ($$self{$table} and not $has_perl_only)
3443100TFif (defined $$args[0]) { }
345050TFif ($c = $$self{'cache'}) { }
34520TFif defined $$args[0]
34540TFif (my $rc = $c->get($key))
346450TFunless (my $sth = $$self{$table}->prepare_cached($sql))
346850TFunless $sth->execute(@{$args;})
348150TFif (not defined $$row{$as} and $fn eq 'sum' || $fn eq 'count' || $fn eq 'count_distinct')
348850TFif $c
3489100TFunless $no_fixate
3499100TFif (my $hav = $$spec{"having"})
3504100TFif (my $s = $$spec{'sort'}) { }
100TFelsif (@by_names) { }
351050TF$is_measure ? :
50TF$is_measure ? :
100TF$desc ? :
351950TFif $cmp
352550TFif $$spec{"offset"}
3526100TFif defined $$spec{"limit"}
3528100TFunless $no_fixate
3548100TFunless ref $by eq "ARRAY"
3553100TFunless defined $col and $col =~ /$SAFE_QUALIFIED/
3560100TFunless ref $meas eq "ARRAY" and scalar @{$meas;} > 0
3564100TFunless ref $m eq "HASH"
3572100TFunless $VALID_AGG_FNS{$fn}
3574100TFif ($fn ne "count")
3575100TFunless defined $col and length $col
3578100TFif (defined $col and length $col)
3579100TFunless $col =~ /$SAFE_QUALIFIED/
3583100TFunless defined $as and length $as
3585100TFunless $as =~ /$SAFE_IDENTIFIER/
3588100TFif $alias_set{$as}
3590100TFif $by_name_set{$as}
3595100TFif ($fn eq 'count' and not defined $col && length $col) { }
100TFelsif ($fn eq 'count_distinct') { }
100TFelsif ($fn eq 'median') { }
100TFelsif ($fn eq 'stddev') { }
3610100TFif (defined $having)
3611100TFunless ref $having eq "HASH"
3614100TFif $k eq "-or" or $k eq "-and"
3616100TFunless $by_name_set{$k} or $alias_set{$k}
3621100TFif (defined $sort_by)
3622100TFref $sort_by eq 'ARRAY' ? :
3625100TFdefined $sort_dir ? :
3627100TFunless defined $sort_col and $by_name_set{$sort_col} || $alias_set{$sort_col}
3628100TFunless $sort_dir eq "ASC" or $sort_dir eq "DESC"
3632100TFif (defined $limit)
3633100TFif (not $limit =~ /\A\d+\z/) { }
3640100TFif (defined $offset)
3641100TFif (not $offset =~ /\A\d+\z/) { }
3650100TFdefined $sort_col ? :
3676100TFif $join_clause
3682100TFif ($join_clause) { }
100TFelsif (($$self{'type'} // '') eq 'CSV' and not $$self{'no_entry'}) { }
368350TFif $where
368750TFif $where
3689100TFif $where
3693100TFif @by_names
3697100TFif (my $hav = $$spec{"having"})
370050TFif ($hfrag)
3707100TFif (my $s = $$spec{'sort'}) { }
100TFelsif (@by_names) { }
3714100TFif (defined $$spec{'limit'}) { }
100TFelsif (defined $$spec{'offset'}) { }
372150TFif $dbh and ($$dbh{"Driver"}{"Name"} // "") eq "SQLite" or ($$self{"_dialect"} // "") eq "sqlite"
3723100TFif (defined $$spec{"offset"})
3758100TFdefined $agg_expr ? :
3760100TFif (ref $val eq 'HASH') { }
100TFelsif (ref $val) { }
100TFelsif (not defined $val) { }
100TFelsif ($val =~ /[%_]/) { }
3763100TFif ($op eq '-in' or $op eq '-not_in') { }
100TFelsif ($op eq '-between') { }
100TFelsif ($op eq '-like') { }
100TFelsif ($op eq '-not_like') { }
100TFelsif ($op eq '!=') { }
100TFelsif ($op =~ /\A[<>]=?\z/) { }
3764100TF$op eq '-in' ? :
3778100TFif (not defined $operand) { }
3816100TFif ($k eq '-or') { }
100TFelsif ($k eq '-and') { }
3819100TFif ($self->_match_criteria($row, $sub))
3824100TFunless $found
3827100TFunless $self->_match_criteria($row, $sub)
3830100TFexists $row->{$k} ? :
3831100TFunless $self->_match_criterion($row_val, $$criteria{$k}, $k)
385350TF$col && $$self{'_schema'} ? :
38550TF$t eq 'INTEGER' || $t eq 'REAL' ? :
386550TFexists $$row{$$_{'name'}} ? :
3869100TFunless (exists $groups{$key})
387450TFexists $$row{$$b{'name'}} ? :
3880100TFif ($fn eq 'sum') { }
100TFelsif ($fn eq 'avg') { }
100TFelsif ($fn eq 'min' or $fn eq 'max') { }
100TFelsif ($fn eq 'count') { }
100TFelsif ($fn eq 'count_distinct') { }
50TFelsif ($fn eq 'median' or $fn eq 'stddev') { }
3905100TFdefined $col && exists $row->{$col} ? :
3907100TFif ($fn eq 'sum') { }
100TFelsif ($fn eq 'avg') { }
100TFelsif ($fn eq 'min') { }
100TFelsif ($fn eq 'max') { }
100TFelsif ($fn eq 'count') { }
100TFelsif ($fn eq 'count_distinct') { }
50TFelsif ($fn eq 'median' or $fn eq 'stddev') { }
3908100TFif (defined $val and length $val and &Scalar::Util::looks_like_number($val)) { }
50TFelsif (defined $val and length $val) { }
3915100TFif (defined $val and length $val and &Scalar::Util::looks_like_number($val)) { }
100TFelsif (defined $val and length $val) { }
3923100TFif (defined $val)
392450TF$numeric ? :
100TFif (not defined $$acc{'val'}) { }
100TFelsif ($numeric ? $val < $$acc{'val'} : $val lt $$acc{'val'}) { }
393150TFif (defined $val)
393250TF$numeric ? :
100TFif (not defined $$acc{'val'}) { }
100TFelsif ($numeric ? $val > $$acc{'val'} : $val gt $$acc{'val'}) { }
3939100TFif (defined $col) { }
3940100TFif defined $val
3945100TFif defined $val
394750TFif (defined $val and length $val and &Scalar::Util::looks_like_number($val)) { }
0TFelsif (defined $val and length $val) { }
3973100TFif ($fn eq 'sum') { }
100TFelsif ($fn eq 'avg') { }
100TFelsif ($fn eq 'min' or $fn eq 'max') { }
100TFelsif ($fn eq 'count') { }
100TFelsif ($fn eq 'count_distinct') { }
100TFelsif ($fn eq 'median') { }
50TFelsif ($fn eq 'stddev') { }
3974100TFif ($$acc{"bad"} and not $warned{$as}++)
3979100TFif ($$acc{"bad"} and not $warned{$as}++)
3982100TF$$acc{'cnt'} ? :
399050TFif ($$acc{"bad"} and not $warned{$as}++)
399550TFif ($n == 0) { }
100TFelsif ($n % 2) { }
400350TFif ($$acc{"bad"} and not $warned{$as}++)
4007100TFif ($n < 2) { }
400850TF$n == 1 ? :
410650TFif $column eq "DESTROY"
4107100TFif $column =~ /\A_/
410950TFunless my $self = shift()
411150TFunless ref $self
4114100TFif exists $self->{'auto_load'} and not $$self{"auto_load"}
411750TFunless $column =~ /$SAFE_IDENTIFIER/
4122100TFif (ref $_[0] eq 'HASH') { }
100TFelsif (scalar(@_) % 2 == 0) { }
50TFelsif (scalar @_ == 1) { }
412850TFif ($$self{"no_entry"} and not $$self{"berkeley"})
413450TFif ($$self{"berkeley"})
41350TFif (my $id = $$self{"id"})
414150TFunless defined $$self{"type"}
4146100TFif (wantarray and not $distinct) { }
4147100TFif (scalar keys %params == 0 and my $data = $$self{"data"})
4152100TFref $data eq 'ARRAY' ? :
4153100TFexists $_->{$column} ? :
415550TFif ($$self{"data"} and not $$self{$table} and not $self->_has_complex_criteria(\%params))
415850TFref $$self{'data'} eq 'ARRAY' ? :
415950TFexists $_->{$column} ? :
416250TFexists $row->{$_} ? :
4166100TFif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
4173100TFif (my $data = $$self{"data"})
4177100TFif ($$self{'no_entry'}) { }
100TFelsif (scalar keys %params == 1 and defined(my $key = $params{'entry'})) { }
100TFelsif (scalar keys %params == 0) { }
418050TFif (defined $key)
4184100TFunless exists $row->{$key} and defined $$row{$key} and $$row{$key} eq $value
418550TFexists $row->{$column} ? :
418650TFdefined $rc ? :
4196100TFif (exists $data->{$key} and defined(my $hash = $$data{$key}))
4197100TFunless (exists $hash->{$column})
4202100TFif (defined $rc) { }
420950TFif (wantarray)
421050TFif ($distinct)
421550TFexists $r->{$column} ? :
4216100TFif defined $v
42270TFexists $v->{$column} ? :
4233100TFunless exists $row->{$key} and defined $$row{$key} and $$row{$key} eq $value
423450TFunless exists $row->{$column}
423550TFif (my $rc = $$row{$column})
4245100TFif ($$self{'type'} eq 'CSV' and not $$self{'no_entry'}) { }
4256100TFunless $k =~ /$SAFE_QUALIFIED/
4259100TFdefined $value ? :
4260100TFif (defined $value) { }
4261100TF$done_where ? :
426550TF$done_where ? :
4269100TFif (wantarray) { }
4274100TFif (scalar @args and $args[0]) { }
4281100TFif ($cache = $$self{'cache'}) { }
4282100TFif (wantarray)
4285100TFif (defined $args[0]) { }
4290100TFif (my $rc = $cache->get($key))
4292100TFwantarray ? :
429950TFunless $sth->execute(@args)
4301100TFif (wantarray)
4305100TFif ($cache)
430850TFif scalar @rc and not $$self{"no_fixate"}
4313100TFif ($cache)
432250TFif (defined $^V and $^V ge "v5.14.0")
432350TFif ${^GLOBAL_PHASE} eq "DESTRUCT"
4330100TFif (defined $$self{"_temp_fh"})
4336100TFif defined $temp_path and -f $temp_path
434150TFif (my $redis = delete $self->{'_redis'})
4349100TFif (my $dbh = delete $self->{$table_name})
435050TFif $dbh->can("disconnect")
435150TFif $dbh->can("finish")
4355100TFif ($$self{"berkeley"})
4374100TFref $join_spec eq 'ARRAY' ? :
4379100TFunless my $jtable = $$j{"table"}
4380100TFunless $jtable =~ /$SAFE_QUALIFIED/
4382100TFunless my $on = $$j{"on"}
4383100TFunless $VALID_JOIN_TYPES{$type}
4399100TFif defined $_
4400100TFunless @non_null
4401100TFif &all(sub {         $_ =~ /$INFER_INT_RE/; } , @non_null)
4402100TFif &all(sub {         $_ =~ /$INFER_REAL_RE/; } , @non_null)
4403100TFif &all(sub {         $_ =~ /$INFER_TS_RE/; } , @non_null)
4404100TFif &all(sub {         $_ =~ /$INFER_DATE_RE/; } , @non_null)
4427100TFunless defined $sb
4428100TFref $sb eq 'ARRAY' ? :
4429100TFdefined $dir ? :
4430100TFunless (defined $col and $col =~ /$SAFE_QUALIFIED/)
4434100TFunless ($dir eq "ASC" or $dir eq "DESC")
4446100TFunless defined $params
4448100TFif exists $params->{'-or'} or exists $params->{'-and'}
4457100TF&any(sub {         ref $_; } , values %{$params;}) ? :
4509100TFif (defined $or_list or defined $and_list) { }
4517100TFif ($or_list)
452150TFif ($s)
4526100TFif (@sub_clauses)
4531100TFif ($and_list)
453550TFif ($s)
4540100TFif (@sub_clauses)
4547100TFif ($more)
4569100TFunless $col =~ /$SAFE_QUALIFIED/
4572100TFif (ref $val eq 'HASH') { }
100TFelsif (ref $val) { }
100TFelsif (not defined $val) { }
100TFelsif ($val =~ /[%_]/) { }
4575100TFif ($op eq '-in' or $op eq '-not_in') { }
100TFelsif ($op eq '-between') { }
100TFelsif ($op eq '-like') { }
100TFelsif ($op eq '-not_like') { }
100TFelsif ($op eq '!=') { }
100TFelsif ($op =~ /\A[<>]=?\z/) { }
4576100TF$op eq '-in' ? :
4590100TFif (not defined $operand) { }
4637100TFif (delete $params->{'join'})
4642100TFunless $_ eq "-or"
100TFif (&any(sub {         $_ eq "-and" unless $_ eq "-or"; } , keys %{$params;}))
4650100TFif (@cols) { }
4657100TFunless ($self->_match_criterion($$row{$col}, $$params{$col}, $col))
4662100TFif $match
4689100TFif $pattern eq "%"
4697100TFif index($lc_pat, "%") == -1 and index($lc_pat, "_") == -1
4702100TFif (index($lc_pat, "_") == -1)
4707100TFif ($first_pct == 0 and $last_pct == 0)
4715100TFif ($last_pct == $pat_len - 1 and $first_pct == $pat_len - 1)
4724100TFif ($first_pct == 0 and $last_pct == $pat_len - 1 and $pat_len >= 3)
4726100TFif (index($needle, "%") == -1)
4745100TFif ($pc eq '%') { }
4748100TF$$prev[$j] || $$curr[$j - 1] ? :
4752100TF$$prev[$j - 1] && ($pc eq '_' || $pc eq substr($lc_str, $j - 1, 1)) ? :
4770100TF$col && $$self{'_schema'} ? :
4771100TFunless $t eq "INTEGER"
4774100TFif (ref $crit_val eq "HASH")
4777100TFif ($op eq '-in') { }
100TFelsif ($op eq '-not_in') { }
100TFelsif ($op eq '-between') { }
100TFelsif ($op eq '-like') { }
100TFelsif ($op eq '-not_like') { }
100TFelsif ($op eq '!=') { }
100TFelsif ($op eq '>') { }
100TFelsif ($op eq '<') { }
100TFelsif ($op eq '>=') { }
50TFelsif ($op eq '<=') { }
4781100TF$numeric ? :
100TFunless defined $row_val and $numeric ? grep({$row_val == $_;} @{$operand;}) : grep({$row_val eq $_;} @{$operand;})
4786100TF$numeric ? :
100TFif defined $row_val and $numeric ? grep({$row_val == $_;} @{$operand;}) : grep({$row_val eq $_;} @{$operand;})
4788100TFunless defined $row_val and $row_val >= $$operand[0] and $row_val <= $$operand[1]
4790100TFunless defined $row_val
4791100TFunless _like_match($row_val, $operand)
4793100TFunless defined $row_val
4794100TFif _like_match($row_val, $operand)
4796100TFif (not defined $operand) { }
100TFelsif ($numeric) { }
4797100TFunless defined $row_val
4799100TFunless defined $row_val and $row_val != $operand
4801100TFunless defined $row_val and $row_val ne $operand
4804100TFunless defined $row_val and $row_val > $operand
4806100TFunless defined $row_val and $row_val < $operand
4808100TFunless defined $row_val and $row_val >= $operand
4810100TFunless defined $row_val and $row_val <= $operand
4816100TF$numeric ? :
100TF!(defined $row_val && defined $crit_val) ? :
100TF!(defined $row_val || defined $crit_val) ? :
4831100TFif ($$params{'table'}) { }
4833100TFunless $table =~ /$SAFE_QUALIFIED/
4846100TFunless $$self{$table} or $$self{"data"} or $$self{"berkeley"}
4859100TFif (my $dbh = $$self{$table})
4874100TFunless do {         BEGIN {     $^H{'autodie::Scope::GuardStack/guard7'} = 'autodie::Scope::Guard=CODE(0x55d3c7f117e0)';     $^H{'no Fatal'} = 'HASH(0x55d3c7bc2e28)'; } open $fh, "<", $file }
488050TFif ($is_db)
48860TFif (tie %bdb, "DB_File", $file, 0, 420, $DB_File::DB_HASH)
4901100TFunless &Database::Abstraction::read($fh, \my $buf, 4) == 4
4903100TFif $magic{unpack "N", $buf} or $magic{unpack "V", $buf}
490650TFunless &Database::Abstraction::seek($fh, 12, 0)
4907100TFunless &Database::Abstraction::read($fh, \$buf, 4)
4923100TFif $bare =~ /\A(?:localhost|127\.0\.0\.1|::1)\z/i
4928100TFif $lc_bare eq $me
4944100TFunless do {         BEGIN {     $^H{'autodie::Scope::GuardStack/guard8'} = 'autodie::Scope::Guard=CODE(0x55d3c7f22070)';     $^H{'no Fatal'} = 'HASH(0x55d3c7f22010)'; } open $fh, "<", $file }
4948100TFunless defined $n and $n == 4
496350TFif (scalar @messages and my $logger = $$self{"logger"})