Skip to content

Commit db0081d

Browse files
fix: use Function and SelectItem
Signed-off-by: Andreas Reichel <[email protected]>
1 parent 372b8ec commit db0081d

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

src/main/java/net/sf/jsqlparser/statement/piped/PivotPipeOperator.java

+13-9
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,21 @@
22

33
import net.sf.jsqlparser.expression.Alias;
44
import net.sf.jsqlparser.expression.Expression;
5-
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
5+
import net.sf.jsqlparser.expression.Function;
66
import net.sf.jsqlparser.schema.Column;
7+
import net.sf.jsqlparser.statement.select.Select;
8+
import net.sf.jsqlparser.statement.select.SelectItem;
9+
10+
import java.util.List;
711

812
public class PivotPipeOperator extends PipeOperator {
9-
private Expression aggregateExpression;
13+
private Function aggregateExpression;
1014
private Column inputColumn;
11-
private ExpressionList<Column> pivotColumns;
15+
private List<SelectItem<?>> pivotColumns;
1216
private Alias alias = null;
1317

14-
public PivotPipeOperator(Expression aggregateExpression, Column inputColumn,
15-
ExpressionList<Column> pivotColumns, Alias alias) {
18+
public PivotPipeOperator(Function aggregateExpression, Column inputColumn,
19+
List<SelectItem<?>> pivotColumns, Alias alias) {
1620
this.aggregateExpression = aggregateExpression;
1721
this.inputColumn = inputColumn;
1822
this.pivotColumns = pivotColumns;
@@ -23,7 +27,7 @@ public Expression getAggregateExpression() {
2327
return aggregateExpression;
2428
}
2529

26-
public PivotPipeOperator setAggregateExpression(Expression aggregateExpression) {
30+
public PivotPipeOperator setAggregateExpression(Function aggregateExpression) {
2731
this.aggregateExpression = aggregateExpression;
2832
return this;
2933
}
@@ -37,11 +41,11 @@ public PivotPipeOperator setInputColumn(Column inputColumn) {
3741
return this;
3842
}
3943

40-
public ExpressionList<Column> getPivotColumns() {
44+
public List<SelectItem<?>> getPivotColumns() {
4145
return pivotColumns;
4246
}
4347

44-
public PivotPipeOperator setPivotColumns(ExpressionList<Column> pivotColumns) {
48+
public PivotPipeOperator setPivotColumns(List<SelectItem<?>> pivotColumns) {
4549
this.pivotColumns = pivotColumns;
4650
return this;
4751
}
@@ -64,7 +68,7 @@ public StringBuilder appendTo(StringBuilder builder) {
6468
.append(" FOR ")
6569
.append(inputColumn)
6670
.append(" IN (")
67-
.append(pivotColumns)
71+
.append(Select.getStringList(pivotColumns))
6872
.append("))");
6973
if (alias != null) {
7074
builder.append(" ").append(alias);

src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import net.sf.jsqlparser.statement.select.PivotVisitor;
5656
import net.sf.jsqlparser.statement.select.PivotXml;
5757
import net.sf.jsqlparser.statement.select.PlainSelect;
58+
import net.sf.jsqlparser.statement.select.Select;
5859
import net.sf.jsqlparser.statement.select.SelectItem;
5960
import net.sf.jsqlparser.statement.select.SelectItemVisitor;
6061
import net.sf.jsqlparser.statement.select.SelectVisitor;
@@ -943,7 +944,6 @@ public StringBuilder visit(OrderByPipeOperator orderBy, Void context) {
943944
return builder;
944945
}
945946

946-
947947
@Override
948948
public StringBuilder visit(PivotPipeOperator pivot, Void context) {
949949
builder
@@ -953,7 +953,7 @@ public StringBuilder visit(PivotPipeOperator pivot, Void context) {
953953
.append(" FOR ")
954954
.append(pivot.getInputColumn())
955955
.append(" IN (")
956-
.append(pivot.getPivotColumns())
956+
.append(Select.getStringList(pivot.getPivotColumns()))
957957
.append("))");
958958
if (pivot.getAlias() != null) {
959959
builder.append(" ").append(pivot.getAlias());

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

+4-4
Original file line numberDiff line numberDiff line change
@@ -2612,15 +2612,15 @@ TableSamplePipeOperator TableSamplePipeOperator():
26122612

26132613
PivotPipeOperator PivotPipeOperator():
26142614
{
2615-
Expression aggregateExpression;
2615+
Function aggregateExpression;
26162616
Column inputColumn;
2617-
ExpressionList<Column> pivotColumns;
2617+
List<SelectItem<?>> pivotColumns;
26182618
Alias alias = null;
26192619
}
26202620
{
2621-
<K_PIVOT> "(" aggregateExpression=Expression()
2621+
<K_PIVOT> "(" aggregateExpression=Function()
26222622
<K_FOR> inputColumn=Column()
2623-
<K_IN> "(" pivotColumns = ColumnList() ")"
2623+
<K_IN> "(" pivotColumns = SelectItemsList() ")"
26242624
")"
26252625
[ LOOKAHEAD(2) alias = Alias() ]
26262626
{

0 commit comments

Comments
 (0)