Заставить жидкость вычислять контрольную сумму по заданным значениям параметров

В моем yaml у меня есть такая структура параметров:

spring:
  liquibase:
    parameters:
      tables:
        table1: table1

и скрипт, создающий виртуальные таблицы в PostgreSQL на основе объекта базы данных.

CREATE FOREIGN TABLE my_table1 (
 ...
)
SERVER server_object
OPTIONS (schema_name 'common', table_name '${tables.table1}');

Насколько я знаю, расчет контрольной суммы основан на заданном тексте, а не на замененном значении.

Мой вопрос заключается в том, каковы возможности приобретения недавно упомянутого, чтобы, например, когда я перехожу с таблицы 1 на таблицу 2 и запускаю программу, Liquibase выдает ошибку из-за измененного значения параметра.

Я слышал о предварительных условиях, но думаю, что это не то, что я ищу, или validCheckSum, что, возможно, еще более отдаленная мысль.

ОБНОВЛЯТЬ

<changeSet author = "user1" id = "create_virtual_tables" dbms = "postgresql">
    <sqlFile path = "liquibase/sql/ddl/virtual_tables.sql"/>
</changeSet>
CREATE FOREIGN TABLE public.games (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    genre VARCHAR(100),
    release_date DATE,
    developer VARCHAR(255)
)
SERVER remote_server
OPTIONS (schema_name '${remote.schema.name}', table_name '${remote.table.games_table}');

Вы ищете способ не выполнить команду ChangeSet при изменении значения tables.table1? Не могли бы вы опубликовать весь набор изменений, который вы выполняете?

htshame 17.05.2024 16:25

Именно, я загрузил фрагмент выполненного набора изменений и соответствующий SQL. @htshame

Digital Nomad 19.05.2024 23:03
0
2
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поведение, которое вы наблюдаете, на самом деле синхронизировано с документацией:

sql и sqlFile

Вы можете использовать замену свойств с типами изменений sql и sqlFile. Обратите внимание, что Liquibase получает контрольную сумму набора изменений sql после замены любых указанных вами свойств. Однако он получает контрольную сумму набора изменений sqlFile перед заменой свойств во внешнем файле SQL.

Итак, по сути, чтобы добиться желаемого поведения, вам нужно встроить свой sql в набор изменений и использовать <sql> изменение вместо sqlFile изменение.

Другие вопросы по теме