|
51 | 51 | import net.sf.jsqlparser.statement.select.First; |
52 | 52 | import net.sf.jsqlparser.statement.select.FromItem; |
53 | 53 | import net.sf.jsqlparser.statement.select.FromItemVisitor; |
| 54 | +import net.sf.jsqlparser.statement.select.InterpolateElement; |
54 | 55 | import net.sf.jsqlparser.statement.select.Join; |
55 | 56 | import net.sf.jsqlparser.statement.select.LateralSubSelect; |
56 | 57 | import net.sf.jsqlparser.statement.select.LateralView; |
@@ -136,6 +137,7 @@ public <S> StringBuilder visit(ParenthesedSelect select, S context) { |
136 | 137 | if (select.getOrderByElements() != null) { |
137 | 138 | new OrderByDeParser(expressionVisitor, builder).deParse(select.isOracleSiblings(), |
138 | 139 | select.getOrderByElements()); |
| 140 | + deParseInterpolate(select.getInterpolate()); |
139 | 141 | } |
140 | 142 |
|
141 | 143 | Alias alias = select.getAlias(); |
@@ -471,9 +473,33 @@ protected void deparseOrderByElementsClause(PlainSelect plainSelect, |
471 | 473 | if (orderByElements != null) { |
472 | 474 | new OrderByDeParser(expressionVisitor, builder).deParse(plainSelect.isOracleSiblings(), |
473 | 475 | orderByElements); |
| 476 | + deParseInterpolate(plainSelect.getInterpolate()); |
474 | 477 | } |
475 | 478 | } |
476 | 479 |
|
| 480 | + private void deParseInterpolate(List<InterpolateElement> interpolate) { |
| 481 | + if (interpolate == null) { |
| 482 | + return; |
| 483 | + } |
| 484 | + if (interpolate.isEmpty()) { |
| 485 | + builder.append(" INTERPOLATE"); |
| 486 | + return; |
| 487 | + } |
| 488 | + builder.append(" INTERPOLATE ("); |
| 489 | + for (Iterator<InterpolateElement> iter = interpolate.iterator(); iter.hasNext();) { |
| 490 | + InterpolateElement element = iter.next(); |
| 491 | + element.getColumn().accept(expressionVisitor, null); |
| 492 | + if (element.getExpression() != null) { |
| 493 | + builder.append(" AS "); |
| 494 | + element.getExpression().accept(expressionVisitor, null); |
| 495 | + } |
| 496 | + if (iter.hasNext()) { |
| 497 | + builder.append(", "); |
| 498 | + } |
| 499 | + } |
| 500 | + builder.append(")"); |
| 501 | + } |
| 502 | + |
477 | 503 | @Override |
478 | 504 | public <S> StringBuilder visit(SelectItem<?> selectItem, S context) { |
479 | 505 | selectItem.getExpression().accept(expressionVisitor, context); |
@@ -729,6 +755,7 @@ public <S> StringBuilder visit(SetOperationList list, S context) { |
729 | 755 | } |
730 | 756 | if (list.getOrderByElements() != null) { |
731 | 757 | new OrderByDeParser(expressionVisitor, builder).deParse(list.getOrderByElements()); |
| 758 | + deParseInterpolate(list.getInterpolate()); |
732 | 759 | } |
733 | 760 |
|
734 | 761 | if (list.getLimit() != null) { |
|
0 commit comments