У меня есть изменение loadData в liquibase:
<changeSet author="author" id="13">
<sql>SET IDENTITY_INSERT M_Conversion ON</sql>
<loadData tableName="M_Conversion" separator="~" file="data/13-M_Conversion.csv">
<column name="MconID" type="NUMERIC" />
<column name="MdbtID" type="NUMERIC" />
<column name="MlokID" type="NUMERIC" />
<column name="MconKeyword" type="STRING" />
<column name="MconExtra" type="STRING" />
</loadData>
<sql>SET IDENTITY_INSERT M_Conversion OFF</sql>
<rollback>
<sql>SET IDENTITY_INSERTM_Conversion OFF</sql>
</rollback>
</changeSet>
В файле 13-M_Conversion.csv есть одно значение, которое вызывает проблемы для MSSQL: 201~2~200~GETDATE()~
значение GETDATE () для столбца MconKeyword не являетсяв результирующем sql
в качестве строки указывается sql, который сгенерирует liquibase для этих данных: INSERT INTO [pd].[M_Conversion] ([MconID], [MdbtID], [MlokID], [MconKeyword], [MconExtra]) VALUES (201, 2, 200, GETDATE());
, но должно быть (201, 2, 200, 'GETDATE()')
Проблема в том, что в методе liquibase.sqlgenerator.core.InsertGenerator#generateValues
дляВ строковых значениях есть вызов, чтобы проверить, выглядит ли строка как вызов функции
public boolean looksLikeFunctionCall(String value, Database database) {
return value.startsWith("\"SYSIBM\"") || value.startsWith("to_date(") || value.equalsIgnoreCase(database.getCurrentDateTimeFunction());
}
, а для MSSQLDatabase GETDATE () точно currentDateTimeFunction
Итак, вопрос в том, как мне получить это конкретное значениебыть правильно экранированным с изменением loadData?