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