Jens Deppe created GEODE-744:
--------------------------------
Summary: Incorrect use of APP_FETCH_SIZE in GFSH
Key: GEODE-744
URL: https://issues.apache.org/jira/browse/GEODE-744
Project: Geode
Issue Type: Bug
Components: management
Reporter: Jens Deppe
A customer is facing an easily reproducible issue when executing queries from
GFSH. It appears that the APP_FETCH_SIZE is being set only when parts of the
query are in lower case. It happens in 7.0.X, 8.0.X and 8.1.X.
Attached to the TRAC is the reproducible scenario, steps to reproduce:
Uncompress the file.
Modify variables "GEMFIRE" and "JAVA_HOME" in file setenv.txt.
Execute "./start_cluster.sh".
Exceute "./run.sh". This script inserts 1500 entries in the region and,
afterwards, executes two queries, one using lower case and other using upper
case. You can see from the console that ouput is different, one returns the
actual size (1500) and the other one returns the default APP_FETCH_SIZE (1000).
Exceute "./stop_cluster.sh".
The fix seems pretty easy to implement, the method "addLimit" of the inner
class "SelectExecStep?" in "DataCommandFunction?" class should be modified to
compare strings without using the actual word case. Is not enough to add more
"or" to the comparison like we are currently doing with since keywords like
"Count" or "coUn" will still break the functionallity. We should compare
everything using lower case or upper case, it doesn't matter which one, or at
least make sure that gfsh converts the query to upper/lower case before
actually executing them.
The actual code with the problem is below:
{noformat}
private String addLimit(String query) {
boolean containsLimitOrAggregate = query.contains(" limit")
query.contains(" LIMIT") query.contains("count(*)");
if (!containsLimitOrAggregate){
String limitQuery = query + " limit " + getFetchSize();
return limitQuery;
} else {
return query;
}
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)