From b015a7f8dced4bb477d699bfe2de384efb02b967 Mon Sep 17 00:00:00 2001 From: wangwei Date: Fri, 25 Oct 2024 16:07:20 +0800 Subject: [Fix][jsqlparse] 修正 SQL 解析处理SelectItem、ParenthesedExpressionList MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/sqlparser/SQLSyntaxParserUtil.java | 24 ++++++---------------- 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/main/java/com/mesalab/common/utils/sqlparser/SQLSyntaxParserUtil.java b/src/main/java/com/mesalab/common/utils/sqlparser/SQLSyntaxParserUtil.java index 50053786..e69d96de 100644 --- a/src/main/java/com/mesalab/common/utils/sqlparser/SQLSyntaxParserUtil.java +++ b/src/main/java/com/mesalab/common/utils/sqlparser/SQLSyntaxParserUtil.java @@ -160,26 +160,14 @@ public class SQLSyntaxParserUtil { private static List> getSelectItems(List> selectItemList) { List> resultItems = Lists.newArrayList(); - for (SelectItem item : selectItemList) { + for (SelectItem item : selectItemList) { Map itemMap = Maps.newHashMap(); Map exp = Maps.newHashMap(); - Expression itemExpr = item.getExpression(); - if (itemExpr instanceof AllTableColumns) { - AllTableColumns allTableColumns = (AllTableColumns) itemExpr; - itemMap.put(ITEM, allTableColumns.toString()); - exp.put(NODE, COLUMN); - exp.put(NAME, allTableColumns.toString()); - itemMap.put(EXPRESSION, exp); - } else if (itemExpr instanceof AllColumns) { - AllColumns allColumns = (AllColumns) itemExpr; - itemMap.put(ITEM, allColumns.toString()); - exp.put(NODE, COLUMN); - exp.put(NAME, allColumns.toString()); - itemMap.put(EXPRESSION, exp); - } else if (itemExpr instanceof SelectItem) { + if (item != null) { + Expression expression = item.getExpression(); itemMap.put(ITEM, item.toString()); - itemMap.put(EXPRESSION, getExpression(itemExpr)); - Optional alias = Optional.ofNullable(item.getAlias()); + itemMap.put(EXPRESSION, getExpression(expression)); + Optional alias = Optional.ofNullable((item).getAlias()); alias.ifPresent(o -> { exp.put(NAME, o.getName()); exp.put(USEAS, o.isUseAs()); @@ -241,7 +229,7 @@ public class SQLSyntaxParserUtil { resultMap.put(RIGHT_EXPRESSION, getExpression(rightExpression)); resultMap.put("operator", stringExpression); } else if (expression instanceof ParenthesedExpressionList) { - return getExpression(expression); + return getExpression(((ParenthesedExpressionList) expression).get(0)); } else if (expression instanceof InExpression) { InExpression inExpression = (InExpression) expression; resultMap.put(NODE, IN_EXPRESSION); -- cgit v1.2.3