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