Skip to content

Commit

Permalink
Merge pull request #26 from SAP/develop
Browse files Browse the repository at this point in the history
Fix reported issues
  • Loading branch information
lnowakowski authored Jul 9, 2024
2 parents 837d1db + d54fc6c commit 7fa1fc9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ protected void addCustomPlatformTypeMapping(Platform platform) {
platform.getPlatformInfo().addNativeTypeMapping(Types.NCLOB, "NVARCHAR(MAX)");
platform.getPlatformInfo().addNativeTypeMapping(Types.CLOB, "NVARCHAR(MAX)");
platform.getPlatformInfo().addNativeTypeMapping(Types.LONGVARCHAR, "NVARCHAR(MAX)");
platform.getPlatformInfo().addNativeTypeMapping(Types.LONGNVARCHAR, "NVARCHAR(MAX)");
platform.getPlatformInfo().addNativeTypeMapping(Types.VARBINARY, "VARBINARY");
platform.getPlatformInfo().addNativeTypeMapping(Types.REAL, "float");
platform.getPlatformInfo().addNativeTypeMapping(Types.LONGVARBINARY, "VARBINARY(MAX)");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import org.apache.ddlutils.model.Column;
import org.apache.ddlutils.model.Database;
import org.apache.ddlutils.model.Table;
import org.apache.ddlutils.model.TypeMap;
import org.apache.ddlutils.model.JdbcTypeCategoryEnum;
import org.apache.ddlutils.platform.DatabaseMetaDataWrapper;
import org.apache.ddlutils.platform.mssql.MSSqlModelReader;
import org.apache.ddlutils.platform.mssql.MSSqlPlatform;
Expand All @@ -36,6 +38,7 @@ private MigrationHybrisMSSqlPlatform() {

public static HybrisPlatform build(DatabaseSettings databaseSettings) {
MigrationHybrisMSSqlPlatform instance = new MigrationHybrisMSSqlPlatform();
MigrationHybrisMSSqlPlatform.MSSqlHybrisTypeMap.register();
instance.provideCustomMapping();
instance.setSqlBuilder(new MigrationHybrisMSSqlBuilder(instance, databaseSettings));
MigrationHybrisMSSqlPlatform.HybrisMSSqlModelReader reader = new MigrationHybrisMSSqlPlatform.HybrisMSSqlModelReader(
Expand Down Expand Up @@ -63,9 +66,10 @@ private void provideCustomMapping() {
platformInfo.addNativeTypeMapping(Types.SMALLINT, "INTEGER");
platformInfo.addNativeTypeMapping(Types.TINYINT, "TINYINT", Types.TINYINT);
platformInfo.addNativeTypeMapping(Types.DOUBLE, "FLOAT", Types.DOUBLE);
platformInfo.addNativeTypeMapping(Types.FLOAT, "FLOAT", Types.DOUBLE);
platformInfo.addNativeTypeMapping(Types.FLOAT, "FLOAT", Types.FLOAT);
platformInfo.addNativeTypeMapping(Types.NVARCHAR, "NVARCHAR", Types.NVARCHAR);
platformInfo.addNativeTypeMapping(Types.TIME, "DATETIME2", Types.TIMESTAMP);
platformInfo.addNativeTypeMapping(Types.DATE, "DATETIME2");
platformInfo.addNativeTypeMapping(Types.TIMESTAMP, "DATETIME2");
platformInfo.addNativeTypeMapping(Types.BLOB, "VARBINARY(MAX)");
}
Expand All @@ -86,17 +90,44 @@ public void alterTables(Connection connection, Database desiredModel, boolean co
this.evaluateBatch(connection, sql, continueOnError);
}

static class MSSqlHybrisTypeMap extends TypeMap {

static void register() {
registerJdbcType(Types.NCHAR, "NCHAR", JdbcTypeCategoryEnum.TEXTUAL);
}
}

private static class HybrisMSSqlModelReader extends MSSqlModelReader {
private static final String TABLE_NAME_KEY = "TABLE_NAME";

private final Set<String> tablesToExclude = Set.of("trace_xe_action_map", "trace_xe_event_map");
private final Set<String> tablesToExclude = Set.of("trace_xe_action_map", "trace_xe_event_map",
"change_streams_partition_scheme", "change_streams_destination_type");

public HybrisMSSqlModelReader(Platform platform) {
super(platform);
}

protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException {
return this.tableShouldBeExcluded(values) ? null : super.readTable(metaData, values);
if (this.tableShouldBeExcluded(values)) {
LOG.debug("Table `{}` is excluded from schema read", values.get("TABLE_NAME"));

return null;
}

try {
return super.readTable(metaData, values);
} catch (Exception e) {
LOG.error(
"Error when reading schema details for table `{}` (catalog: {}, schema: {}, type: {}), message: {}",
values.get("TABLE_NAME"), values.get("TABLE_CAT"), values.get("TABLE_SCHEM"),
values.get("TABLE_TYPE"), e.getMessage());

if (LOG.isDebugEnabled()) {
LOG.debug("Table schema read error occurred", e);
}
}

return null;
}

private boolean tableShouldBeExcluded(Map values) {
Expand Down

0 comments on commit 7fa1fc9

Please sign in to comment.