public boolean isGreaterThanOrEqual(Version than) { return this.compareTo(than) >= 0; }
@Override public void init(DatabaseMetaData metaData) throws SQLException { checkState(!initialized, "onInit() must be called once"); Version version = checkDbVersion(metaData, MIN_SUPPORTED_VERSION); supportsUpsert = version.compareTo(MIN_UPSERT_VERSION) >= 0; if (!supportsUpsert) { Loggers.get(getClass()).warn("Upgrading PostgreSQL to {} or greater is recommended for better performances", MIN_UPSERT_VERSION); } initialized = true; } }
Version checkDbVersion(DatabaseMetaData metaData, Version minSupported) throws SQLException { int major = metaData.getDatabaseMajorVersion(); int minor = metaData.getDatabaseMinorVersion(); Version version = Version.create(major, minor, 0); if (version.compareTo(minSupported) < 0) { throw MessageException.of(String.format( "Unsupported %s version: %s. Minimal supported version is %s.", getId(), version, minSupported)); } return version; } }
@Test public void test_compareTo() { assertThat(parse("1.2").compareTo(parse("1.2.0"))).isEqualTo(0); assertThat(parse("1.2.3").compareTo(parse("1.2.3"))).isEqualTo(0); assertThat(parse("1.2.3").compareTo(parse("1.2.4"))).isLessThan(0); assertThat(parse("1.2.3").compareTo(parse("1.3"))).isLessThan(0); assertThat(parse("1.2.3").compareTo(parse("2.1"))).isLessThan(0); assertThat(parse("1.2.3").compareTo(parse("2.0.0"))).isLessThan(0); assertThat(parse("2.0").compareTo(parse("1.2"))).isGreaterThan(0); }
@Test public void compareTo_handles_build_number() { assertThat(parse("1.2").compareTo(parse("1.2.0.0"))).isEqualTo(0); assertThat(parse("1.2.3.1234").compareTo(parse("1.2.3.4567"))).isLessThan(0); assertThat(parse("1.2.3.1234").compareTo(parse("1.2.3"))).isGreaterThan(0); assertThat(parse("1.2.3.1234").compareTo(parse("1.2.4"))).isLessThan(0); assertThat(parse("1.2.3.9999").compareTo(parse("1.2.4.1111"))).isLessThan(0); }
@Test public void qualifier_is_ignored_from_comparison() { assertThat(parse("1.2.3")).isEqualTo(parse("1.2.3-build1")); assertThat(parse("1.2.3")).isEqualTo(parse("1.2.3-build1")); assertThat(parse("1.2.3").compareTo(parse("1.2.3-build1"))).isEqualTo(0); }
public boolean isGreaterThanOrEqual(Version than) { return this.compareTo(than) >= 0; }
@Override public void init(DatabaseMetaData metaData) throws SQLException { checkState(!initialized, "onInit() must be called once"); Version version = checkDbVersion(metaData, MIN_SUPPORTED_VERSION); supportsUpsert = version.compareTo(MIN_UPSERT_VERSION) >= 0; if (!supportsUpsert) { Loggers.get(getClass()).warn("Upgrading PostgreSQL to {} or greater is recommended for better performances", MIN_UPSERT_VERSION); } initialized = true; } }
Version checkDbVersion(DatabaseMetaData metaData, Version minSupported) throws SQLException { int major = metaData.getDatabaseMajorVersion(); int minor = metaData.getDatabaseMinorVersion(); Version version = Version.create(major, minor, 0); if (version.compareTo(minSupported) < 0) { throw MessageException.of(String.format( "Unsupported %s version: %s. Minimal supported version is %s.", getId(), version, minSupported)); } return version; } }
private void checkMinDatabaseVersion() throws SQLException { Version minDbVersion = MINIMAL_SUPPORTED_DB_VERSIONS.get(db.getDialect().getId()); if (minDbVersion != null) { try (Connection connection = db.getDataSource().getConnection()) { int dbMajorVersion = connection.getMetaData().getDatabaseMajorVersion(); int dbMinorVersion = connection.getMetaData().getDatabaseMinorVersion(); Version dbVersion = Version.create(dbMajorVersion, dbMinorVersion, 0); if (dbVersion.compareTo(minDbVersion) < 0) { throw MessageException.of(String.format( "Unsupported %s version: %s. Minimal supported version is %s.", db.getDialect().getId(), dbVersion, minDbVersion)); } } } }