Kasper Sørensen created METAMODEL-76:
----------------------------------------
Summary: Query parser doesn't properly process WHERE items without
spaces around '=' char
Key: METAMODEL-76
URL: https://issues.apache.org/jira/browse/METAMODEL-76
Project: Metamodel
Issue Type: Bug
Affects Versions: 4.2.0-incubating
Reporter: Kasper Sørensen
Fix For: 4.2.1-incubating
Discovered by Alberto Rodriguez and reported on the mailing list. Thread name
"Problem executing string-format queries".
The issue is that the query parser seems to not properly process a token like
"id='1'" where there are no spaces around the equals sign (=).
The result is that the where item is turned into an "expression based" filter
item, which only a few DataContext implementations actually support execution
of.
Can be reproduced with following unittest:
{code}
public void testQueryWithDotInTableName() throws Exception {
MockDataContext dc = new MockDataContext("folder", "file.csv", "foo");
Table table = dc.getDefaultSchema().getTableByName("file.csv");
assertNotNull(table);
Query q = dc.parseQuery("SELECT foo FROM file.csv WHERE \r\nfoo='bar'");
assertNotNull(q);
FilterItem item = q.getWhereClause().getItem(0);
assertNull(item.getExpression());
}
{code}
To fix, look into Query.where(String) and track the code down to
QueryPartCollectionProcessor... I think we simply need to add '=' as a delim or
something like that.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)