class UpdateExecutablePreparedStatement extends ExecutablePreparedStatementBase {

    private String whereClause;

    private final List<String> whereColumnNames = new ArrayList<>();
    private final List<Object> whereParameters = new ArrayList<>();

    public UpdateExecutablePreparedStatement(Database database, String catalogName, String schemaName, String tableName, List<ColumnConfig> columns, ChangeSet changeSet, ResourceAccessor resourceAccessor) {
        super(database, catalogName, schemaName, tableName, columns, changeSet, resourceAccessor);
    }

    @Override
    public boolean continueOnError() {
        return false;
    }

    @Override
    protected String generateSql(List<ColumnConfig> cols) {<FILL_FUNCTION_BODY>}


    public String getWhereClause() {
        return whereClause;
    }

    public UpdateExecutablePreparedStatement setWhereClause(String whereClause) {
        this.whereClause = whereClause;

        return this;
    }

    public UpdateExecutablePreparedStatement addWhereParameter(Object value) {
        this.whereParameters.add(value);

        return this;
    }

    public UpdateExecutablePreparedStatement addWhereParameters(Object... value) {
        this.whereParameters.addAll(Arrays.asList(value));

        return this;
    }

    public UpdateExecutablePreparedStatement addWhereColumnName(String value) {
        this.whereColumnNames.add(value);

        return this;
    }

    public List<Object> getWhereParameters() {
        return whereParameters;
    }

    public List<String> getWhereColumnNames() {
        return whereColumnNames;
    }
}


        StringBuilder sql = new StringBuilder("UPDATE ").append(database.escapeTableName(getCatalogName(), getSchemaName(), getTableName()));

		StringBuilder params = new StringBuilder(" SET ");
	    for(ColumnConfig column : getColumns()) {
	    	params.append(database.escapeColumnName(getCatalogName(), getSchemaName(), getTableName(), column.getName()));
	    	params.append(" = ");
			if (column.getValueObject() instanceof DatabaseFunction) {
				params.append(column.getValueObject()).append(", ");
			} else {
				params.append("?, ");
				cols.add(column);
			}
	    }
	    params.deleteCharAt(params.lastIndexOf(" "));
	    params.deleteCharAt(params.lastIndexOf(","));
	    sql.append(params);
        if (getWhereClause() != null) {
            sql.append(" WHERE ").append(replacePredicatePlaceholders(database, getWhereClause(), getWhereColumnNames(), getWhereParameters()));
        }

        return sql.toString();
    
<methods>public void execute(liquibase.database.PreparedStatementFactory) throws liquibase.exception.DatabaseException,public java.lang.String getCatalogName() ,public liquibase.changelog.ChangeSet getChangeSet() ,public List<? extends liquibase.change.ColumnConfig> getColumns() ,public liquibase.resource.ResourceAccessor getResourceAccessor() ,public java.lang.String getSchemaName() ,public java.lang.String getTableName() ,public boolean skipOnUnsupported() <variables>private final non-sealed java.lang.String catalogName,private final non-sealed liquibase.changelog.ChangeSet changeSet,private final non-sealed Set<java.io.Closeable> closeables,private final non-sealed List<? extends liquibase.change.ColumnConfig> columns,protected static java.util.ResourceBundle coreBundle,protected liquibase.database.Database database,private static java.lang.reflect.Method executeWithFlagsMethod,private static java.sql.PreparedStatement lastPreparedStatement,private static java.lang.String lastPreparedStatementSql,private final non-sealed liquibase.resource.ResourceAccessor resourceAccessor,private final non-sealed java.lang.String schemaName,private final Map<java.lang.String,java.lang.Object> snapshotScratchPad,private final non-sealed java.lang.String tableName