Adam Saghy created FINERACT-2099:
------------------------------------

             Summary: Initial Liquibase got executed every execution
                 Key: FINERACT-2099
                 URL: https://issues.apache.org/jira/browse/FINERACT-2099
             Project: Apache Fineract
          Issue Type: Bug
    Affects Versions: 1.10.0
            Reporter: Adam Saghy
             Fix For: 1.11


TenantDatabaseUpgradeService.java, line 94, calls 
{{TenantDatabaseStateVerifier.isFirstLiquibaseMigration()}}

the implementation checks if the database table called DATABASECHANGELOG exists:
public boolean isFirstLiquibaseMigration(DataSource dataSource) \{
        boolean databaseChangelogTableExists = 
dbQueryService.isTablePresent(dataSource, "DATABASECHANGELOG");
        return !databaseChangelogTableExists;
    } * the actual check executed here is:

public boolean isTablePresent(DataSource dataSource, String tableName) \{
        return choose(dataSource).isTablePresent(dataSource, tableName);
    } * and if PostgreSQL is chosen:

public boolean isTablePresent(DataSource dataSource, String tableName) \{
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        Integer result = jdbcTemplate.queryForObject(format("SELECT 
COUNT(table_name) " + "FROM information_schema.tables "
                + "WHERE table_schema = 'public' " + "AND table_name = '%s';", 
tableName), Integer.class);
        return Objects.equals(result, 1);
    } * this is an issue - tableName is all uppercase, and in PostgreSQL the 
following query returns no rows:

select table_name, count(table_name)
from information_schema.tables
where table_schema = 'public' and table_name = 'DATABASECHANGELOG'
group by table_name * (while the following query correctly returns 1 row)

select table_name, count(table_name)
from information_schema.tables
where table_schema = 'public' and table_name = 'databasechangelog'
group by table_name



{panel:title=Acceptance criteria}
- Initial liquibase which creates the liquibase tables to be executed only once!
{panel}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to