[opt](jdbc catalog) filter jdbc datasource internal database (#32294)

This commit is contained in:
zy-kkk
2024-03-18 15:22:36 +08:00
committed by yiguolei
parent e952b5ef5b
commit 26ed4b69b1
6 changed files with 38 additions and 9 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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();