mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-29 18:53:12 +08:00
feat(chat2db-oracle): exclude PUINDEX
This commit is contained in:
@ -44,10 +44,16 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
|||||||
FROM ALL_OBJECTS
|
FROM ALL_OBJECTS
|
||||||
WHERE OBJECT_TYPE IN ('PROCEDURE')
|
WHERE OBJECT_TYPE IN ('PROCEDURE')
|
||||||
AND OWNER = '%s'""";
|
AND OWNER = '%s'""";
|
||||||
public static final String TABLE_INDEX_DDL_SQL = """
|
private static final String TABLE_INDEX_DDL_SQL = """
|
||||||
SELECT DBMS_METADATA.GET_DDL('INDEX', index_name, table_owner) AS ddl
|
SELECT DBMS_METADATA.GET_DDL('INDEX', index_name, table_owner) AS ddl,
|
||||||
FROM all_indexes
|
index_name AS INDEX_NAME
|
||||||
WHERE table_owner = '%s' AND table_name = '%s'""";
|
FROM all_indexes
|
||||||
|
WHERE table_owner = '%s' AND table_name = '%s'""";
|
||||||
|
private static final String PU_INDEX_NAME_SQL = """
|
||||||
|
SELECT DISTINCT AC.INDEX_NAME
|
||||||
|
FROM ALL_CONSTRAINTS AC
|
||||||
|
WHERE AC.OWNER = '%s' AND AC.TABLE_NAME = '%s'
|
||||||
|
AND AC.CONSTRAINT_TYPE IN ('P', 'U')""";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Procedure> procedures(Connection connection, String databaseName, String schemaName) {
|
public List<Procedure> procedures(Connection connection, String databaseName, String schemaName) {
|
||||||
@ -76,6 +82,7 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
|||||||
String tableCommentSql = String.format(TABLE_COMMENT_SQL, schemaName, tableName);
|
String tableCommentSql = String.format(TABLE_COMMENT_SQL, schemaName, tableName);
|
||||||
String tableColumnCommentSql = String.format(TABLE_COLUMN_COMMENT_SQL, schemaName, tableName);
|
String tableColumnCommentSql = String.format(TABLE_COLUMN_COMMENT_SQL, schemaName, tableName);
|
||||||
String tableIndexSql = String.format(TABLE_INDEX_DDL_SQL, schemaName, tableName);
|
String tableIndexSql = String.format(TABLE_INDEX_DDL_SQL, schemaName, tableName);
|
||||||
|
String PUIndexSql = String.format(PU_INDEX_NAME_SQL, schemaName, tableName);
|
||||||
StringBuilder ddlBuilder = new StringBuilder();
|
StringBuilder ddlBuilder = new StringBuilder();
|
||||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||||
try {
|
try {
|
||||||
@ -107,9 +114,22 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
List<String> indexNames = SQLExecutor.getInstance().execute(connection, PUIndexSql, resultSet -> {
|
||||||
|
List<String> PUIndexNames = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
String indexName = resultSet.getString("index_name");
|
||||||
|
if (StringUtils.isNotBlank(indexName)) {
|
||||||
|
PUIndexNames.add(indexName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return PUIndexNames;
|
||||||
|
});
|
||||||
SQLExecutor.getInstance().execute(connection, tableIndexSql, resultSet -> {
|
SQLExecutor.getInstance().execute(connection, tableIndexSql, resultSet -> {
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
|
String indexName = resultSet.getString("INDEX_NAME");
|
||||||
|
if (CollectionUtils.isNotEmpty(indexNames) && indexNames.contains(indexName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
String ddl = resultSet.getString("ddl");
|
String ddl = resultSet.getString("ddl");
|
||||||
if (StringUtils.isNotBlank(ddl)) {
|
if (StringUtils.isNotBlank(ddl)) {
|
||||||
ddlBuilder.append("\n").append(ddl).append(";");
|
ddlBuilder.append("\n").append(ddl).append(";");
|
||||||
|
Reference in New Issue
Block a user