fix(TUP-20360): In the Mysql database, For the system databases like (#2117)

mysql, information_schema retrieve schema is not working.
This commit is contained in:
hcyi
2018-12-21 09:54:57 +08:00
committed by zwxue
parent 656d87a4f8
commit dfb9e2f99a
4 changed files with 19 additions and 5 deletions

View File

@@ -93,7 +93,8 @@ public class ExtractMetaDataFromDataBase {
MANAGED_TABLE("MANAGED_TABLE"), //$NON-NLS-1$ // for hive
INDEX_TABLE("INDEX_TABLE"), //$NON-NLS-1$ // for hive
VIRTUAL_VIEW("VIRTUAL_VIEW"), //$NON-NLS-1$ // for hive
SYSTEM_TABLE("SYSTEM TABLE"); //$NON-NLS-1$ //added for amazon redshift TDQ-11558 by msjian
SYSTEM_TABLE("SYSTEM TABLE"), //$NON-NLS-1$ //added for amazon redshift TDQ-11558 by msjian
SYSTEM_VIEW("SYSTEM VIEW"); //$NON-NLS-1$ // for mysql
private final String name;

View File

@@ -244,6 +244,9 @@ public class ExtractManager {
if (conn != null) {
catalog = conn.getCatalog();
}
// Mysql For the system databases like mysql,information_schema retrieve schema/...is not working.
availableTableTypes.add(ETableTypes.SYSTEM_TABLE.getName());
availableTableTypes.add(ETableTypes.SYSTEM_VIEW.getName());
}
rsTables = dbMetaData.getTables(catalog, schema, null, availableTableTypes.toArray(new String[] {}));
if (rsTables != null) {
@@ -319,10 +322,10 @@ public class ExtractManager {
// if (tableType.startsWith("A")) {
// System.out.println("AA");
// }
if (ExtractManager.TABLETYPE_TABLE.equals(tableType)) {
if (ExtractManager.TABLETYPE_TABLE.equals(tableType) || ETableTypes.SYSTEM_TABLE.getName().equals(tableType)) {
tableType = ETableTypes.TABLETYPE_TABLE.getName();
}
if (ExtractManager.TABLETYPE_VIEW.equals(tableType)) {
if (ExtractManager.TABLETYPE_VIEW.equals(tableType) || ETableTypes.SYSTEM_VIEW.getName().equals(tableType)) {
tableType = ETableTypes.TABLETYPE_VIEW.getName();
}

View File

@@ -1030,9 +1030,11 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
if (ETableTypes.EXTERNAL_TABLE.getName().equals(temptableType)
|| ETableTypes.MANAGED_TABLE.getName().equals(temptableType)
|| ETableTypes.INDEX_TABLE.getName().equals(temptableType)
|| ETableTypes.TABLETYPE_BASE_TABLE.getName().equals(temptableType)) {
|| ETableTypes.TABLETYPE_BASE_TABLE.getName().equals(temptableType)
|| ETableTypes.SYSTEM_TABLE.getName().equals(temptableType)) {
metadatatable.setTableType(ETableTypes.TABLETYPE_TABLE.getName());
} else if (ETableTypes.VIRTUAL_VIEW.getName().equals(temptableType)) {
} else if (ETableTypes.VIRTUAL_VIEW.getName().equals(temptableType)
|| ETableTypes.SYSTEM_VIEW.getName().equals(temptableType)) {
metadatatable.setTableType(ETableTypes.TABLETYPE_VIEW.getName());
} else if (ETableTypes.TABLETYPE_CALCULATION_VIEW.getName().equals(temptableType)) {
String catalog = getStringFromResultSet(tables, GetTable.TABLE_CAT.name());

View File

@@ -119,6 +119,9 @@ public class DatabaseTableFilterForm extends AbstractForm {
getTableInfoParameters().changeType(ETableTypes.VIRTUAL_VIEW, viewCheck.getSelection());
} else if (EDatabaseTypeName.SAPHana.getDisplayName().equals(metadataconnection.getDbType())) {
getTableInfoParameters().changeType(ETableTypes.TABLETYPE_CALCULATION_VIEW, calculationViewCheck.getSelection());
} else if (EDatabaseTypeName.MYSQL.getDisplayName().equals(metadataconnection.getDbType())) {
getTableInfoParameters().changeType(ETableTypes.SYSTEM_TABLE, tableCheck.getSelection());
getTableInfoParameters().changeType(ETableTypes.SYSTEM_VIEW, viewCheck.getSelection());
}
// hide for the bug 7959
if (isOracle()) {
@@ -426,6 +429,8 @@ public class DatabaseTableFilterForm extends AbstractForm {
if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataconnection.getDbType())) {
getTableInfoParameters().changeType(ETableTypes.MANAGED_TABLE, tableCheck.getSelection());
getTableInfoParameters().changeType(ETableTypes.INDEX_TABLE, tableCheck.getSelection());
} else if (EDatabaseTypeName.MYSQL.getDisplayName().equals(metadataconnection.getDbType())) {
getTableInfoParameters().changeType(ETableTypes.SYSTEM_TABLE, tableCheck.getSelection());
}
}
@@ -437,6 +442,9 @@ public class DatabaseTableFilterForm extends AbstractForm {
public void widgetSelected(SelectionEvent e) {
getTableInfoParameters().changeType(ETableTypes.TABLETYPE_VIEW, viewCheck.getSelection());
getTableInfoParameters().changeType(ETableTypes.VIRTUAL_VIEW, viewCheck.getSelection());
if (EDatabaseTypeName.MYSQL.getDisplayName().equals(metadataconnection.getDbType())) {
getTableInfoParameters().changeType(ETableTypes.SYSTEM_VIEW, viewCheck.getSelection());
}
}
});