Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade hsqldb from 2.5.2 to 2.7.1 #3400

Merged
merged 17 commits into from Oct 31, 2022
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
ec15c07
Bump hsqldb from 2.5.2 to 2.7.1
dependabot[bot] Oct 24, 2022
6736463
Ignore HSQLDB tests for Java version < 11 as it requires Java 11 .
filipelautert Oct 25, 2022
fe47c9a
Merge branch 'master' into dependabot/maven/org.hsqldb-hsqldb-2.7.1
filipelautert Oct 25, 2022
92d4463
Remove unused HSQLDB imports from groovy tests.
filipelautert Oct 25, 2022
1182224
Replaces HSQLDB by H2 so we can still test cdi on java 8 as hsqldb no…
filipelautert Oct 25, 2022
090e384
Makes sure that we do not touch HSQLDB classes below Java 11
filipelautert Oct 25, 2022
5f2fcef
When having drivers with compiled only for java 11, this method may f…
filipelautert Oct 26, 2022
a058b76
Remove hsqldb from tests on java below 11.
filipelautert Oct 26, 2022
1b43b3e
Replaces hsqldb for h2.
filipelautert Oct 27, 2022
e6f6c37
Replaces hsqldb by h2 for command line test execution - refactors cha…
filipelautert Oct 27, 2022
6d0f9af
Fix Sonar warning.
filipelautert Oct 27, 2022
2c08d43
Merge branch 'master' into dependabot/maven/org.hsqldb-hsqldb-2.7.1
filipelautert Oct 28, 2022
32539ff
Encapsulates Java 11 verification.
filipelautert Oct 28, 2022
e25e1f2
Adds user message advising that the driver they are trying to use is …
filipelautert Oct 28, 2022
3a24db8
Merge branch 'master' into dependabot/maven/org.hsqldb-hsqldb-2.7.1
filipelautert Oct 31, 2022
8100ab4
Merge branch 'master' into dependabot/maven/org.hsqldb-hsqldb-2.7.1
filipelautert Oct 31, 2022
751fe6f
Merge branch 'master' into dependabot/maven/org.hsqldb-hsqldb-2.7.1
filipelautert Oct 31, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -3,11 +3,10 @@
import liquibase.integration.cdi.annotations.LiquibaseType;
import liquibase.resource.ClassLoaderResourceAccessor;
import liquibase.resource.ResourceAccessor;
import org.hsqldb.jdbc.JDBCDataSource;
import org.h2.jdbcx.JdbcDataSource;

import javax.enterprise.inject.Produces;
import javax.sql.DataSource;
import java.sql.SQLException;

/**
* A Test CDI Producer used for testing CDILiquibase
Expand All @@ -28,11 +27,11 @@ public CDILiquibaseConfig createConfig() {

@Produces
@LiquibaseType
public DataSource createDataSource() throws SQLException {
JDBCDataSource ds = new JDBCDataSource();
ds.setDatabase("jdbc:hsqldb:mem:test");
public DataSource createDataSource() {
JdbcDataSource ds = new JdbcDataSource();
ds.setURL("jdbc:h2:mem:test");
ds.setUser("sa");
ds.setPassword("");
ds.setPassword("sa");
return ds;
}

Expand Down
4 changes: 4 additions & 0 deletions liquibase-core/src/main/java/liquibase/util/SystemUtil.java
Expand Up @@ -27,4 +27,8 @@ public static int getJavaMajorVersion() {
}
return majorVersion;
}

public static boolean isAtLeastJava11() {
return getJavaMajorVersion() >= 11;
}
}
@@ -1,10 +1,6 @@
package liquibase.resource

import liquibase.util.StreamUtil
import liquibase.util.StringUtil
import org.hsqldb.types.Charset
import spock.lang.IgnoreIf
import spock.lang.Requires
import spock.lang.Specification
import spock.lang.Unroll

Expand Down
2 changes: 1 addition & 1 deletion liquibase-dist/pom.xml
Expand Up @@ -16,7 +16,7 @@
<deploy.url>https://maven.pkg.github.com/liquibase</deploy.url>

<h2.version>2.1.214</h2.version>
<hsqldb.version>2.5.2</hsqldb.version>
<hsqldb.version>2.7.1</hsqldb.version>
<postgresql.version>42.5.0</postgresql.version>
<mssql.version>11.2.1.jre8</mssql.version>
<mysql.version>8.0.21</mysql.version>
Expand Down
Expand Up @@ -55,7 +55,7 @@ public class TestFilter {
System.out.println(" " + excludeKey + ": " + excludeString);
} else {
//hard code default until we support more
includeString = "db:hsqldb";
includeString = "db:h2";
}

instance = new TestFilter(includeString, excludeString);
Expand Down
Expand Up @@ -148,11 +148,9 @@ protected Driver getDriver(String url) throws SQLException {
try {
Scope.getCurrentScope().getLog(getClass()).fine("Loading driver for " + url);
String driverJar = getDriverJar();
Driver driver;

if (driverJar == null) {
Scope.getCurrentScope().getLog(getClass()).fine("Using driver from standard classloader");
driver = DriverManager.getDriver(url);
return this.getDriverFromUrl(url);
} else {
Scope.getCurrentScope().getLog(getClass()).fine("Using driver from " + driverJar);
Path driverPath = DownloadUtil.downloadMavenArtifact(driverJar);
Expand All @@ -172,16 +170,24 @@ protected Driver getDriver(String url) throws SQLException {
final Method getDriverMethod = isolatedDriverManager.getMethod("getDriver", String.class);

final Driver driverClass = (Driver) getDriverMethod.invoke(null, url);
driver = (Driver) Class.forName(driverClass.getClass().getName(), true, isolatedClassloader).newInstance();
return (Driver) Class.forName(driverClass.getClass().getName(), true, isolatedClassloader).newInstance();
}
return driver;
} catch (SQLException e) {
throw e;
} catch (Exception e) {
throw new UnexpectedLiquibaseException(e);
}
}

private Driver getDriverFromUrl(String url) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Scope.getCurrentScope().getLog(getClass()).fine("Using driver from standard classloader");
try {
return DriverManager.getDriver(url);
} catch (SQLException e) {
Scope.getCurrentScope().getLog(getClass()).fine(String.format("Error '%s' while loading driver for url '%s', last try.", e.getMessage(), url));
String driverClass = DatabaseFactory.getInstance().findDefaultDriver(url);
return (Driver) Class.forName(driverClass).newInstance();
}
}

/**
* Opens a connection with valid permissions for the {@link #setup()} logic.
*/
Expand Down
Expand Up @@ -9,6 +9,7 @@
import liquibase.servicelocator.ServiceLocator;
import liquibase.util.CollectionUtil;
import liquibase.util.StringUtil;
import liquibase.util.SystemUtil;
import org.junit.Assume;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
Expand Down Expand Up @@ -70,6 +71,10 @@ public static List<String> getEnabledTestSystems(String configuredTestSystems, S
List<String> skippedTestSystemsList = CollectionUtil.createIfNull(StringUtil.splitAndTrim(skippedTestSystems, ","));
returnList = returnList.stream().filter(ts -> !skippedTestSystemsList.contains(ts)).collect(Collectors.toList());
}

if (!SystemUtil.isAtLeastJava11()) {
returnList = returnList.stream().filter(ts -> !"hsqldb".equals(ts)).collect(Collectors.toList());
}
return returnList;
}

Expand Down
Expand Up @@ -94,7 +94,9 @@ public abstract class AbstractIntegrationTest {
private String defaultSchemaName;

protected AbstractIntegrationTest(String changelogDir, Database dbms) throws Exception {
this.testSystem = (DatabaseTestSystem) Scope.getCurrentScope().getSingleton(TestSystemFactory.class).getTestSystem(dbms.getShortName());
if (dbms != null) {
this.testSystem = (DatabaseTestSystem) Scope.getCurrentScope().getSingleton(TestSystemFactory.class).getTestSystem(dbms.getShortName());
}

this.completeChangeLog = "changelogs/" + changelogDir + "/complete/root.changelog.xml";
this.rollbackChangeLog = "changelogs/" + changelogDir + "/rollback/rollbackable.changelog.xml";
Expand Down
Expand Up @@ -3,6 +3,8 @@
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.dbtest.AbstractIntegrationTest;
import liquibase.util.SystemUtil;
import org.junit.Assume;

import java.sql.SQLSyntaxErrorException;

Expand All @@ -11,12 +13,13 @@ public class HsqlIntegrationTest extends AbstractIntegrationTest {
public static final String OBJECT_ALREADY_EXISTS = "42504";

public HsqlIntegrationTest() throws Exception {
super("hsqldb", DatabaseFactory.getInstance().getDatabase("hsqldb"));
super("hsqldb", DatabaseFactory.getInstance().getDatabase(SystemUtil.isAtLeastJava11() ? "hsqldb": "none"));
}


@Override
public void setUp() throws Exception {
Assume.assumeTrue(SystemUtil.isAtLeastJava11()) ; // Since HSQLDB 2.7.1 it requires java 11
super.setUp();
try {
// Create schemas for tests testRerunDiffChangeLogAltSchema
Expand Down
Expand Up @@ -250,7 +250,9 @@

<changeSet id="30" author="nvoxland">
<createTable tableName="pkTest">
<column name="id" type="int"/>
<column name="id" type="int">
<constraints nullable="false" />
</column>
<column name="value" type="varchar(50)"/>
</createTable>
</changeSet>
Expand Down
Expand Up @@ -35,8 +35,8 @@ Optional Args:
url : { it.altUrl },
username : { it.altUsername },
password : { it.altPassword },
changesetIdentifier: "changelogs/hsqldb/complete/rollback.tag.changelog.xml::1::nvoxland",
changelogFile : "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changesetIdentifier: "changelogs/h2/complete/rollback.tag.changelog.xml::1::nvoxland",
changelogFile : "changelogs/h2/complete/rollback.tag.changelog.xml"
]

expectedResults = [
Expand All @@ -46,15 +46,15 @@ Optional Args:

run "Run without changelogFile should throw an exception", {
arguments = [
changesetIdentifier: "changelogs/hsqldb/complete/rollback.tag.changelog.xml::1::nvoxland",
changesetIdentifier: "changelogs/h2/complete/rollback.tag.changelog.xml::1::nvoxland",
]

expectedException = CommandValidationException.class
}

run "Run without changesetIdentifier should throw an exception", {
arguments = [
changelogFile : "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile : "changelogs/h2/complete/rollback.tag.changelog.xml"
]

expectedException = CommandValidationException.class
Expand All @@ -63,7 +63,7 @@ Optional Args:
run "Run without URL should throw an exception", {
arguments = [
url: "",
changelogFile : "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile : "changelogs/h2/complete/rollback.tag.changelog.xml"
]

expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -39,7 +39,7 @@ Optional Args:
url : { it.altUrl },
username : { it.altUsername },
password : { it.altPassword },
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]

setup {
Expand Down Expand Up @@ -79,7 +79,7 @@ Optional Args:
run "Run without URL should throw an exception", {
arguments = [
url: "",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]

expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -43,7 +43,7 @@ Optional Args:
url : { it.url },
username: { it.username },
password: { it.password },
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]

setup {
Expand Down Expand Up @@ -85,7 +85,7 @@ Optional Args:
url : { it.url },
username: { it.username },
password: { it.password },
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]

setup {
Expand Down Expand Up @@ -135,7 +135,7 @@ Optional Args:
run "Run without URL should throw an exception", {
arguments = [
url: "",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]

expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -41,7 +41,7 @@ Optional Args:
username: { it.username },
password: { it.password },
tag : "version_2.0",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml"
]


Expand Down Expand Up @@ -89,7 +89,7 @@ Optional Args:

run "Run without a tag should throw an exception", {
arguments = [
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
tag : ""
]
expectedException = CommandValidationException.class
Expand All @@ -105,7 +105,7 @@ Optional Args:
run "Run without a URL should throw an exception", {
arguments = [
url : "",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
tag : "version_2.0"
]
expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -45,7 +45,7 @@ Optional Args:
username: { it.username },
password: { it.password },
tag : "version_2.0",
"changelogFile": "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
"changelogFile": "changelogs/h2/complete/rollback.tag.changelog.xml"
]

setup {
Expand Down Expand Up @@ -88,7 +88,7 @@ Optional Args:
username: { it.username },
password: { it.password },
tag : "version_2.0",
"changelogFile": "changelogs/hsqldb/complete/rollback.tag.changelog.xml"
"changelogFile": "changelogs/h2/complete/rollback.tag.changelog.xml"
]

setup {
Expand Down Expand Up @@ -151,15 +151,15 @@ Optional Args:

run "Run without a tag should throw an exception", {
arguments = [
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
]
expectedException = CommandValidationException.class
}

run "Run without a URL should throw an exception", {
arguments = [
url : "",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
tag : "version_2.0"
]
expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -35,7 +35,7 @@ Optional Args:
username: { it.username },
password: { it.password },
outputDirectory: "target/test-classes",
changelogFile : "changelogs/hsqldb/complete/simple.changelog.xml",
changelogFile : "changelogs/h2/complete/simple.changelog.xml",
]

expectedResults = [
Expand All @@ -45,7 +45,7 @@ Optional Args:

run "Run without an outputDirectory should throw an exception", {
arguments = [
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
outputDirectory: ""
]
expectedException = CommandValidationException.class
Expand All @@ -61,7 +61,7 @@ Optional Args:
run "Run without a URL should throw an exception", {
arguments = [
url : "",
changelogFile: "changelogs/hsqldb/complete/rollback.tag.changelog.xml",
changelogFile: "changelogs/h2/complete/rollback.tag.changelog.xml",
outputDirectory: "version_2.0"
]
expectedException = CommandValidationException.class
Expand Down
Expand Up @@ -21,7 +21,7 @@ Optional Args:
changelogFile: "simple.changelog.with.id-test.xml",
]
setup {
createTempResource "changelogs/hsqldb/complete/simple.changelog.xml", "simple.changelog.with.id-test.xml"
createTempResource "changelogs/h2/complete/simple.changelog.xml", "simple.changelog.with.id-test.xml"
modifyChangeLogId "simple.changelog.with.id-test.xml", MockHubService.alreadyRegisteredUUID.toString()
}
expectedResults = [
Expand All @@ -38,7 +38,7 @@ Optional Args:

run "Run against a changeLogFile with no changeLogId should throw an exception", {
arguments = [
changelogFile: "changelogs/hsqldb/complete/simple.changelog.xml",
changelogFile: "changelogs/h2/complete/simple.changelog.xml",
]
expectedException = CommandExecutionException.class
}
Expand All @@ -48,7 +48,7 @@ Optional Args:
changelogFile: "simple.changelog.xml"
]
setup {
createTempResource "changelogs/hsqldb/complete/simple.changelog.xml", "simple.changelog.xml"
createTempResource "changelogs/h2/complete/simple.changelog.xml", "simple.changelog.xml"
modifyChangeLogId "simple.changelog.xml", UUID.randomUUID().toString()
}
expectedUI = "has a changelog ID but was not found in Hub"
Expand Down
Expand Up @@ -292,7 +292,7 @@ Changed Column(s): NONE
Pattern.compile(".*Missing Table.s.*SECONDARYTABLE.*Unexpected Table.s.*PRIMARYTABLE.*Changed Table.s.*NONE", PATTERN_FLAGS),
Pattern.compile(".*Missing Column.s.*SECONDARYTABLE.ID.*SHAREDTABLE.NAME.*", PATTERN_FLAGS),
Pattern.compile(".*Unexpected Column.s.*PRIMARYTABLE.ID.*SHAREDTABLE.ID.*Changed Column.s.*", PATTERN_FLAGS),
Pattern.compile(".*SHAREDTABLE.SHARED.*type changed from .VARCHAR.3.*to .VARCHAR.255.*", PATTERN_FLAGS)
Pattern.compile(".*SHAREDTABLE.SHARED.*type changed from .CHARACTER VARYING.3.*to .CHARACTER VARYING.255.*", PATTERN_FLAGS)
]
}

Expand Down