I know this is an older topic, but I’ve just run into the same situation: my requirements necessitate a CustomTaskChange which updates the database directly.
Now I would like to add a “verify” mode to fit into the “updateSQL” model.
I see two alternatives:
(1) change my CustomTaskChange into a CustomSqlChange that (still) modifies the database directly and returns an “sql comment” describing the changes made. Question: will the side effects break the semantics of the change process?
(2) adding to the interface CustomTaskChange an additional method, perhaps:
execute(Database database, Writer output)
or (only somewhat tongue-in-cheek):
dontExecute(Database database, Writer output)
which would write a log of sql comments describing the changes that would have been executed and not modify the database.