Skip to content

Commit dd77b6c

Browse files
committed
add group ba additions to SelectUtils
1 parent adcaf0f commit dd77b6c

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,13 @@ public void setGroupByColumnReferences(List<Expression> list) {
190190
groupByColumnReferences = list;
191191
}
192192

193+
public void addGroupByColumnReference(Expression expr) {
194+
if (groupByColumnReferences == null) {
195+
groupByColumnReferences = new ArrayList<Expression>();
196+
}
197+
groupByColumnReferences.add(expr);
198+
}
199+
193200
public OracleHierarchicalExpression getOracleHierarchical() {
194201
return oracleHierarchical;
195202
}
@@ -264,10 +271,10 @@ public String toString() {
264271
sql.append(limit);
265272
}
266273
if (offset != null) {
267-
sql.append(offset);
274+
sql.append(offset);
268275
}
269276
if (fetch != null) {
270-
sql.append(fetch);
277+
sql.append(fetch);
271278
}
272279
if (isForUpdate()) {
273280
sql.append(" FOR UPDATE");

src/main/java/net/sf/jsqlparser/util/SelectUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,29 @@ public static Join addJoin(Select select, final Table table, final Expression on
147147
}
148148
throw new UnsupportedOperationException("Not supported yet.");
149149
}
150+
151+
/**
152+
* Adds group by to a plain select statement.
153+
* @param select
154+
* @param expr
155+
*/
156+
public static void addGroupBy(Select select, final Expression expr) {
157+
select.getSelectBody().accept(new SelectVisitor() {
158+
159+
@Override
160+
public void visit(PlainSelect plainSelect) {
161+
plainSelect.addGroupByColumnReference(expr);
162+
}
163+
164+
@Override
165+
public void visit(SetOperationList setOpList) {
166+
throw new UnsupportedOperationException("Not supported yet.");
167+
}
168+
169+
@Override
170+
public void visit(WithItem withItem) {
171+
throw new UnsupportedOperationException("Not supported yet.");
172+
}
173+
});
174+
}
150175
}

src/test/java/net/sf/jsqlparser/util/SelectUtilsTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,12 @@ public void testBuildSelectFromTableAndParsedExpression() throws JSQLParserExcep
9191

9292
assertTrue(((SelectExpressionItem)((PlainSelect)select.getSelectBody()).getSelectItems().get(0)).getExpression() instanceof Addition);
9393
}
94+
95+
@Test
96+
public void testBuildSelectFromTableWithGroupBy() {
97+
Select select = SelectUtils.buildSelectFromTable(new Table("mytable"));
98+
SelectUtils.addGroupBy(select, new Column("b"));
99+
assertEquals("SELECT * FROM mytable GROUP BY b", select.toString());
100+
}
94101

95102
}

0 commit comments

Comments
 (0)