The columnExists precondition takes about 5 seconds to run on our database. We have about 80 tables and 800+ columns.
Its building up the entire DatabaseSnapshot in a liquibase object before using the generic liquibase calls in each precondition.
I added a patch for mysql databases that does a sql call into the information_schema space. This takes milleseconds to run. (see attached).
Alternatively, the generated DatabaseSnapshot object could be cached until a database modification is done in a changeset, but I didn’t see a quick way to do that.
The tableExists, foreignKeyExists, indexExists, viewExists, etc could stand to have a similar improvement.
(I haven’t looked at the 2.0 branch yet to see if this overall problem is solved)
Modification: Attached a similar patch for indexExists.