From 2569b771a69bddc8cf0e83daf8705a45be2087da Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Wed, 24 Aug 2011 13:04:11 +0000
Subject: [PATCH] Fix issue OPENDJ-263 : Wrong search results when searching draft change log using filter of the form "(changeNumber>=xxxx)" where xxxx<firstChangeNumber.

---
 opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java |   21 +++++++++++----------
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
index b1dbd07..fff83a7 100644
--- a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
@@ -1355,9 +1355,14 @@
     startCLmsg.setLastDraftChangeNumber(-1);
     startCLmsg.setChangeNumber(new ChangeNumber(0,0,(short)0));
 
+    // If there's no filter, just return
+    if (sf == null)
+    {
+      return startCLmsg;
+    }
+
     // Here are the 3 elementary cases we know how to optimize
-    if ((sf != null)
-        && (sf.getFilterType() == FilterType.GREATER_OR_EQUAL)
+    if ((sf.getFilterType() == FilterType.GREATER_OR_EQUAL)
         && (sf.getAttributeType() != null)
         && (sf.getAttributeType().getPrimaryName().
             equalsIgnoreCase("changeNumber")))
@@ -1367,8 +1372,7 @@
       startCLmsg.setFirstDraftChangeNumber(sn);
       return startCLmsg;
     }
-    else if ((sf != null)
-        && (sf.getFilterType() == FilterType.LESS_OR_EQUAL)
+    else if ((sf.getFilterType() == FilterType.LESS_OR_EQUAL)
         && (sf.getAttributeType() != null)
         && (sf.getAttributeType().getPrimaryName().
             equalsIgnoreCase("changeNumber")))
@@ -1378,8 +1382,7 @@
       startCLmsg.setLastDraftChangeNumber(sn);
       return startCLmsg;
     }
-    else if ((sf != null)
-        && (sf.getFilterType() == FilterType.EQUALITY)
+    else if ((sf.getFilterType() == FilterType.EQUALITY)
         && (sf.getAttributeType() != null)
         && (sf.getAttributeType().getPrimaryName().
             equalsIgnoreCase("replicationcsn")))
@@ -1389,8 +1392,7 @@
       startCLmsg.setChangeNumber(cn);
       return startCLmsg;
     }
-    else if ((sf != null)
-        && (sf.getFilterType() == FilterType.EQUALITY)
+    else if ((sf.getFilterType() == FilterType.EQUALITY)
         && (sf.getAttributeType() != null)
         && (sf.getAttributeType().getPrimaryName().
             equalsIgnoreCase("changenumber")))
@@ -1401,8 +1403,7 @@
       startCLmsg.setLastDraftChangeNumber(sn);
       return startCLmsg;
     }
-    else if ((sf != null)
-        && (sf.getFilterType() == FilterType.AND))
+    else if (sf.getFilterType() == FilterType.AND)
     {
       // Here is the only binary operation we know how to optimize
       Collection<SearchFilter> comps = sf.getFilterComponents();

--
Gitblit v1.10.0