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.