METAMODEL-239: Fixed Fixes #90
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/8ea5ef52 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/8ea5ef52 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/8ea5ef52 Branch: refs/heads/5.x Commit: 8ea5ef52659abee313957fa7164c1b3f55a31674 Parents: 496a839 Author: Ankit Kumar <[email protected]> Authored: Wed Mar 9 18:55:06 2016 +0100 Committer: Kasper Sørensen <[email protected]> Committed: Wed Mar 9 18:55:06 2016 +0100 ---------------------------------------------------------------------- .../org/apache/metamodel/query/parser/QueryParserTest.java | 7 +++++++ .../org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java | 4 ++-- .../org/apache/metamodel/dialects/DB2QueryRewriterTest.java | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/8ea5ef52/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 d081c39..fa9b66d 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 @@ -50,6 +50,13 @@ public class QueryParserTest extends TestCase { MutableColumn col = (MutableColumn) dc.getColumnByQualifiedLabel("tbl.baz"); col.setType(ColumnType.INTEGER); }; + + public void testQueryWithParenthesis() throws Exception { + Query q = MetaModelHelper.parseQuery(dc, + "select foo from sch.tbl where (foo= 1) and (foo=2)"); + assertEquals("SELECT tbl.foo FROM sch.tbl WHERE tbl.foo = '1' AND tbl.foo = '2'", + q.toSql()); + } public void testQueryWithParenthesisAnd() throws Exception { Query q = MetaModelHelper.parseQuery(dc, "select foo from sch.tbl where (foo= 1) and (foo=2)"); http://git-wip-us.apache.org/repos/asf/metamodel/blob/8ea5ef52/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java ---------------------------------------------------------------------- diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java index fa8ebe0..d75bf54 100644 --- a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java +++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DB2QueryRewriter.java @@ -69,11 +69,11 @@ public class DB2QueryRewriter extends DefaultQueryRewriter implements IQueryRewr final Integer firstRow = query.getFirstRow(); final Integer maxRows = query.getMaxRows(); - if (maxRows == null && firstRow == null) { + if (maxRows == null && (firstRow == null || firstRow.intValue() == 1)) { return super.rewriteQuery(query); } - if (firstRow == null || firstRow.intValue() == 1) { + if ((firstRow == null || firstRow.intValue() == 1) && maxRows != null && maxRows > 0) { // We prefer to use the "FETCH FIRST [n] ROWS ONLY" approach, if // firstRow is not specified. return super.rewriteQuery(query) + " FETCH FIRST " + maxRows + " ROWS ONLY"; http://git-wip-us.apache.org/repos/asf/metamodel/blob/8ea5ef52/jdbc/src/test/java/org/apache/metamodel/dialects/DB2QueryRewriterTest.java ---------------------------------------------------------------------- diff --git a/jdbc/src/test/java/org/apache/metamodel/dialects/DB2QueryRewriterTest.java b/jdbc/src/test/java/org/apache/metamodel/dialects/DB2QueryRewriterTest.java index 06c667e..6d213d5 100644 --- a/jdbc/src/test/java/org/apache/metamodel/dialects/DB2QueryRewriterTest.java +++ b/jdbc/src/test/java/org/apache/metamodel/dialects/DB2QueryRewriterTest.java @@ -60,6 +60,12 @@ public class DB2QueryRewriterTest extends TestCase { assertEquals("SELECT sch.foo.bar FROM sch.foo FETCH FIRST 200 ROWS ONLY", str); } + public void testRewriteFirstRowIsOneAndMaxRowsIsNull() throws Exception { + Query q = new Query().from(table).select(col).setFirstRow(1); + String str = new DB2QueryRewriter(null).rewriteQuery(q); + assertEquals("SELECT sch.foo.bar FROM sch.foo", str); + } + public void testRewriteFirstRow() throws Exception { Query q = new Query().from(table).select(col).setFirstRow(401); String str = new DB2QueryRewriter(null).rewriteQuery(q);
