Monotone-Parent: 6e855c49b7521b655243e2102c805434a3cf5d96

Monotone-Revision: b6bdeca3435d0f186f21c6ab3f3905445e6a12b4

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-12-10T22:24:36
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-12-10 22:24:36 +00:00
parent 0251d4ed6e
commit b4807dbb8e
2 changed files with 49 additions and 53 deletions

View File

@ -2,6 +2,7 @@
* EOQualifier+GCS.m (_appendKeyValueQualifier:toString:): fixed * EOQualifier+GCS.m (_appendKeyValueQualifier:toString:): fixed
evaluation to handle the "EOQualifierOperatorNotEqual" operator. evaluation to handle the "EOQualifierOperatorNotEqual" operator.
Fixed code to consider "nil" values as another case for "NULL".
2010-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca> 2010-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>

View File

@ -75,65 +75,60 @@
qKey = [_q key]; qKey = [_q key];
isCI = NO; isCI = NO;
if ((val = [_q value])) { SEL op = [_q selector];
SEL op = [_q selector];
if ([val isNotNull]) { val = [_q value];
if (sel_eq(op, EOQualifierOperatorEqual)) if (val && [val isNotNull]) {
qOperator = @"="; if (sel_eq(op, EOQualifierOperatorEqual))
else if (sel_eq(op, EOQualifierOperatorNotEqual)) qOperator = @"=";
qOperator = @"!="; else if (sel_eq(op, EOQualifierOperatorNotEqual))
else if (sel_eq(op, EOQualifierOperatorLessThan)) qOperator = @"!=";
qOperator = @"<"; else if (sel_eq(op, EOQualifierOperatorLessThan))
else if (sel_eq(op, EOQualifierOperatorGreaterThan)) qOperator = @"<";
qOperator = @">"; else if (sel_eq(op, EOQualifierOperatorGreaterThan))
else if (sel_eq(op, EOQualifierOperatorLessThanOrEqualTo)) qOperator = @">";
qOperator = @"<="; else if (sel_eq(op, EOQualifierOperatorLessThanOrEqualTo))
else if (sel_eq(op, EOQualifierOperatorGreaterThanOrEqualTo)) qOperator = @"<=";
qOperator = @">="; else if (sel_eq(op, EOQualifierOperatorGreaterThanOrEqualTo))
else if (sel_eq(op, EOQualifierOperatorLike)) qOperator = @">=";
qOperator = @"LIKE"; else if (sel_eq(op, EOQualifierOperatorLike))
else if (sel_eq(op, EOQualifierOperatorCaseInsensitiveLike)) { qOperator = @"LIKE";
isCI = YES; else if (sel_eq(op, EOQualifierOperatorCaseInsensitiveLike)) {
qOperator = @"LIKE"; isCI = YES;
} qOperator = @"LIKE";
else {
[self errorWithFormat:@"%s: unsupported operation for null: %@",
__PRETTY_FUNCTION__, NSStringFromSelector(op)];
qOperator = @"=";
}
if ([val isKindOfClass:[NSNumber class]])
qValue = [val stringValue];
else if ([val isKindOfClass:[NSString class]]) {
qValue = [NSString stringWithFormat: @"'%@'", val];
}
else {
qValue = @"NULL";
[self errorWithFormat:@"%s: unsupported value class: %@",
__PRETTY_FUNCTION__, NSStringFromClass([val class])];
}
} }
else { else {
if (sel_eq(op, EOQualifierOperatorEqual)) { [self errorWithFormat:@"%s: unsupported operation for null: %@",
qOperator = @"IS"; __PRETTY_FUNCTION__, NSStringFromSelector(op)];
qValue = @"NULL"; qOperator = @"=";
} }
else if (sel_eq(op, EOQualifierOperatorNotEqual)) {
qOperator = @"IS NOT"; if ([val isKindOfClass:[NSNumber class]])
qValue = @"NULL"; qValue = [val stringValue];
} else if ([val isKindOfClass:[NSString class]]) {
else { qValue = [NSString stringWithFormat: @"'%@'", val];
qOperator = @"IS"; }
qValue = @"NULL"; else {
[self errorWithFormat:@"%s: invalid operation for null: %@", qValue = @"NULL";
__PRETTY_FUNCTION__, NSStringFromSelector(op)]; [self errorWithFormat:@"%s: unsupported value class: %@",
} __PRETTY_FUNCTION__, NSStringFromClass([val class])];
} }
} }
else { else {
qOperator = @"IS"; if (sel_eq(op, EOQualifierOperatorEqual)) {
qValue = @"NULL"; qOperator = @"IS";
qValue = @"NULL";
}
else if (sel_eq(op, EOQualifierOperatorNotEqual)) {
qOperator = @"IS NOT";
qValue = @"NULL";
}
else {
qOperator = @"IS";
qValue = @"NULL";
[self errorWithFormat:@"%s: invalid operation for null: %@",
__PRETTY_FUNCTION__, NSStringFromSelector(op)];
}
} }
if (isCI) if (isCI)