Condition Coverage

blib/lib/SQL/Parser.pm
Criterion Covered Total %
condition 175 245 71.4


and 3 conditions

line !l l&&!r l&&r condition
119 288 76 464 exists $self->{'struct'}{'join'} and not defined &_HASH($self->{'struct'}{'join'})
127 325 39 0 defined $self->{'struct'}{'join'}{'table_order'} and not defined &_ARRAY0($self->{'struct'}{'join'}{'table_order'})
136 36 0 792 defined $self->{'struct'}{'column_defs'} and defined &_ARRAY($self->{'struct'}{'column_defs'})
512 476 35 27 $self->{'struct'}{'join'}{'clause'} and $self->{'struct'}{'join'}{'clause'} eq 'ON'
464 35 12 $self->{'struct'}{'multiple_tables'} and not scalar keys %{$$self{'struct'}{'join'};}
521 530 1 7 $self->{'struct'}{'set_quantifier'} and 'DISTINCT' eq $self->{'struct'}{'set_quantifier'}
531 6 1 $self->{'struct'}{'set_quantifier'} and 'DISTINCT' eq $self->{'struct'}{'set_quantifier'} and $self->{'struct'}{'has_set_functions'}
6 1 0 $self->{'struct'}{'set_quantifier'} and 'DISTINCT' eq $self->{'struct'}{'set_quantifier'} and $self->{'struct'}{'has_set_functions'} and not defined &_ARRAY($self->{'struct'}{'group_by'})
608 0 44 20 $remainder and $remainder =~ /^(.+?) USING \(([^\)]+)\)(.*)/i
616 19 18 27 $remainder and $remainder =~ /^(.+?) ON (.+)/i
640 0 0 9 $arg1->{'type'} eq 'column' and not $is_done{$c1}
650 0 5 34 $arg1->{'type'} eq 'column' and $arg2->{'type'} eq 'column'
672 49 15 0 $natural and $keycols
715 0 167 7 $table_name and $table_name =~ /[()]/
738 0 0 180 ($line_str, $v) = &extract_bracketed($v, q[('], '') and defined $line_str
759 0 0 12 $table_name and $remainder
1135 8 2 0 $constraint eq 'PRIMARY KEY' and $primary_defined++
1192 0 0 20 defined $col and defined $val
1233 4 0 0 not $parens and substr($colstr, $-[1] + 1, 1) eq '|'
1381 16 392 31 not defined $alias and 'function' eq $newcol->{'type'} || 'setfunc' eq $newcol->{'type'}
1416 20 6 8 $set_function_name eq 'COUNT' && $set_function_arg_str eq '*'
1472 2 7 0 defined $limit and $limit =~ /[^\d]/
0 9 0 defined $offset and $offset =~ /[^\d]/
1476 0 7 2 defined $offset and not defined $limit
1725 120 0 126 $parens > 0 and $str =~ /\G.*?([\[\]])/cgs
1752 283 28 4 $str =~ / AND / and $str =~ / OR /
1803 15 0 134 @lparens and $lparens[-1] == $parens
1872 2 229 2 !$has_op && $str =~ m<\(([\p{Word} \*/\+\-\[\]\?]+)\)>
1944 10 0 260 not defined $op and $self->{'opts'}{'valid_comparison_twochar_ops_regex'}
1947 16 0 254 not defined $op and $self->{'opts'}{'valid_comparison_ops_regex'}
1952 57 0 212 defined $arg1 and defined $op
57 0 212 defined $arg1 and defined $op and defined $arg2
1983 244 0 25 %not and scalar keys %not == 1
1997 0 86 182 defined &_HASH($arg1) and defined &_HASH($arg2)
86 79 103 defined &_HASH($arg1) and defined &_HASH($arg2) and ($arg1->{'type'} || '') eq 'column'
165 68 35 defined &_HASH($arg1) and defined &_HASH($arg2) and ($arg1->{'type'} || '') eq 'column' and ($arg2->{'type'} || '') eq 'column'
147 8 27 defined &_HASH($arg1) and defined &_HASH($arg2) and ($arg1->{'type'} || '') eq 'column' and ($arg2->{'type'} || '') eq 'column' and $op eq '='
2039 5 0 134 @lbrackets and $lbrackets[-1] == $brackets
2136 1952 338 13 $is_func = $self->is_func($user_func_name) and not $user_func_args =~ /^\(.*\)$/
2290 5 8 $is_func = $self->is_func($user_func_name) and not $user_func_args =~ /^\(.*\)$/ and $is_func =~ /^(?:$bf)$/i
2154 1958 36 315 $is_func and not $is_func =~ /^(?:$bf)$/i
1994 310 5 $is_func and not $is_func =~ /^(?:$bf)$/i and not $str =~ /^\S+\s*\(.*\)\s*$/
2156 1963 0 346 $is_func and not uc($is_func) =~ /^($f)$/
2245 3 71 0 $newval and not $newval->{'type'} =~ /number|column|placeholder|function/
2277 5 0 0 $start->{'length'} and $start->{'length'}{'type'} eq 'string'
2329 0 11 0 $value_type and $value_type eq 'number'
2375 760 0 13 $type eq 'boolean' and $str =~ /^TRUE$/i
2376 760 13 0 $type eq 'boolean' and $str =~ /^FALSE$/i
2382 54 718 1 $str and $str eq q['']
2560 283 103 0 scalar @table_names > 1 and not $self->{'opts'}{'valid_options'}{'SELECT_MULTIPLE_TABLES'}
2600 489 8 2 $u_name = $self->is_func($u_name) and $u_name =~ /^(?:$bf)$/i || $table =~ /^$u_name\s*\(/i
2782 0 0 48 defined $t1 and defined $t2

or 2 conditions

line l !l condition
39 11 6 shift() || 'ANSI'
44 11 6 shift() || {}
75 856 16 $self->{'comment_re'} || '(\\/\\*.*?\\*\\/)'
225 1 0 $_[0]{'struct'}{'command'} || ''
409 16 0 $1 || ''
1185 5 23 $p || ''
7 21 $m || ''
1751 4 311 shift() || []
1885 10 1026 $p || ''
10 1026 $m || ''
1997 182 0 $arg1->{'type'} || ''
103 0 $arg2->{'type'} || ''
2322 2 9 $trim_char ||= ''

or 3 conditions

line l !l&&r !l&&!r condition
41 0 0 17 uc $dialect eq 'ANYDATA' or uc $dialect eq 'CSV'
147 227 369 0 $self->{'struct'}{'ORG_NAME'}{$colname} || $colname
191 104 977 800 $self->{'struct'}{'quoted_ids'} or $self->{'struct'}{'literals'}
512 27 24 487 $self->{'struct'}{'join'}{'clause'} and $self->{'struct'}{'join'}{'clause'} eq 'ON' or $self->{'struct'}{'multiple_tables'} and not scalar keys %{$$self{'struct'}{'join'};}
548 12 0 27 not $self->{'struct'}{'join'}{'clause'} or $self->{'struct'}{'join'}{'clause'} ne 'ON'
851 2 1 0 $func ||= $stmt
852 2 1 0 $subname ||= $func
921 0 2 0 $func ||= $stmt
922 0 2 0 $subname ||= $func
1375 33 407 0 $newcol ||= $self->ROW_VALUE($col)
1381 189 31 203 'function' eq $newcol->{'type'} || 'setfunc' eq $newcol->{'type'}
1472 0 0 9 defined $limit and $limit =~ /[^\d]/ or defined $offset and $offset =~ /[^\d]/
0 0 9 defined $limit and $limit =~ /[^\d]/ or defined $offset and $offset =~ /[^\d]/ or defined $junk
1979 1 9 259 $op =~ s/^(.+) NOT$/$1/i or $op =~ s/^NOT (.+)$/$1/i
2089 33 19 149 $parens or $delim ne ','
2277 0 0 5 $start->{'type'} eq 'string' or $start->{'length'} and $start->{'length'}{'type'} eq 'string'
2484 0 689 1 $col_name eq '*' or $self->IDENTIFIER($col_name)
2499 0 0 681 $self->{'struct'}{'command'} eq 'CREATE' or $col_name =~ /^(?:\p{Word}+\.)?"/
2600 0 2 8 $u_name =~ /^(?:$bf)$/i || $table =~ /^$u_name\s*\(/i
2691 4 0 0 $self->{'tmp'}{'is_table_name'}{$table_name} or $self->{'tmp'}{'is_table_alias'}{$table_name}
2719 31 0 1709 $id =~ /^\?QI(.+)\?$/ or $id =~ /^\?(.+)\?$/