Schema change checklist
The library supports six DB dialects and ships DDL for each. A schema change that misses one dialect ships a broken release. Treat this as a single atomic change.
1. DDL files (test resources)
Update all six in lock-step. Path: db-scheduler/src/test/resources/
hsql_tables.sqlpostgresql_tables.sqlmysql_tables.sqlmariadb_tables.sqlmssql_tables.sqloracle_tables.sql
Read all six first; column ordering and types differ per dialect (e.g. TIMESTAMP WITH TIME ZONE vs DATETIME2 vs TIMESTAMP(6) WITH TIME ZONE). Don't blindly copy from
one dialect to another — preserve each dialect's existing type conventions.
There's also postgresql_custom_tablename.sql under
src/test/resources/com/github/kagkarlsson/scheduler/ — check whether your change
needs to be reflected there too (it tests configurable table name; usually yes if
columns change).
2. JdbcCustomization classes
Path: db-scheduler/src/main/java/com/github/kagkarlsson/scheduler/jdbc/
If your change affects how rows are read/written (new column, type change, nullable→ not-null, etc.), update each relevant class:
DefaultJdbcCustomization.java— base behaviorPostgreSqlJdbcCustomization.javaOracleJdbcCustomization.javaMssqlJdbcCustomization.javaMySQLJdbcCustomization.javaMySQL8JdbcCustomization.javaMariaDBJdbcCustomization.javaAutodetectJdbcCustomization.java— only if dialect-detection logic changesJdbcCustomization.java(interface) — if the contract itself changes
Also check JdbcTaskRepository.java and QueryBuilder.java for SQL that references
the changed columns.
3. Documentation DDL copies
The README and/or docs/ may carry copies of the DDL for users. Grep for a column
name from the table to find them:
grep -rn "scheduled_tasks" --include="*.md" .
Update any matching SQL blocks so users get the current schema.
4. Verify
mvn -pl db-scheduler test # PostgreSQL tests
Dialects other than PostgreSQL currently need to be tested on CI (need to run on amd64 arch).
5. Migration note for users
Schema changes are user-visible. Add a brief migration note to the changelog / release
notes describing the required ALTER TABLE (per dialect if they differ).
6. Finalize
Run /finalize before committing.