class AddPrimaryKeyGeneratorInformix extends AddPrimaryKeyGenerator {

    @Override
    public int getPriority() {
        return SqlGenerator.PRIORITY_DATABASE;
    }

    @Override
    public boolean supports(AddPrimaryKeyStatement statement, Database database) {
        return (database instanceof InformixDatabase);
    }
    
    @Override
    public Sql[] generateSql(AddPrimaryKeyStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) {<FILL_FUNCTION_BODY>}
}

        StringBuilder sql = new StringBuilder();
        sql.append("ALTER TABLE ");
        sql.append(database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()));
        sql.append(" ADD CONSTRAINT PRIMARY KEY (");
        sql.append(database.escapeColumnNameList(statement.getColumnNames()));
        sql.append(")");

        // Using auto-generated names of the form <constraint_type><tabid>_<constraintid> can cause collisions
        // See here: http://www-01.ibm.com/support/docview.wss?uid=swg21156047
        String constraintName = statement.getConstraintName();
        if ((constraintName != null) && !constraintName.matches("[urcn][0-9]+_[0-9]+")) {
            sql.append(" CONSTRAINT ");
            sql.append(database.escapeConstraintName(constraintName));
        }

        return new Sql[] {
                new UnparsedSql(sql.toString(), getAffectedPrimaryKey(statement))
        };
    
<methods>public non-sealed void <init>() ,public liquibase.sql.Sql[] generateSql(liquibase.statement.core.AddPrimaryKeyStatement, liquibase.database.Database, SqlGeneratorChain#RAW) ,public boolean supports(liquibase.statement.core.AddPrimaryKeyStatement, liquibase.database.Database) ,public liquibase.exception.ValidationErrors validate(liquibase.statement.core.AddPrimaryKeyStatement, liquibase.database.Database, SqlGeneratorChain#RAW) <variables>