В моем 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}');
Именно, я загрузил фрагмент выполненного набора изменений и соответствующий SQL. @htshame
Поведение, которое вы наблюдаете, на самом деле синхронизировано с документацией:
sql и sqlFile
Вы можете использовать замену свойств с типами изменений sql и sqlFile. Обратите внимание, что Liquibase получает контрольную сумму набора изменений sql после замены любых указанных вами свойств. Однако он получает контрольную сумму набора изменений sqlFile перед заменой свойств во внешнем файле SQL.
Итак, по сути, чтобы добиться желаемого поведения, вам нужно встроить свой sql в набор изменений и использовать <sql> изменение вместо sqlFile изменение.
Вы ищете способ не выполнить команду ChangeSet при изменении значения
tables.table1? Не могли бы вы опубликовать весь набор изменений, который вы выполняете?