чтобы он при подключении к бд обязательно выполнил произвольный запрос? в частности, нужно выполнить set search_path
Единажды? Может просто startup listener сделать
не уверен, что единожды. у спринга hikari вроде держит пулл коннектов
А зачем его выполнять? Проверить что коннект живой? Для этого в хикари есть connectionTestQuery (https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby).
Там же выше написано что переменную сессии установить
нужна не проверка коннекта, а доступ к расширениям, которые недоступны в схеме подключения, т.к. созданы в public схеме
А, понял, не заметил сразу :( Тогда можете посмотреть на connectionInitSql
не выходит. при том что, вроде используется свойство, т.к. если написать фигню, то спринг падает с исключением. всё как в доке. выполнение SHOW search_path в тесте (@Test) показывает только одну схему, без public
Вроде у хикари пула можно в конфиге указать дефолтную схему. Еще можно пользователю в бд задать search_path
да, всё можно и всё работает, но, как оказалось, всё портит liquibase. он на данный момент является частью приложения и какой-то магией он устанавливает search_path на схему, даже если в подключении datasource указаны более одной схемы (через currentSchema). чинится довольно странно: datasource: url: "jdbc:postgresql://${DB_HOST:localhost:5432}/${DB_DATABASE:kiap}?currentSchema=dto,public" username: "${DB_USER:postgres}" password: "${DB_PASSWORD:1234}" liquibase: change-log: "classpath:/db/changelog.yml" user: "${DB_USER:postgres}" liquibase-schema: dto указать схему и юзера. если не указать юзера в liquibase - будет ошибка. если вырубить liquibase, то любой вариант в приложении показывает правильный search_path. может ошибка вылезает только на тестах и какой-то контекст переписывается именно в них. при обычном запуске не пробовал.
Вы ликвибейз при старте приложения запускаете?
Обсуждают сегодня