diff --git a/liquibase-core/src/main/java/liquibase/Liquibase.java b/liquibase-core/src/main/java/liquibase/Liquibase.java index f863099492e..5cdfa58aa39 100644 --- a/liquibase-core/src/main/java/liquibase/Liquibase.java +++ b/liquibase-core/src/main/java/liquibase/Liquibase.java @@ -1942,12 +1942,13 @@ public void reportLocks(PrintStream out) throws LiquibaseException { + "@" + getDatabase().getConnection().getURL()); if (locks.length == 0) { out.println(" - No locks"); + return; } for (DatabaseChangeLogLock lock : locks) { out.println(" - " + lock.getLockedBy() + " at " + DateFormat.getDateTimeInstance().format(lock.getLockGranted())); } - + out.println("NOTE: The lock time displayed is based on the database's configured time"); } public void forceReleaseLocks() throws LiquibaseException { diff --git a/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java b/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java index dfcd5933109..17d19558a03 100644 --- a/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java +++ b/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java @@ -8,6 +8,7 @@ import liquibase.sql.Sql; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.sqlgenerator.SqlGeneratorFactory; +import liquibase.statement.DatabaseFunction; import liquibase.statement.core.LockDatabaseChangeLogStatement; import liquibase.statement.core.UpdateStatement; import liquibase.util.NetUtil; @@ -44,9 +45,10 @@ public Sql[] generateSql(LockDatabaseChangeLogStatement statement, Database data ObjectQuotingStrategy currentStrategy = database.getObjectQuotingStrategy(); database.setObjectQuotingStrategy(ObjectQuotingStrategy.LEGACY); try { + String dateValue = database.getCurrentDateTimeFunction(); UpdateStatement updateStatement = new UpdateStatement(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogLockTableName()); updateStatement.addNewColumnValue("LOCKED", true); - updateStatement.addNewColumnValue("LOCKGRANTED", new Timestamp(new java.util.Date().getTime())); + updateStatement.addNewColumnValue("LOCKGRANTED", new DatabaseFunction(dateValue)); updateStatement.addNewColumnValue("LOCKEDBY", hostname + hostDescription + " (" + hostaddress + ")"); updateStatement.setWhereClause(database.escapeColumnName(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogTableName(), "ID") + " = 1 AND " + database.escapeColumnName(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogTableName(), "LOCKED") + " = "+ DataTypeFactory.getInstance().fromDescription("boolean", database).objectToSql(false, database)); diff --git a/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java b/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java index 0a62035fdab..e22d70a757c 100644 --- a/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java +++ b/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java @@ -73,4 +73,17 @@ public void testOutputChangeLog() throws Exception { assertTrue(true); } + @Override + public void tearDown() throws Exception { + super.tearDown(); + try { + String url = getDatabase().getConnection().getURL() + .replaceFirst("jdbc:sqlite:", ""); // remove the prefix of the URL jdbc:sqlite:C:\path\to\tmp\dir\liquibase.db + Scope.getCurrentScope().getLog(getClass()).info("Marking SQLite database as delete on exit: " + url); + // Want to delete the sqlite db on jvm exit so that future runs are not using stale data. + new File(url).deleteOnExit(); + } catch (Exception e) { + Scope.getCurrentScope().getLog(getClass()).warning("Failed to mark SQLite database as delete on exit.", e); + } + } } diff --git a/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml b/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml index 5a0891b40a9..e201673d75e 100644 --- a/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml +++ b/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml @@ -84,7 +84,7 @@ - +