Repository: metamodel
Updated Branches:
  refs/heads/master 984efbcd7 -> c1c2a6ca8


Added support for multiple comma-separated items in Query.select(String)

Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/c1c2a6ca
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/c1c2a6ca
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/c1c2a6ca

Branch: refs/heads/master
Commit: c1c2a6ca8c2f4baed88c2216aad25f67b44b5dd4
Parents: 984efbc
Author: narahari92 <i.am.kasper.soren...@gmail.com>
Authored: Sun Mar 29 13:11:40 2015 +0200
Committer: Kasper Sørensen <i.am.kasper.soren...@gmail.com>
Committed: Sun Mar 29 13:11:40 2015 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/metamodel/query/Query.java   |  9 +++------
 .../metamodel/QueryPostprocessDataContextTest.java    | 14 +++++++++++++-
 2 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1c2a6ca/core/src/main/java/org/apache/metamodel/query/Query.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/Query.java 
b/core/src/main/java/org/apache/metamodel/query/Query.java
index 586d0b5..a1df7ea 100644
--- a/core/src/main/java/org/apache/metamodel/query/Query.java
+++ b/core/src/main/java/org/apache/metamodel/query/Query.java
@@ -122,12 +122,9 @@ public final class Query extends BaseObject implements 
Cloneable, Serializable {
      * @return
      */
     public Query select(String expression) {
-        if ("*".equals(expression)) {
-            return selectAll();
-        }
-
-        SelectItem selectItem = findSelectItem(expression, true);
-        return select(selectItem);
+        QueryPartParser clauseParser = new QueryPartParser(new 
SelectItemParser(this, true), expression, ",");
+        clauseParser.parse();
+        return this;
     }
 
     private SelectItem findSelectItem(String expression, boolean 
allowExpressionBasedSelectItem) {

http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1c2a6ca/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java 
b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
index 58ded26..f32de56 100644
--- 
a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
+++ 
b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
@@ -90,7 +90,7 @@ public class QueryPostprocessDataContextTest extends 
MetaModelTestCase {
                 return schema;
             }
         };
-        
+
         DataSet ds = dc.query().from(table).selectAll().execute();
         assertTrue(ds.next());
         assertEquals("Row[values=[0, 1, 2]]", ds.getRow().toString());
@@ -1022,4 +1022,16 @@ public class QueryPostprocessDataContextTest extends 
MetaModelTestCase {
 
         assertEquals("file.csv.foo = 'bar'", item.toSql());
     }
+
+    public void testQueryWithMultipleColumnsInExpression() {
+        Query query1 = new Query().from(table1).select("contributor_id,name");
+        DataSet set = getDataContext().executeQuery(query1);
+        assertEquals(true, set.next());
+        assertEquals("Row[values=[1, kasper]]", set.getRow().toString());
+        Query query2 = new 
Query().from(table1).select("Greatest(1,2,3),max(contributer_id)");
+        assertEquals("SELECT Greatest(1,2,3), MAX(contributer_id) FROM 
MetaModelSchema.contributor", query2.toString());
+        Query query3 = new Query().from(table1).select("*,count(*)");
+        assertEquals("SELECT contributor.contributor_id, contributor.name, 
contributor.country, COUNT(*)"
+                + " FROM MetaModelSchema.contributor", query3.toString());
+    }
 }
\ No newline at end of file

Reply via email to