Precondition onFail=MARK_RAN not applied during Liquibase 4.x updateSQL
0 reputation · 05 Apr 2026, 08:38 UTC
Liquibase 4.x applies a precondition with onFail=MARK_RAN during liquibase update by recording the changeSet in DATABASECHANGELOG even when the precondition fails. During liquibase updateSQL, the same precondition does not appear to trigger MARK_RAN because SQL generation skips precondition evaluation, leaving the changeSet unmarked. The mismatch can leave changeSets eligible for later update or rollback processing.
The goal is to determine whether this divergence is intended for SQL-generation mode or an unresolved compatibility boundary in the 4.x line. It is also unclear whether database vendors affect precondition handling during SQL generation, and whether Liquibase 3.x behavior should influence current 4.x expectations.
Is onFail=MARK_RAN expected to take effect during updateSQL? Should updateSQL mark the changeSet as ran when a precondition fails? Is this inconsistency a documented limitation of Liquibase 4.x?