Fix and Retest
Overview
The functionality you tested for milestone 1 relies on:
- Create and populate
databasechangeloglock
table - Create and populate
databasechangelog
table - Execute user-specified SQL
Improving Your Database Class
The standard liquibase.changelog.ChangeLogHistoryService,
liquibase.lockservice.LockService, and liquibase.executor.Executor
implementations which drive that rely on SQL and/or JDBC standards guided by dialect info from your Database
class.
If you run into any problems with those standard services, the most likely fix is overriding additional liquibase.database.Database
methods to more correctly
describe how your database works.
For example, if the databasechangeloglock
table isn't being created correctly because your database quotes object names in a special way, override the escapeObjectName
function.
Tip
Exactly what you need to override will depend on the actual problems you hit. If you have questions on what it takes to fix your problem, ask on the forum.
Advanced Fixes
If your database deviates significantly from what the standard services expect, your changes may not be isolated to your new Database
class.
Instead, you may need to override one or more of the following SQLGenerators:
liquibase.sqlgenerator.core.ClearDatabaseChangeLogTableGenerator
liquibase.sqlgenerator.core.CreateDatabaseChangeLogLockTableGenerator
liquibase.sqlgenerator.core.CreateDatabaseChangeLogTableGenerator
liquibase.sqlgenerator.core.InitializeDatabaseChangeLogLockTableGenerator
liquibase.sqlgenerator.core.MarkChangeSetRanGenerator
Iterate
After you have made a potential fix to the problem you found, re-run your test and see if Liquibase is working better.
- Sometimes your fix didn't work as well as you hoped. Try a new one
- Sometimes your fix resolved one issue, but now you have hit another. Fix that up
- Eventually, you will be done. Congratulations!!
Next Steps
With Liquibase working against your database, now is a great time to release the first version of your extension and get feedback.
When you are ready to build advanced support, you can move on to milestone 2
Created: January 9, 2023