timoninmaxim commented on a change in pull request #9788:
URL: https://github.com/apache/ignite/pull/9788#discussion_r798549007



##########
File path: 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/reducer/IndexQueryReducer.java
##########
@@ -138,12 +138,29 @@ public IndexQueryReducer(
 
         /** */
         private IndexKey key(String key, int type, IgniteBiTuple<?, ?> entry) 
throws IgniteCheckedException {
-            GridQueryProperty prop = typeDesc.property(key);
+            Object o;
 
-            // PrimaryKey field.
-            Object o = prop == null ? entry.getKey() : 
prop.value(entry.getKey(), entry.getValue());
+            if (isKeyField(key))
+                o = entry.getKey();
+            else if (isValueField(key))
+                o = entry.getValue();
+            else {
+                GridQueryProperty prop = typeDesc.property(key);
+
+                o = prop.value(entry.getKey(), entry.getValue());
+            }
 
             return IndexKeyFactory.wrap(o, type, cctx.cacheObjectContext(), 
meta.keyTypeSettings());
         }
+
+        /** */
+        private boolean isKeyField(String fld) {
+            return fld.equals(typeDesc.keyFieldAlias()) || 
fld.equals(QueryUtils.KEY_FIELD_NAME);

Review comment:
       `fld`, `keyFieldAlias` are already normalized here, so it is impossible 
to fail with getting non-normalized keys here.
   
   But, also we should keep in mind the `CacheConfiguration#sqlEscapeAll()` 
flag. In case it set up, a user have to specify field in the same way as it was 
declared. For example, if field declared as "f1", then with 
`sqlEscapeAll=false` it will be normalized to "F1" and user can query it with 
both "f1" or "F1". But if `sqlEscapeAll=true`, then field will be "f1" and user 
has to run query with "f1" attribute only, and it's prohibited to use "F1" for 
querying. 
   
   So `String#equals` works in both cases with or without escaping. I added 
tests for that.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to