Skip to content

Commit

Permalink
0003054: Support lower_case_names=1 setting for MySQL
Browse files Browse the repository at this point in the history
  • Loading branch information
chenson42 committed Apr 14, 2017
1 parent a98131a commit 155fbf7
Showing 1 changed file with 25 additions and 12 deletions.
Expand Up @@ -355,7 +355,7 @@ protected void mergeOrRemovePlatformTypes(Database currentModel, Database desire
* different catalogs and schemas, so we only need to look up by
* name
*/
Table desiredTable = desiredModel.findTable(currentTable.getName(), false);
Table desiredTable = findTable(desiredModel, currentTable.getName());
if (desiredTable != null) {
Column[] currentColumns = currentTable.getColumns();
for (Column currentColumn : currentColumns) {
Expand Down Expand Up @@ -648,7 +648,7 @@ protected void processTableStructureChanges(Database currentModel, Database desi
for (Iterator<Map.Entry<String, List<ForeignKey>>> tableFKIt = unchangedFKs.entrySet()
.iterator(); tableFKIt.hasNext();) {
Map.Entry<String, List<ForeignKey>> entry = tableFKIt.next();
Table targetTable = desiredModel.findTable((String) entry.getKey(), caseSensitive);
Table targetTable = findTable(desiredModel, (String) entry.getKey());

for (Iterator<ForeignKey> fkIt = entry.getValue().iterator(); fkIt.hasNext();) {
writeExternalForeignKeyDropStmt(targetTable, fkIt.next(), ddl);
Expand All @@ -669,13 +669,29 @@ protected void processTableStructureChanges(Database currentModel, Database desi
for (Iterator<Map.Entry<String, List<ForeignKey>>> tableFKIt = unchangedFKs.entrySet()
.iterator(); tableFKIt.hasNext();) {
Map.Entry<String, List<ForeignKey>> entry = tableFKIt.next();
Table targetTable = desiredModel.findTable((String) entry.getKey(), caseSensitive);
Table targetTable = findTable(desiredModel, (String) entry.getKey());

for (Iterator<ForeignKey> fkIt = entry.getValue().iterator(); fkIt.hasNext();) {
writeExternalForeignKeyCreateStmt(desiredModel, targetTable, fkIt.next(), ddl);
}
}
}

protected Table findTable(Database currentModel, String tableName) {
Table table = currentModel.findTable(tableName, delimitedIdentifierModeOn);
if (table == null && delimitedIdentifierModeOn) {
table = currentModel.findTable(tableName, false);
}
return table;
}

protected ForeignKey findForeignKey(Table table, ForeignKey fk) {
ForeignKey key = table.findForeignKey(fk, delimitedIdentifierModeOn);
if (key == null && delimitedIdentifierModeOn) {
key = table.findForeignKey(fk, false);
}
return key;
}

/**
* Determines the unchanged foreign keys of the indicated table.
Expand All @@ -691,13 +707,12 @@ protected void processTableStructureChanges(Database currentModel, Database desi
private List<ForeignKey> getUnchangedForeignKeys(Database currentModel, Database desiredModel,
String tableName) {
ArrayList<ForeignKey> unchangedFKs = new ArrayList<ForeignKey>();
boolean caseSensitive = delimitedIdentifierModeOn;
Table sourceTable = currentModel.findTable(tableName, caseSensitive);
Table targetTable = desiredModel.findTable(tableName, caseSensitive);
Table sourceTable = findTable(currentModel, tableName);
Table targetTable = findTable(desiredModel, tableName);

for (int idx = 0; idx < targetTable.getForeignKeyCount(); idx++) {
ForeignKey targetFK = targetTable.getForeignKey(idx);
ForeignKey sourceFK = sourceTable.findForeignKey(targetFK, caseSensitive);
ForeignKey sourceFK = findForeignKey(sourceTable, targetFK);

if (sourceFK != null) {
unchangedFKs.add(targetFK);
Expand All @@ -722,12 +737,10 @@ private List<ForeignKey> getUnchangedForeignKeys(Database currentModel, Database
*/
private void addRelevantFKsFromUnchangedTables(Database currentModel, Database desiredModel,
Set<String> namesOfKnownChangedTables, Map<String, List<ForeignKey>> fksPerTable) {
boolean caseSensitive = delimitedIdentifierModeOn;

for (int tableIdx = 0; tableIdx < desiredModel.getTableCount(); tableIdx++) {
Table targetTable = desiredModel.getTable(tableIdx);
String name = targetTable.getName();
Table sourceTable = currentModel.findTable(name, caseSensitive);
Table sourceTable = findTable(currentModel, name);
List<ForeignKey> relevantFks = null;

if (!caseSensitive) {
Expand Down Expand Up @@ -767,8 +780,8 @@ protected void processTableStructureChanges(Database currentModel, Database desi
StringBuilder tableDdl = new StringBuilder();

Database originalModel = copy(currentModel);
Table sourceTable = originalModel.findTable(tableName, delimitedIdentifierModeOn);
Table targetTable = desiredModel.findTable(tableName, delimitedIdentifierModeOn);
Table sourceTable = findTable(originalModel, tableName);
Table targetTable = findTable(desiredModel, tableName);

// we're enforcing a full rebuild in case of the addition of a required
// column without a default value that is not autoincrement
Expand Down

0 comments on commit 155fbf7

Please sign in to comment.