В нашем проекте целевая БД PostreSQL. Бизнес логика пишется на Java, но в DAO пишется много SQL. Возникает задача юнит тестирования. Причём как уровня сервисов (нужны моки БД), так и уровня DAO.
Сейчас сделано так: юнит тесты разворачивают в памяти БД и запускают на ней честные (без моков) сервисы и DAO. В большинстве случаев всё проходит хорошо, но иногда возникают проблемы. Например мне так и не удалось найти 100% синтаксически совместимую с Postgres БД.
HSQL отвергли сразу, так как не смотря на заявления разработчиков она не понимает всех alias для типов данных. Это критично так как DDL генерируется специальными инструментами.
H2 тоже не устраивает тем, что поведение bigserial типов отличается от оригинального Postgres (на лету не создаются sequence). Кроме того, в H2 очень скромные возможности хранимых процедур по сравнению с Postgres. Например не получилось сделать SELECT из хранимки, которая возвращает ResultSet. H2 просто не понимает что он неё хотят.
Вопрос такой. Сталкивался ли кто-нибудь с подобными проблемами и как это можно решить?