From a90c2e65b99395cfbb3e1d6df928ca5dff5d720c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 12 Jan 2024 16:24:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E6=9E=90sql=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/utils/SqlparserUtils.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java index eacb52d182..4b6ffc6c28 100644 --- a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java +++ b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java @@ -60,12 +60,13 @@ public class SqlparserUtils { } private static void getDependencies(SqlNode sqlNode, Boolean fromOrJoin) { - + if (sqlNode == null) { + return; + } if (sqlNode.getKind() == JOIN) { SqlJoin sqlKind = (SqlJoin) sqlNode; } else if (sqlNode.getKind() == IDENTIFIER) { - } else if (sqlNode.getKind() == AS) { SqlBasicCall sqlKind = (SqlBasicCall) sqlNode; } else if (sqlNode.getKind() == SELECT) { @@ -80,9 +81,19 @@ public class SqlparserUtils { SqlNode newWhere = sqlKind.getWhere().accept(getSqlShuttle()); sqlKind.setWhere(newWhere); } - - } else { - // TODO 这里可根据需求拓展处理其他类型的 sqlNode + } else if (sqlNode.getKind() == ORDER_BY) { + SqlOrderBy sqlKind = (SqlOrderBy) sqlNode; + List operandList = sqlKind.getOperandList(); + for (int i = 0; i < operandList.size(); i++) { + getDependencies(operandList.get(i), false); + } + } else if (sqlNode.getKind() == UNION) { + SqlBasicCall sqlKind = (SqlBasicCall) sqlNode; + if (sqlKind.getOperandList().size() >= 2) { + for (int i = 0; i < sqlKind.getOperandList().size(); i++) { + getDependencies(sqlKind.getOperandList().get(i), false); + } + } } }