From fb04c5a295d691763ead5516f7fa555dcfc1e7d5 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 9 Mar 2026 16:54:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E3=80=90=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E3=80=91oracle=E6=95=B0=E6=8D=AE=E6=BA=90=E4=BC=9A=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=9B=9E=E6=94=B6=E7=AB=99=E4=B8=AD=E5=85=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE,=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/server/DatasourceServer.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index edde0d2570..e2b7332444 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -65,6 +65,7 @@ import java.io.*; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; +import java.util.regex.Pattern; import java.util.stream.Collectors; import static io.dataease.datasource.server.DatasourceTaskServer.ScheduleType.MANUAL; @@ -74,6 +75,8 @@ import static io.dataease.datasource.server.DatasourceTaskServer.ScheduleType.RI @RestController @RequestMapping("/datasource") public class DatasourceServer implements DatasourceApi { + private static final Pattern ORACLE_RECYCLE_BIN_TABLE_PATTERN = Pattern.compile("^BIN\\$.*\\$[0-9]+$", Pattern.CASE_INSENSITIVE); + @Resource private CoreDatasourceMapper datasourceMapper; @Resource @@ -757,7 +760,26 @@ public class DatasourceServer implements DatasourceApi { return ExcelUtils.getTables(datasourceRequest); } Provider provider = ProviderFactory.getProvider(datasourceDTO.getType()); - return provider.getTables(datasourceRequest); + List tables = provider.getTables(datasourceRequest); + if (StringUtils.equalsIgnoreCase(coreDatasource.getType(), DatasourceConfiguration.DatasourceType.oracle.name())) { + return tables.stream().filter(table -> !isOracleRecycleBinTable(table)).collect(Collectors.toList()); + } + return tables; + } + + private boolean isOracleRecycleBinTable(DatasetTableDTO table) { + if (table == null) { + return false; + } + return isOracleRecycleBinName(table.getTableName()) || isOracleRecycleBinName(table.getName()); + } + + private boolean isOracleRecycleBinName(String tableName) { + if (StringUtils.isBlank(tableName)) { + return false; + } + String normalized = StringUtils.removeEnd(StringUtils.removeStart(tableName.trim(), "\""), "\""); + return ORACLE_RECYCLE_BIN_TABLE_PATTERN.matcher(normalized).matches(); } @Override