We are running into an issue with the Liquibase when trying to use the ‘update’ (update) change type. We need to update an existing database column to get the values from a sequence and the attribute ‘valueSequenceNext’ seems to be an appropriate choice to accomplish this
- changeSet:
id: 1
changes:
- update:
tableName: table_name
columns:
- column:
name: column_name
valueSequenceNext: SEQUENCE_NAME
The above causes the exception below.
it seems like liquibase is looking for the string ‘sequenceNextValueFunction’ definition but it is missing for Snowflake.
public class SnowflakeDatabase extends AbstractJdbcDatabase {
public static final String PRODUCT_NAME = "Snowflake";
private Set<String> systemTables = new HashSet();
private Set<String> systemViews = new HashSet();
public SnowflakeDatabase() {
super.setCurrentDateTimeFunction("current_timestamp::timestamp_ntz");
super.unmodifiableDataTypes.addAll(Arrays.asList("integer", "bool", "boolean", "int4", "int8", "float4", "float8", "numeric", "bigserial", "serial", "bytea", "timestamptz"));
super.unquotedObjectsAreUppercased = true;
super.addReservedWords(this.getDefaultReservedWords());
super.defaultAutoIncrementStartWith = BigInteger.ONE;
super.defaultAutoIncrementBy = BigInteger.ONE;
}
But other database has it
public H2Database() {
super.unquotedObjectsAreUppercased = true;
super.setCurrentDateTimeFunction("NOW()");
this.dateFunctions.add(new DatabaseFunction("CURRENT_DATE"));
this.dateFunctions.add(new DatabaseFunction("CURDATE"));
this.dateFunctions.add(new DatabaseFunction("SYSDATE"));
this.dateFunctions.add(new DatabaseFunction("TODAY"));
this.dateFunctions.add(new DatabaseFunction("CURRENT_TIME"));
this.dateFunctions.add(new DatabaseFunction("CURTIME"));
this.dateFunctions.add(new DatabaseFunction("CURRENT_TIMESTAMP"));
this.dateFunctions.add(new DatabaseFunction("NOW"));
super.sequenceNextValueFunction = "NEXTVAL('%s')"; <----
}
Any workaround or suggestions to resolve this issue ?
Thanks
-Isao