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);

Reply via email to