summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2015-08-28 22:16:40 +0000
committerGordon Sim <gsim@apache.org>2015-08-28 22:16:40 +0000
commit85ed093ba4beae54c1622000cb7a38cb30889239 (patch)
tree2cc74b7b2c8925c96ce993b415e70f511ac8c11e
parent9891b60351d4f84e088fbc021db8bb842908f044 (diff)
downloadqpid-python-85ed093ba4beae54c1622000cb7a38cb30889239.tar.gz
QPID-6717: fix evaluation of BETWEEN and NOT IN when types are mismatched
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1698428 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/SelectorExpression.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/broker/SelectorExpression.cpp b/qpid/cpp/src/qpid/broker/SelectorExpression.cpp
index 1e8a90ed4c..40fa16a4a2 100644
--- a/qpid/cpp/src/qpid/broker/SelectorExpression.cpp
+++ b/qpid/cpp/src/qpid/broker/SelectorExpression.cpp
@@ -375,6 +375,7 @@ public:
Value vu(u->eval(env));
if (!unknown(vu) && ve>vu) return BN_FALSE;
if (unknown(vl) || unknown(vu)) return BN_UNKNOWN;
+ else if (numeric(ve) != numeric(vu) || numeric(ve) != numeric(vl)) return BN_FALSE;
return BN_TRUE;
}
};
@@ -403,7 +404,7 @@ public:
BoolOrNone r = BN_FALSE;
for (std::size_t i = 0; i<l.size(); ++i){
Value li(l[i].eval(env));
- if (unknown(li)) {
+ if (unknown(li) || numeric(li) != numeric(ve)) {
r = BN_UNKNOWN;
continue;
}