};
# castdate not supported for acqlia fields: they're all type text
- my ($k, $v, $fuzzy, $between, $not, $starts, $ends, $castdate, $gte, $lte, $age, $gt, $lt) = breakdown_term($unit);
+ my ($k, $v, $fuzzy, $between, $not, $starts, $ends, $castdate, $gte, $lte, $age, $gt, $lt, $notnull) = breakdown_term($unit);
my $point = $subquery->{"where"}->{"-and"};
my $term_clause;
push @$point, {"attr_value" => {"<" => $v}};
} elsif ($between and could_be_range($v)) {
push @$point, {"attr_value" => {"between" => $v}};
+ } elsif ($notnull) {
+ push @$point, {"attr_value" => {"!=" => undef}};
} elsif (check_1d_max($v)) {
push @$point, {"attr_value" => $v};
} else {
$term->{"__age"} ? 1 : 0,
$term->{"__gt"} ? 1 : 0,
$term->{"__lt"} ? 1 : 0,
+ $term->{"__isnotnull"} ? 1 : 0,
);
}
$outer_clause->{$conj} = [] unless $outer_clause->{$conj};
foreach my $unit (@{$terms->{$class}}) {
my $special_clause;
- my ($k, $v, $fuzzy, $between, $not, $starts, $ends, $castdate, $gte, $lte, $age, $gt, $lt) =
+ my ($k, $v, $fuzzy, $between, $not, $starts, $ends, $castdate, $gte, $lte, $age, $gt, $lt, $notnull) =
breakdown_term($unit);
my $term_clause;
} else {
$term_clause = {$k => {between => $v}};
}
+ } elsif ($notnull) {
+ $term_clause = {$k => {"!=" => undef}};
} elsif (check_1d_max($v)) {
if ($castdate) {
$v = castdate($v, $gte, $lte, 0, $gt, $lt);