if you drop a column, and it is not the last column, a column order change is detected in error -----------------------------------------------------------------------------------------------
Key: DDLUTILS-220 URL: https://issues.apache.org/jira/browse/DDLUTILS-220 Project: DdlUtils Issue Type: Improvement Components: Core (No specific database) Affects Versions: 1.0 Reporter: Chris Hyzer Assignee: Thomas Dudziak I can work on the code for this if someone can spend a little time discussing... I am using oracle, but it may affect other DBs... Does this have to work this way? When I drop a column (and its not at the end of the list), a column or change is detected, and the resulting script is to create a new table, copy data over, and recreate the table, and copy table back. This might not seem undesirable, but if I have a unique constraint (which ddlutils doesnt support) it is effectively dropped (same with column or table comments which ddlutils doesnt support. Anyways, I think this algorithm could be spruced up to detect if a column is recordered, or if a column is just dropped... >From ModelComparator: HashMap columnPosChanges = new HashMap(); for (int columnIdx = 0; columnIdx < sourceTable.getColumnCount(); columnIdx++) { Column sourceColumn = sourceTable.getColumn(columnIdx); Column targetColumn = targetTable.findColumn(sourceColumn.getName(), _caseSensitive); if (targetColumn == null) { if (_log.isInfoEnabled()) { _log.info("Column " + sourceColumn.getName() + " needs to be removed from table " + sourceTable.getName()); } changes.add(new RemoveColumnChange(sourceTable, sourceColumn)); } else { int targetColumnIdx = targetTable.getColumnIndex(targetColumn); if (targetColumnIdx != columnIdx) { columnPosChanges.put(sourceColumn, new Integer(targetColumnIdx)); } } } if (!columnPosChanges.isEmpty()) { changes.add(new ColumnOrderChange(sourceTable, columnPosChanges)); } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.