@@ -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