Eli Mesika has posted comments on this change.

Change subject: engine: SearchQuery generates slow query on vds_with_tags and 
storage_domains
......................................................................


Patch Set 8:

(10 comments)

....................................................
File 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java
Line 149:     }
Line 150: 
Line 151:     private static String 
getQuotaRegexString(SearchObjectAutoCompleter search) {
Line 152:         String query = ".*" + 
search.getDefaultSort(SearchObjects.QUOTA_OBJ_NAME) + ".*"
Line 153:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.QUOTA_OBJ_NAME) + ".* ";
If you already modified it .... please use StringBuilder
Line 154:         return query;
Line 155: 
Line 156:     }
Line 157: 


Line 212:      * @param search
Line 213:      */
Line 214:     private static String 
getDiskImageRegexString(SearchObjectAutoCompleter search) {
Line 215:         String query = ".*" + 
search.getDefaultSort(SearchObjects.DISK_OBJ_NAME) + ".*"
Line 216:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.DISK_OBJ_NAME) + ".* ";
same
Line 217:         return query;
Line 218:     }
Line 219: 
Line 220:     /**


Line 253:      * @param search
Line 254:      */
Line 255:     private static String getVMRegexString(SearchObjectAutoCompleter 
search) {
Line 256:         String query = ".*" + 
search.getDefaultSort(SearchObjects.VM_OBJ_NAME) + ".*"
Line 257:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.VM_OBJ_NAME) + ".* ";
same
Line 258:         return query;
Line 259:     }
Line 260: 
Line 261:     /**


Line 264:      * @param search
Line 265:      */
Line 266:     private static String getVdsRegexString(SearchObjectAutoCompleter 
search) {
Line 267:         String query = ".*" + 
search.getDefaultSort(SearchObjects.VDS_OBJ_NAME) + ".*"
Line 268:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.VDS_OBJ_NAME) + ".* ";
same
Line 269:         return query;
Line 270:     }
Line 271: 
Line 272:     /**


Line 275:      */
Line 276:     private static String 
getVdsGroupRegexString(SearchObjectAutoCompleter search) {
Line 277:         String query = ".*" + 
search.getDefaultSort(SearchObjects.VDC_CLUSTER_OBJ_NAME) + ".*"
Line 278:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.VDC_CLUSTER_OBJ_NAME) + ".* 
";
Line 279:         return query;
same
Line 280:     }
Line 281: 
Line 282:     /**
Line 283:      * Regex string which contains all of the storage pool properties.


Line 286:      */
Line 287:     private static String 
getStoragePoolRegexString(SearchObjectAutoCompleter search) {
Line 288:         String query = ".*" + 
search.getDefaultSort(SearchObjects.VDC_STORAGE_POOL_OBJ_NAME) + ".*"
Line 289:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.VDC_STORAGE_POOL_OBJ_NAME) 
+ ".* ";
Line 290:         return query;
same
Line 291:     }
Line 292: 
Line 293:     /**
Line 294:      * Regex string which contains all of the Gluster Volume 
properties.


Line 296:      * @param search
Line 297:      */
Line 298:     private static String 
getGlusterVolumeRegexString(SearchObjectAutoCompleter search) {
Line 299:         String query = ".*" + 
search.getDefaultSort(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*"
Line 300:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + 
".* ";
same
Line 301:         return query;
Line 302: 
Line 303:         // return ".*" + 
search.getDefaultSort(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*"
Line 304:         // + 
search.getRelatedTableNameWithOutTags(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + 
".* "


Line 301:         return query;
Line 302: 
Line 303:         // return ".*" + 
search.getDefaultSort(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*"
Line 304:         // + 
search.getRelatedTableNameWithOutTags(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + 
".* "
Line 305:         // + 
search.getPrimeryKeyName(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*";
Please remove commented code
Line 306:     }
Line 307: 
Line 308:     /**
Line 309:      * Regex string which contains all of the Network properties.


Line 310:      *
Line 311:      * @param search
Line 312:      */
Line 313:     private static String 
getNetworkRegexString(SearchObjectAutoCompleter search) {
Line 314:         String query = ".*" + 
search.getDefaultSort(SearchObjects.NETWORK_OBJ_NAME) + ".*"
same
Line 315:                 + 
search.getRelatedTableNameWithOutTags(SearchObjects.NETWORK_OBJ_NAME) + ".* ";
Line 316:         return query;
Line 317:     }
Line 318: 


....................................................
File 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
Line 905:             String tableNameWithOutTags = 
mSearchObjectAC.getRelatedTableNameWithOutTags(searchObjStr);
Line 906: 
Line 907:             boolean generalQuery = false;
Line 908:             String innerQuery;
Line 909:             if (!wherePhrase.toString().contains("tag")
I wonder if that is good enough :

1) The wherePharse in this point has also the values IIRC , what if we have 
"tag" in a value ?

2) Isn't the table name you are looking for "tags" (not "tag")

3) Can we do a more sophisticated check ?
Line 910:                     && !wherePhrase.toString().contains(".")
Line 911:                     && 
(searchObjStr.equals(SearchObjects.VDS_OBJ_NAME) || 
searchObjStr.equals(SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME))) {
Line 912:                 innerQuery =
Line 913:                         StringFormat.format("SELECT %1$s.%2$s FROM 
%3$s %4$s",


-- 
To view, visit http://gerrit.ovirt.org/20914
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0b7a4912d031c4cdafd636126730ea81d8d2bdd
Gerrit-PatchSet: 8
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liran Zelkha <[email protected]>
Gerrit-Reviewer: Barak Azulay <[email protected]>
Gerrit-Reviewer: Eli Mesika <[email protected]>
Gerrit-Reviewer: Liran Zelkha <[email protected]>
Gerrit-Reviewer: Maor Lipchuk <[email protected]>
Gerrit-Reviewer: Ravi Nori <[email protected]>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to