From: miker Date: Sat, 12 Jun 2010 13:50:45 +0000 (+0000) Subject: backporting r16694 -- reporter WHERE clause fixes X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=8123443e8c847c764c5096a55ac7826cd5532bdb;p=working%2FEvergreen.git backporting r16694 -- reporter WHERE clause fixes git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6@16695 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm index 228b6d38d7..d2940fa3a4 100644 --- a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm @@ -944,10 +944,20 @@ sub toSQL { $sql .= " NOT IN (". join(",", map { $_->toSQL } @$val).")"; } elsif (lc($op) eq 'is blank') { - $sql = '('. $self->SUPER::toSQL ." IS NULL OR ". $self->SUPER::toSQL ." = '')"; + if ($rel && $rel->is_nullable) { # need to redo this + $sql = "((". $self->SUPER::toSQL .") IS NULL OR "; + } else { + $sql = ''; + } + $sql .= '('. $self->SUPER::toSQL ." IS NULL OR ". $self->SUPER::toSQL ." = '')"; } elsif (lc($op) eq 'is not blank') { - $sql = '('. $self->SUPER::toSQL ." IS NOT NULL AND ". $self->SUPER::toSQL ." <> '')"; + if ($rel && $rel->is_nullable) { # need to redo this + $sql = "((". $self->SUPER::toSQL .") IS NULL OR "; + } else { + $sql = ''; + } + $sql .= '('. $self->SUPER::toSQL ." IS NOT NULL AND ". $self->SUPER::toSQL ." <> '')"; } elsif (lc($op) eq 'between') { $sql .= " BETWEEN ". join(" AND ", map { $_->toSQL } @$val);