From b4807dbb8e1d89b74253e9b5406f946c99586be7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 10 Dec 2010 22:24:36 +0000 Subject: [PATCH] Monotone-Parent: 6e855c49b7521b655243e2102c805434a3cf5d96 Monotone-Revision: b6bdeca3435d0f186f21c6ab3f3905445e6a12b4 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-12-10T22:24:36 Monotone-Branch: ca.inverse.sogo --- SOPE/GDLContentStore/ChangeLog | 1 + SOPE/GDLContentStore/EOQualifier+GCS.m | 101 ++++++++++++------------- 2 files changed, 49 insertions(+), 53 deletions(-) diff --git a/SOPE/GDLContentStore/ChangeLog b/SOPE/GDLContentStore/ChangeLog index 11cf10345..84df4aad6 100644 --- a/SOPE/GDLContentStore/ChangeLog +++ b/SOPE/GDLContentStore/ChangeLog @@ -2,6 +2,7 @@ * EOQualifier+GCS.m (_appendKeyValueQualifier:toString:): fixed evaluation to handle the "EOQualifierOperatorNotEqual" operator. + Fixed code to consider "nil" values as another case for "NULL". 2010-08-19 Wolfgang Sourdeau diff --git a/SOPE/GDLContentStore/EOQualifier+GCS.m b/SOPE/GDLContentStore/EOQualifier+GCS.m index 9dc485e28..45ebf5ba3 100644 --- a/SOPE/GDLContentStore/EOQualifier+GCS.m +++ b/SOPE/GDLContentStore/EOQualifier+GCS.m @@ -75,65 +75,60 @@ qKey = [_q key]; isCI = NO; - if ((val = [_q value])) { - SEL op = [_q selector]; + SEL op = [_q selector]; - if ([val isNotNull]) { - if (sel_eq(op, EOQualifierOperatorEqual)) - qOperator = @"="; - else if (sel_eq(op, EOQualifierOperatorNotEqual)) - qOperator = @"!="; - else if (sel_eq(op, EOQualifierOperatorLessThan)) - qOperator = @"<"; - else if (sel_eq(op, EOQualifierOperatorGreaterThan)) - qOperator = @">"; - else if (sel_eq(op, EOQualifierOperatorLessThanOrEqualTo)) - qOperator = @"<="; - else if (sel_eq(op, EOQualifierOperatorGreaterThanOrEqualTo)) - qOperator = @">="; - else if (sel_eq(op, EOQualifierOperatorLike)) - qOperator = @"LIKE"; - else if (sel_eq(op, EOQualifierOperatorCaseInsensitiveLike)) { - 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])]; - } + val = [_q value]; + if (val && [val isNotNull]) { + if (sel_eq(op, EOQualifierOperatorEqual)) + qOperator = @"="; + else if (sel_eq(op, EOQualifierOperatorNotEqual)) + qOperator = @"!="; + else if (sel_eq(op, EOQualifierOperatorLessThan)) + qOperator = @"<"; + else if (sel_eq(op, EOQualifierOperatorGreaterThan)) + qOperator = @">"; + else if (sel_eq(op, EOQualifierOperatorLessThanOrEqualTo)) + qOperator = @"<="; + else if (sel_eq(op, EOQualifierOperatorGreaterThanOrEqualTo)) + qOperator = @">="; + else if (sel_eq(op, EOQualifierOperatorLike)) + qOperator = @"LIKE"; + else if (sel_eq(op, EOQualifierOperatorCaseInsensitiveLike)) { + isCI = YES; + qOperator = @"LIKE"; } else { - if (sel_eq(op, EOQualifierOperatorEqual)) { - 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)]; - } + [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 { - qOperator = @"IS"; - qValue = @"NULL"; + if (sel_eq(op, EOQualifierOperatorEqual)) { + 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)