diff --git a/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/database/DatabaseConsumerPageMapping.java b/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/database/DatabaseConsumerPageMapping.java index ccf5de597282ee0f195cbaa162376de4e697f5df..4488961e6e6f04e6ec5f720cf8e5d4ae34de2d84 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/database/DatabaseConsumerPageMapping.java +++ b/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/database/DatabaseConsumerPageMapping.java @@ -528,13 +528,18 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage mappingTypes = new ArrayList<>(); - mappingTypes.add(DatabaseMappingType.skip.name()); DatabaseMappingObject mapping = (DatabaseMappingObject) element; + DatabaseMappingType mappingType = mapping.getMappingType(); + if (mappingType != DatabaseMappingType.skip) { + mappingTypes.add(mappingType.name()); + } if (mapping instanceof DatabaseMappingAttribute) { - mappingTypes.add(((DatabaseMappingAttribute) mapping).getParent().getMappingType().name()); - } else { - mappingTypes.add(mapping.getMappingType().name()); + DatabaseMappingType parentMapping = ((DatabaseMappingAttribute) mapping).getParent().getMappingType(); + if (mappingType != parentMapping && parentMapping == DatabaseMappingType.create) { + mappingTypes.add(DatabaseMappingType.create.name()); + } } + mappingTypes.add(DatabaseMappingType.skip.name()); return new CustomComboBoxCellEditor( mappingViewer, mappingViewer.getTree(), diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLDataSourceProvider.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLDataSourceProvider.java index b89984c2fc52eb1b00e73586eb93ceec6b466e34..75ae8217bb673173068f9cf7b6f991885d0f6344 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLDataSourceProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLDataSourceProvider.java @@ -263,7 +263,7 @@ public class MySQLDataSourceProvider extends JDBCDataSourceProvider implements D } @Nullable - private static String getFullServerVersion(File path) { + public static String getFullServerVersion(File path) { File binPath = path; File binSubfolder = new File(binPath, "bin"); if (binSubfolder.exists()) { @@ -292,6 +292,12 @@ public class MySQLDataSourceProvider extends JDBCDataSourceProvider implements D int pos2 = line.indexOf(",", pos); return line.substring(pos, pos2); } + pos = line.indexOf("Ver "); + if (pos != -1) { + pos += 4; + int pos2 = line.indexOf(" for ", pos); + return line.substring(pos, pos2); + } } } finally { IOUtils.close(input); diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java index c5a727c144eb670f6848acb95b07d68f783d1a14..8ed8de5112914f4e4022efce844451a36f1650b0 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLDatabaseExportHandler.java @@ -80,7 +80,9 @@ public class MySQLDatabaseExportHandler extends MySQLNativeToolHandler implements MySQLNativeCredentialsSettings { - private static final Log log = Log.getLog(MySQLExportSettings.class); public enum DumpMethod { @@ -59,6 +59,7 @@ public class MySQLExportSettings extends AbstractImportExportSettings private boolean noData; private boolean showViews; private boolean overrideCredentials; + private boolean disableColumnStatistics; public List exportObjects = new ArrayList<>(); @@ -304,4 +305,23 @@ public class MySQLExportSettings extends AbstractImportExportSettings } } + @Override + public void setClientHome(DBPNativeClientLocation clientHome) { + super.setClientHome(clientHome); + String fullVersion = MySQLDataSourceProvider.getFullServerVersion(clientHome.getPath()); + if (fullVersion == null) { + return; + } + int majorVersion; + try { + majorVersion = Integer.parseInt(fullVersion.split("\\.")[0]); + } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { + return; + } + disableColumnStatistics = majorVersion == 8; + } + + boolean isDisableColumnStatistics() { + return disableColumnStatistics; + } }