Skip to content

Commit f98ca1e

Browse files
committed
Merge branch 'develop'
2 parents 0a51efe + f8ab00a commit f98ca1e

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

sope-gdl1/GDLAccess/EOSQLExpression.m

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,9 +1161,9 @@ + (NSString *)formatSQLString:(NSString *)_sqlString format:(NSString *)_fmt {
11611161
- (NSString *)sqlStringForSelector:(SEL)_selector value:(id)_value {
11621162
if ((_value == null) || (_value == nil)) {
11631163
if (sel_isEqual(_selector, EOQualifierOperatorEqual))
1164-
return @"is";
1164+
return @"IS";
11651165
else if (sel_isEqual(_selector, EOQualifierOperatorNotEqual))
1166-
return @"is not";
1166+
return @"IS NOT";
11671167
}
11681168
else {
11691169
if (sel_isEqual(_selector, EOQualifierOperatorEqual))
@@ -1182,6 +1182,8 @@ - (NSString *)sqlStringForSelector:(SEL)_selector value:(id)_value {
11821182
return @">=";
11831183
else if (sel_isEqual(_selector, EOQualifierOperatorLike))
11841184
return @"LIKE";
1185+
else if (sel_isEqual(_selector, EOQualifierOperatorCaseInsensitiveLike))
1186+
return @"ILIKE";
11851187
else {
11861188
return [NSString stringWithFormat:@"UNKNOWN<%@>",
11871189
NSStringFromSelector(_selector)];
@@ -1212,6 +1214,7 @@ - (NSString *)sqlStringForKeyComparisonQualifier:(EOKeyComparisonQualifier *)_q
12121214
}
12131215

12141216
- (NSString *)sqlStringForKeyValueQualifier:(EOKeyValueQualifier *)_q {
1217+
SEL sel = [_q selector];
12151218
NSMutableString *s;
12161219
NSString *sql;
12171220
id v;
@@ -1224,12 +1227,12 @@ - (NSString *)sqlStringForKeyValueQualifier:(EOKeyValueQualifier *)_q {
12241227
[s appendString:sql];
12251228

12261229
[s appendString:@" "];
1227-
sql = [self sqlStringForSelector:[_q selector] value:v];
1230+
sql = [self sqlStringForSelector:sel value:v];
12281231
[s appendString:sql];
12291232
[s appendString:@" "];
12301233

1231-
if (([_q selector] == EOQualifierOperatorLike) ||
1232-
([_q selector] == EOQualifierOperatorCaseInsensitiveLike))
1234+
if ((sel == EOQualifierOperatorLike) ||
1235+
(sel == EOQualifierOperatorCaseInsensitiveLike))
12331236
v = [[self class] sqlPatternFromShellPattern:v];
12341237

12351238
sql = [self sqlStringForValue:v attributeNamed:[_q key]];

sope-gdl1/PostgreSQL/PostgreSQL72Expression.m

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ - (id)selectExpressionForAttributes:(NSArray *)attributes
4141
lock:(BOOL)flag
4242
qualifier:(EOSQLQualifier *)qualifier
4343
fetchOrder:(NSArray *)fetchOrder
44-
channel:(EOAdaptorChannel *)channel {
44+
channel:(EOAdaptorChannel *)channel
45+
{
4546

4647
lock = flag;
4748
[super selectExpressionForAttributes:attributes
@@ -52,6 +53,27 @@ - (id)selectExpressionForAttributes:(NSArray *)attributes
5253
return self;
5354
}
5455

56+
- (NSString *)sqlStringForKeyValueQualifier:(EOKeyValueQualifier *)_q {
57+
SEL sel = [_q selector];
58+
if (sel_isEqual(sel, EOQualifierOperatorLike) ||
59+
sel_isEqual(sel, EOQualifierOperatorCaseInsensitiveLike))
60+
{
61+
NSMutableString *s = [NSMutableString stringWithCapacity:100];
62+
[s appendString:[[self class]
63+
formatSQLString:[self sqlStringForAttributeNamed:[_q key]]
64+
format:nil]];
65+
// Cast, LIKE only works on TEXT in modern PostgreSQL.
66+
[s appendString:
67+
sel_isEqual(sel, EOQualifierOperatorCaseInsensitiveLike)
68+
? @"::TEXT ILIKE ": @"::TEXT LIKE "];
69+
id v = [[self class] sqlPatternFromShellPattern:[_q value]];
70+
[s appendString:[self sqlStringForValue:v attributeNamed:[_q key]]];
71+
return s;
72+
}
73+
74+
return [super sqlStringForKeyValueQualifier: _q];
75+
}
76+
5577
- (NSString *)fromClause {
5678
NSMutableString *fromClause;
5779
NSEnumerator *enumerator;

0 commit comments

Comments
 (0)