Nazar - Melhorias

bug#12464
dev:trevezani
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/BD/FlyWay/trunk@87514 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2018-11-29 15:44:17 +00:00
parent da4f03b58d
commit 5e4eaefbdd
1 changed files with 42 additions and 4 deletions

View File

@ -221,10 +221,20 @@ public class FlyWay {
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean existe = existeSchema(dataSource.getConnection());
if (existe) {
sb.append(" select nome as nome_arquivo, sql as sql_arquivo, sql_erro as erro, datahora_execucao as datahora"); sb.append(" select nome as nome_arquivo, sql as sql_arquivo, sql_erro as erro, datahora_execucao as datahora");
sb.append(" from flyway_scripts"); sb.append(" from flyway_scripts");
sb.append(" where activo = 1 and nome not in (select replace(\"script\", '.sql', '') from \"schema_version_cst\")"); sb.append(" where activo = 1 and nome not in (select replace(\"script\", '.sql', '') from \"schema_version_cst\")");
sb.append(" order by nome_arquivo"); sb.append(" order by nome_arquivo");
} else {
sb.append(" select nome as nome_arquivo, sql as sql_arquivo, sql_erro as erro, datahora_execucao as datahora");
sb.append(" from flyway_scripts");
sb.append(" where activo = 1");
sb.append(" order by nome_arquivo");
}
Connection c = dataSource.getConnection(); Connection c = dataSource.getConnection();
Statement s = c.createStatement(); Statement s = c.createStatement();
@ -307,4 +317,32 @@ public class FlyWay {
return retorno; return retorno;
} }
private boolean existeSchema(Connection c) {
StringBuilder sb = new StringBuilder();
sb.append("SELECT count(table_name) as existe FROM all_tables WHERE table_name = 'schema_version_cst'");
try {
Statement s = c.createStatement();
ResultSet rs = s.executeQuery(sb.toString());
int existe = 0;
while (rs.next()) {
existe = rs.getInt("existe");
}
rs.close();
s.close();
if (existe > 0) {
return true;
}
} catch (SQLException e) {
log.error(e.getMessage(), e);
}
return false;
}
} }