|
26 | 26 | import net.sf.jsqlparser.expression.CastExpression; |
27 | 27 | import net.sf.jsqlparser.expression.CollateExpression; |
28 | 28 | import net.sf.jsqlparser.expression.ColumnsExpression; |
| 29 | +import net.sf.jsqlparser.expression.ColumnsTransformer; |
29 | 30 | import net.sf.jsqlparser.expression.ConnectByPriorOperator; |
30 | 31 | import net.sf.jsqlparser.expression.ConnectByRootOperator; |
31 | 32 | import net.sf.jsqlparser.expression.DateTimeLiteralExpression; |
@@ -1929,7 +1930,39 @@ public <S> StringBuilder visit(LambdaExpression lambdaExpression, S context) { |
1929 | 1930 |
|
1930 | 1931 | @Override |
1931 | 1932 | public <S> StringBuilder visit(ColumnsExpression columnsExpression, S context) { |
1932 | | - return columnsExpression.appendTo(builder); |
| 1933 | + columnsExpression.getColumns().accept(this, context); |
| 1934 | + for (ColumnsTransformer transformer : columnsExpression.getTransformers()) { |
| 1935 | + switch (transformer.getType()) { |
| 1936 | + case APPLY: |
| 1937 | + builder.append(" APPLY("); |
| 1938 | + transformer.getApplyExpression().accept(this, context); |
| 1939 | + builder.append(")"); |
| 1940 | + break; |
| 1941 | + case EXCEPT: |
| 1942 | + builder.append(" EXCEPT "); |
| 1943 | + transformer.getExceptColumns().accept(this, context); |
| 1944 | + break; |
| 1945 | + case REPLACE: |
| 1946 | + builder.append(" REPLACE("); |
| 1947 | + boolean first = true; |
| 1948 | + for (SelectItem<?> item : transformer.getReplaceItems()) { |
| 1949 | + if (!first) { |
| 1950 | + builder.append(", "); |
| 1951 | + } |
| 1952 | + first = false; |
| 1953 | + item.getExpression().accept(this, context); |
| 1954 | + if (item.getAlias() != null) { |
| 1955 | + builder.append(item.getAlias()); |
| 1956 | + } |
| 1957 | + } |
| 1958 | + builder.append(")"); |
| 1959 | + break; |
| 1960 | + default: |
| 1961 | + throw new IllegalStateException( |
| 1962 | + "Unhandled ColumnsTransformerType: " + transformer.getType()); |
| 1963 | + } |
| 1964 | + } |
| 1965 | + return builder; |
1933 | 1966 | } |
1934 | 1967 |
|
1935 | 1968 | @Override |
|
0 commit comments