LP#1846484 - Add BETWEEN SYMMETRIC to reporter SQL builder
authorChris Sharp <csharp@georgialibraries.org>
Fri, 4 Oct 2019 18:31:22 +0000 (14:31 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 26 Feb 2020 19:41:32 +0000 (14:41 -0500)
Let's give end users a break and forgive them when they mix
up the order of a date range.  BETWEEN SYMMETRIC allows users
to enter a date range in any order rather than strictly
enforcing "oldest date first" and returning an empty result
set.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>

Open-ILS/src/perlmods/lib/OpenILS/Reporter/SQLBuilder.pm

index d98a04f..0117d98 100644 (file)
@@ -954,10 +954,10 @@ sub toSQL {
         $sql .= '('. $self->SUPER::toSQL ." IS NOT NULL AND ". $self->SUPER::toSQL ." <> '')";
 
     } elsif (lc($op) eq 'between') {
-        $sql .= " BETWEEN ". join(" AND ", map { $_->toSQL } @$val);
+        $sql .= " BETWEEN SYMMETRIC ". join(" AND ", map { $_->toSQL } @$val);
 
     } elsif (lc($op) eq 'not between') {
-        $sql .= " NOT BETWEEN ". join(" AND ", map { $_->toSQL } @$val);
+        $sql .= " NOT BETWEEN SYMMETRIC ". join(" AND ", map { $_->toSQL } @$val);
 
     } elsif (lc($op) eq 'like') {
         $val = $$val[0] if (ref($val) eq 'ARRAY');