[opt](jdbc catalog) filter jdbc datasource internal database (#32294)
This commit is contained in:
@ -26,6 +26,7 @@ import org.apache.doris.common.util.Util;
|
||||
import org.apache.doris.datasource.jdbc.JdbcIdentifierMapping;
|
||||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
@ -44,6 +45,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@Getter
|
||||
@ -400,6 +402,7 @@ public abstract class JdbcClient {
|
||||
}
|
||||
|
||||
protected List<String> filterDatabaseNames(List<String> remoteDbNames) {
|
||||
Set<String> filterInternalDatabases = getFilterInternalDatabases();
|
||||
List<String> filteredDatabaseNames = Lists.newArrayList();
|
||||
for (String databaseName : remoteDbNames) {
|
||||
if (isOnlySpecifiedDatabase) {
|
||||
@ -410,11 +413,20 @@ public abstract class JdbcClient {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (filterInternalDatabases.contains(databaseName.toLowerCase())) {
|
||||
continue;
|
||||
}
|
||||
filteredDatabaseNames.add(databaseName);
|
||||
}
|
||||
return jdbcLowerCaseMetaMatching.setDatabaseNameMapping(filteredDatabaseNames);
|
||||
}
|
||||
|
||||
protected Set<String> getFilterInternalDatabases() {
|
||||
return ImmutableSet.<String>builder()
|
||||
.add("information_schema")
|
||||
.build();
|
||||
}
|
||||
|
||||
protected List<String> filterTableNames(String remoteDbName, List<String> remoteTableNames) {
|
||||
return jdbcLowerCaseMetaMatching.setTableNameMapping(remoteDbName, remoteTableNames);
|
||||
}
|
||||
|
||||
@ -23,6 +23,7 @@ import org.apache.doris.catalog.ScalarType;
|
||||
import org.apache.doris.catalog.Type;
|
||||
import org.apache.doris.common.util.Util;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
@ -33,6 +34,7 @@ import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class JdbcMySQLClient extends JdbcClient {
|
||||
@ -160,6 +162,13 @@ public class JdbcMySQLClient extends JdbcClient {
|
||||
return tableSchema;
|
||||
}
|
||||
|
||||
protected Set<String> getFilterInternalDatabases() {
|
||||
return ImmutableSet.<String>builder()
|
||||
.add("mysql")
|
||||
.add("sys")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) {
|
||||
// For Doris type
|
||||
|
||||
@ -21,6 +21,7 @@ import org.apache.doris.catalog.ScalarType;
|
||||
import org.apache.doris.catalog.Type;
|
||||
import org.apache.doris.common.util.Util;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.sql.Connection;
|
||||
@ -28,6 +29,7 @@ import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class JdbcOracleClient extends JdbcClient {
|
||||
|
||||
@ -139,6 +141,20 @@ public class JdbcOracleClient extends JdbcClient {
|
||||
return !modifiedTableName.equals(actualTableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> getFilterInternalDatabases() {
|
||||
return ImmutableSet.<String>builder()
|
||||
.add("ctxsys")
|
||||
.add("flows_files")
|
||||
.add("mdsys")
|
||||
.add("outln")
|
||||
.add("sys")
|
||||
.add("system")
|
||||
.add("xdb")
|
||||
.add("xs$null")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) {
|
||||
String oracleType = fieldSchema.getDataTypeName();
|
||||
|
||||
Reference in New Issue
Block a user