Author: doogie
Date: Sun May 30 22:06:17 2010 New Revision: 949600 URL: http://svn.apache.org/viewvc?rev=949600&view=rev Log: Start adding DISTINCT support to SELECT. Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj ofbiz/trunk/framework/sql/src/org/ofbiz/sql/SQLSelect.java Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj?rev=949600&r1=949599&r2=949600&view=diff ============================================================================== --- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj (original) +++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Sun May 30 22:06:17 2010 @@ -278,6 +278,7 @@ private SQLView View(): private SQLSelect Select(): { Integer i; + boolean isDistinct = false; List<OrderByItem> orderBy = null; List<String> groupBy = null; Map<String, FieldDef> fieldDefs = FastMap.newInstance(); @@ -289,7 +290,7 @@ private SQLSelect Select(): int offset = -1, limit = -1; } { - <SELECT> ( + <SELECT> (<DISTINCT> { isDistinct = true; })? ( FieldDef(fieldDefs, fieldAlls, fieldAllAliases) ( <COMMA> FieldDef(fieldDefs, fieldAlls, fieldAllAliases) )* ) @@ -301,7 +302,7 @@ private SQLSelect Select(): ( <ORDER> <BY> orderBy=OrderByList() )? ( <OFFSET> offset=Integer() )? ( <LIMIT> limit=Integer() )? - { return new SQLSelect(fieldAlls, fieldDefs, table, relations, whereCondition, havingCondition, groupBy, orderBy, offset, limit); } + { return new SQLSelect(isDistinct, fieldAlls, fieldDefs, table, relations, whereCondition, havingCondition, groupBy, orderBy, offset, limit); } } private void Relation(Map<String, Relation> relations): Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/SQLSelect.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/SQLSelect.java?rev=949600&r1=949599&r2=949600&view=diff ============================================================================== --- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/SQLSelect.java (original) +++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/SQLSelect.java Sun May 30 22:06:17 2010 @@ -27,6 +27,7 @@ import java.util.Map; import org.ofbiz.base.util.StringUtil; public final class SQLSelect extends SQLStatement<SQLSelect> implements InsertSource { + private final boolean isDistinct; private final List<FieldAll> fieldAlls; private final Map<String, FieldDef> fieldDefs; private final Table table; @@ -38,7 +39,8 @@ public final class SQLSelect extends SQL private final List<OrderByItem> orderBy; private final List<String> groupBy; - public SQLSelect(List<FieldAll> fieldAlls, Map<String, FieldDef> fieldDefs, Table table, Map<String, Relation> relations, Condition whereCondition, Condition havingCondition, List<String> groupBy, List<OrderByItem> orderBy, int offset, int limit) { + public SQLSelect(boolean isDistinct, List<FieldAll> fieldAlls, Map<String, FieldDef> fieldDefs, Table table, Map<String, Relation> relations, Condition whereCondition, Condition havingCondition, List<String> groupBy, List<OrderByItem> orderBy, int offset, int limit) { + this.isDistinct = isDistinct; this.fieldAlls = fieldAlls; this.fieldDefs = fieldDefs; this.table = table; @@ -55,6 +57,10 @@ public final class SQLSelect extends SQL visitor.visit(this); } + public boolean getIsDistinct() { + return isDistinct; + } + public Collection<FieldAll> getFieldAlls() { return fieldAlls; } @@ -97,6 +103,9 @@ public final class SQLSelect extends SQL public StringBuilder appendTo(StringBuilder sb) { sb.append("SELECT"); + if (isDistinct) { + sb.append(" DISTINCT"); + } StringUtil.appendTo(sb, fieldAlls, " ", null, ","); if (!fieldAlls.isEmpty() && !fieldDefs.isEmpty()) { sb.append(','); |
Free forum by Nabble | Edit this page |