public List getTables()

in seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java [59:134]


    public List<String> getTables(
            @NonNull String pluginName,
            Map<String, String> requestParams,
            String database,
            Map<String, String> options) {
        StringBuilder sqlWhere = new StringBuilder();
        final String sql =
                "SELECT * FROM ( SELECT OWNER, TABLE_NAME FROM ALL_TABLES\n"
                        + "WHERE TABLE_NAME NOT LIKE 'MDRT_%'\n"
                        + "  AND TABLE_NAME NOT LIKE 'MDRS_%'\n"
                        + "  AND TABLE_NAME NOT LIKE 'MDXT_%'\n"
                        + "  AND (TABLE_NAME NOT LIKE 'SYS_IOT_OVER_%' AND IOT_NAME IS NULL)"
                        + "AND OWNER NOT IN ('APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DVSYS', 'DBSFWUSER', 'DBSNMP',\n"
                        + "                    'GSMADMIN_INTERNAL', 'LBACSYS', 'MDSYS', 'OJVMSYS', 'OLAPSYS',\n"
                        + "                    'ORDDATA', 'ORDSYS', 'OUTLN', 'SYS', 'SYSTEM', 'WMSYS',\n"
                        + "                    'XDB', 'EXFSYS', 'SYSMAN')";
        sqlWhere.append(sql);
        String filterName = options.get("filterName");
        if (StringUtils.isNotEmpty(filterName)) {
            String[] split = filterName.split("\\.");
            if (split.length == 2) {
                sqlWhere.append(" AND (TABLE_NAME LIKE '")
                        .append(
                                split[1].contains("%")
                                        ? split[1].toUpperCase(Locale.ROOT)
                                        : "%" + split[1].toUpperCase(Locale.ROOT) + "%")
                        .append("'")
                        .append(" AND OWNER LIKE '")
                        .append(
                                split[0].contains("%")
                                        ? split[0].toUpperCase(Locale.ROOT)
                                        : "%" + split[0].toUpperCase(Locale.ROOT) + "%")
                        .append("')");
            } else {
                String filterNameRep =
                        filterName.contains("%")
                                ? filterName.toUpperCase(Locale.ROOT)
                                : "%" + filterName.toUpperCase(Locale.ROOT) + "%";
                sqlWhere.append(" AND (TABLE_NAME LIKE '%")
                        .append(filterNameRep)
                        .append("%'")
                        .append(" OR OWNER LIKE '%")
                        .append(filterNameRep)
                        .append("%')");
            }
        }
        sqlWhere.append(" ORDER BY OWNER, TABLE_NAME ) ");
        String size = options.get("size");
        if (StringUtils.isNotEmpty(size)) {
            sqlWhere.append("WHERE ROWNUM <= ").append(size);
        }
        log.info("execute sql :{}", sqlWhere.toString());
        List<String> tableNames = new ArrayList<>();
        long start = System.currentTimeMillis();
        try (Connection connection = getConnection(requestParams); ) {
            long end = System.currentTimeMillis();
            log.info("connection, cost {}ms for oracle", end - start);
            start = System.currentTimeMillis();
            try (Statement statement = connection.createStatement();
                    ResultSet resultSet = statement.executeQuery(sqlWhere.toString())) {
                end = System.currentTimeMillis();
                log.info("statement execute sql, cost {}ms for oracle", end - start);
                start = System.currentTimeMillis();
                while (resultSet.next()) {
                    String schemaName = resultSet.getString("OWNER");
                    String tableName = resultSet.getString("TABLE_NAME");
                    tableNames.add(schemaName + "." + tableName);
                }
                end = System.currentTimeMillis();
                log.info("while result set, cost {}ms for oracle", end - start);
            }
            return tableNames;
        } catch (ClassNotFoundException | SQLException e) {
            throw new DataSourcePluginException("get table names failed", e);
        }
    }