sql logging select->insert 구문, order by 배열처럼 보이는 문제 해결

dev
박성영 3 months ago
parent ce7be8764c
commit f4103f33e9

@ -433,6 +433,7 @@ public class DataSourceProxyConfig {
/**
* INSERT AST .
* .
* INSERT ... SELECT .
*/
private String formatInsertStatement(Insert insert) {
StringBuilder sb = new StringBuilder();
@ -453,8 +454,10 @@ public class DataSourceProxyConfig {
// 값 목록 포맷팅
if (insert.getItemsList() != null) {
if (insert.getItemsList() instanceof SubSelect) {
// INSERT ... SELECT 구문인 경우
sb.append("\n");
formatSelectBody(((SubSelect) insert.getItemsList()).getSelectBody(), sb, 0);
SubSelect subSelect = (SubSelect) insert.getItemsList();
formatSelectBody(subSelect.getSelectBody(), sb, 0);
} else {
sb.append("\nVALUES\n(");
if (insert.getItemsList() instanceof ExpressionList) {
@ -540,8 +543,21 @@ public class DataSourceProxyConfig {
}
// ORDER BY 절
if (plainSelect.getOrderByElements() != null) {
sb.append("\n").append(indent).append("ORDER BY ").append(plainSelect.getOrderByElements().toString());
if (plainSelect.getOrderByElements() != null && !plainSelect.getOrderByElements().isEmpty()) {
sb.append("\n").append(indent).append("ORDER BY ");
List<OrderByElement> orderByElements = plainSelect.getOrderByElements();
for (int i = 0; i < orderByElements.size(); i++) {
if (i > 0) {
sb.append(", ");
}
OrderByElement element = orderByElements.get(i);
sb.append(element.getExpression().toString());
if (element.isAsc()) {
sb.append(" ASC");
} else if (!element.isAsc() && element.toString().contains("DESC")) {
sb.append(" DESC");
}
}
}
// LIMIT 절

Loading…
Cancel
Save