Skip to content

Commit bcc2718

Browse files
BlenderRender3Dwumpz
authored andcommitted
Added support for Oracle UNPIVOT keyword. (#882)
* Added support for Oracle UNPIVOT keyword. * Back to original version number. * Updated imports. * Added missing import.
1 parent c2836f6 commit bcc2718

File tree

15 files changed

+223
-4
lines changed

15 files changed

+223
-4
lines changed

src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import net.sf.jsqlparser.statement.select.SelectItemVisitor;
2727
import net.sf.jsqlparser.statement.select.SelectVisitor;
2828
import net.sf.jsqlparser.statement.select.SubSelect;
29+
import net.sf.jsqlparser.statement.select.UnPivot;
2930
import net.sf.jsqlparser.statement.select.WithItem;
3031

3132
public class ExpressionVisitorAdapter implements ExpressionVisitor, ItemsListVisitor, PivotVisitor, SelectItemVisitor {
@@ -469,6 +470,11 @@ public void visit(PivotXml pivot) {
469470
}
470471
}
471472

473+
@Override
474+
public void visit(UnPivot unpivot) {
475+
unpivot.accept(this);
476+
}
477+
472478
@Override
473479
public void visit(AllColumns allColumns) {
474480

src/main/java/net/sf/jsqlparser/schema/Table.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class Table extends ASTNodeAccessImpl implements FromItem, MultiPartName
3333

3434
private Alias alias;
3535
private Pivot pivot;
36+
private UnPivot unpivot;
3637
private MySQLIndexHint hint;
3738

3839
public Table() {
@@ -148,6 +149,16 @@ public void setPivot(Pivot pivot) {
148149
this.pivot = pivot;
149150
}
150151

152+
@Override
153+
public UnPivot getUnPivot() {
154+
return this.unpivot;
155+
}
156+
157+
@Override
158+
public void setUnPivot(UnPivot unpivot) {
159+
this.unpivot = unpivot;
160+
}
161+
151162
public MySQLIndexHint getIndexHint() {
152163
return hint;
153164
}
@@ -161,6 +172,7 @@ public String toString() {
161172
return getFullyQualifiedName()
162173
+ ((alias != null) ? alias.toString() : "")
163174
+ ((pivot != null) ? " " + pivot : "")
175+
+ ((unpivot != null) ? " " + unpivot : "")
164176
+ ((hint != null) ? hint.toString() : "");
165177
}
166178
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ public interface FromItem {
2323

2424
void setPivot(Pivot pivot);
2525

26+
UnPivot getUnPivot();
27+
28+
void setUnPivot(UnPivot unpivot);
29+
2630
}

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class LateralSubSelect implements FromItem {
1616
private SubSelect subSelect;
1717
private Alias alias;
1818
private Pivot pivot;
19+
private UnPivot unpivot;
1920

2021
public void setSubSelect(SubSelect subSelect) {
2122
this.subSelect = subSelect;
@@ -50,10 +51,21 @@ public void setPivot(Pivot pivot) {
5051
this.pivot = pivot;
5152
}
5253

54+
@Override
55+
public UnPivot getUnPivot() {
56+
return this.unpivot;
57+
}
58+
59+
@Override
60+
public void setUnPivot(UnPivot unpivot) {
61+
this.unpivot = unpivot;
62+
}
63+
5364
@Override
5465
public String toString() {
5566
return "LATERAL" + subSelect.toString()
5667
+ ((alias != null) ? alias.toString() : "")
57-
+ ((pivot != null) ? " " + pivot : "");
68+
+ ((pivot != null) ? " " + pivot : "")
69+
+ ((unpivot != null) ? " " + unpivot : "");
5870
}
5971
}

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,21 @@ public void setAlias(Alias alias) {
5454

5555
@Override
5656
public Pivot getPivot() {
57-
throw new UnsupportedOperationException("Not supported yet.");
57+
throw new UnsupportedOperationException("Not supported yet.");
5858
}
5959

6060
@Override
6161
public void setPivot(Pivot pivot) {
62-
throw new UnsupportedOperationException("Not supported yet.");
62+
throw new UnsupportedOperationException("Not supported yet.");
63+
}
64+
65+
@Override
66+
public UnPivot getUnPivot() {
67+
throw new UnsupportedOperationException("Not supported yet.");
68+
}
69+
70+
@Override
71+
public void setUnPivot(UnPivot unpivot) {
72+
throw new UnsupportedOperationException("Not supported yet.");
6373
}
6474
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ public interface PivotVisitor {
1515

1616
void visit(PivotXml pivot);
1717

18+
void visit(UnPivot unpivot);
19+
1820
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,9 @@ public void visit(Pivot pivot) {
2020
public void visit(PivotXml pivot) {
2121

2222
}
23+
24+
@Override
25+
public void visit(UnPivot unpivot) {
26+
27+
}
2328
}

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class SubJoin implements FromItem {
1717
private FromItem left;
1818
private Alias alias;
1919
private Pivot pivot;
20+
private UnPivot unpivot;
2021
private List<Join> joinList;
2122

2223
@Override
@@ -50,6 +51,16 @@ public void setPivot(Pivot pivot) {
5051
this.pivot = pivot;
5152
}
5253

54+
@Override
55+
public UnPivot getUnPivot() {
56+
return this.unpivot;
57+
}
58+
59+
@Override
60+
public void setUnPivot(UnPivot unpivot) {
61+
this.unpivot = unpivot;
62+
}
63+
5364
@Override
5465
public Alias getAlias() {
5566
return alias;
@@ -72,7 +83,8 @@ public String toString() {
7283
}
7384
}
7485

75-
sb.append(")").append((alias != null) ? (" " + alias.toString()) : "").append((pivot != null) ? " " + pivot : "");
86+
sb.append(")").append((alias != null) ? (" " + alias.toString()) : "").append((pivot != null) ? " " + pivot : "")
87+
.append((unpivot != null) ? " " + unpivot : "");
7688
return sb.toString();
7789
}
7890
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class SubSelect extends ASTNodeAccessImpl implements FromItem, Expression
2626
private List<WithItem> withItemsList;
2727

2828
private Pivot pivot;
29+
private UnPivot unpivot;
2930

3031
@Override
3132
public void accept(FromItemVisitor fromItemVisitor) {
@@ -65,6 +66,16 @@ public void setPivot(Pivot pivot) {
6566
this.pivot = pivot;
6667
}
6768

69+
@Override
70+
public UnPivot getUnPivot() {
71+
return this.unpivot;
72+
}
73+
74+
@Override
75+
public void setUnPivot(UnPivot unpivot) {
76+
this.unpivot = unpivot;
77+
}
78+
6879
public boolean isUseBrackets() {
6980
return useBrackets;
7081
}
@@ -114,6 +125,9 @@ public String toString() {
114125
if (pivot != null) {
115126
retval.append(" ").append(pivot);
116127
}
128+
if (unpivot != null) {
129+
retval.append(" ").append(unpivot);
130+
}
117131

118132
return retval.toString();
119133
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,13 @@ public Pivot getPivot() {
2424
@Override
2525
public void setPivot(Pivot pivot) {
2626
}
27+
28+
@Override
29+
public UnPivot getUnPivot() {
30+
return null;
31+
}
32+
33+
@Override
34+
public void setUnPivot(UnPivot unpivot) {
35+
}
2736
}

0 commit comments

Comments
 (0)