Repository: metamodel Updated Branches: refs/heads/master 53ab860e0 -> a0786cf21
Improved query parser's tolerance for lowercase WHERE clause delims. Fixes #10 Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/a0786cf2 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/a0786cf2 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/a0786cf2 Branch: refs/heads/master Commit: a0786cf214ee63820cb594f7c5267ed8e29b25c4 Parents: 53ab860 Author: Kasper Sørensen <[email protected]> Authored: Sat Mar 21 16:32:29 2015 +0100 Committer: Kasper Sørensen <[email protected]> Committed: Sat Mar 21 16:32:29 2015 +0100 ---------------------------------------------------------------------- .../metamodel/query/parser/QueryPartParser.java | 2 +- .../metamodel/query/parser/QueryParserTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/a0786cf2/core/src/main/java/org/apache/metamodel/query/parser/QueryPartParser.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/query/parser/QueryPartParser.java b/core/src/main/java/org/apache/metamodel/query/parser/QueryPartParser.java index 1751bbf..c65db94 100644 --- a/core/src/main/java/org/apache/metamodel/query/parser/QueryPartParser.java +++ b/core/src/main/java/org/apache/metamodel/query/parser/QueryPartParser.java @@ -103,7 +103,7 @@ public final class QueryPartParser { DelimOccurrence result = null; for (int i = 0; i < _ItemDelims.length; i++) { String delim = _ItemDelims[i]; - int index = _clause.indexOf(delim, offset); + int index = _clause.toUpperCase().indexOf(delim, offset); if (index != -1) { if (result == null || index == Math.min(result.index, index)) { result = new DelimOccurrence(); http://git-wip-us.apache.org/repos/asf/metamodel/blob/a0786cf2/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java b/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java index db377d6..9edf8a2 100644 --- a/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java +++ b/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java @@ -213,6 +213,23 @@ public class QueryParserTest extends TestCase { assertTrue(bazConditions.isCompoundFilter()); } + public void testCoumpoundWhereClauseDelimInLoweCase() throws Exception { + Query q = MetaModelHelper + .parseQuery(dc, "SELECT foo FROM sch.tbl WHERE (bar = 'baz' OR (baz > 5 and baz < 7))"); + assertEquals("SELECT tbl.foo FROM sch.tbl WHERE (tbl.bar = 'baz' OR (tbl.baz > 5 AND tbl.baz < 7))", q.toSql()); + + FilterClause wc = q.getWhereClause(); + assertEquals(1, wc.getItemCount()); + FilterItem item = wc.getItem(0); + assertTrue(item.isCompoundFilter()); + + FilterItem[] childItems = item.getChildItems(); + assertEquals(2, childItems.length); + + FilterItem bazConditions = childItems[1]; + assertTrue(bazConditions.isCompoundFilter()); + } + public void testWhereSomethingIsNull() throws Exception { Query q = MetaModelHelper.parseQuery(dc, "SELECT foo FROM sch.tbl WHERE bar IS NULL"); assertEquals("SELECT tbl.foo FROM sch.tbl WHERE tbl.bar IS NULL", q.toSql());
