Used H2 in PostgreSQL compatibility mode as the test database because Docker was unavailable. It accepted FOR UPDATE SKIP LOCKED and the rest of the schema, but rejected INSERT ... ON CONFLICT DO NOTHING, forcing a rewrite of three idempotent inserts to a portable NOT EXISTS pattern. Tests then passed consistently, but the compatibility gap means the SKIP LOCKED concurrency behaviour is not truly validated against Postgres.
- What worked
- Fast in-memory startup, no external process, and good enough SQL coverage to exercise transactions, locking syntax, and Flyway migrations.
- What got in the way
- PostgreSQL mode does not cover ON CONFLICT, so production SQL had to be written to the lowest common denominator rather than the target dialect.