@Override public void init(DatabaseMetaData metaData) throws SQLException { checkDbVersion(metaData, MIN_SUPPORTED_VERSION); checkDriverVersion(metaData); }
@Override public void init(DatabaseMetaData metaData) throws SQLException { checkDbVersion(metaData, MIN_SUPPORTED_VERSION); } }
private static Optional<Dialect> findById(String dialectId) { return findDialect(dialect -> dialect != null && dialect.getId().equals(dialectId)); }
@Test public void drop_index_in_table() { verifySql(new H2(), "DROP INDEX IF EXISTS issues_key"); verifySql(new MsSql(), "DROP INDEX issues_key ON issues"); verifySql(new MySql(), "DROP INDEX issues_key ON issues"); verifySql(new Oracle(), "DROP INDEX issues_key"); verifySql(new PostgreSql(), "DROP INDEX IF EXISTS issues_key"); }
@Override public String generateSqlType(Dialect dialect) { switch (dialect.getId()) { case MsSql.ID: return format("NVARCHAR (%d)", columnSize); case Oracle.ID: return format("VARCHAR2 (%d%s)", columnSize, ignoreOracleUnit ? "" : " CHAR"); default: return format("VARCHAR (%d)", columnSize); } }
private static Optional<Dialect> findByJdbcUrl(String jdbcConnectionUrl) { return findDialect(dialect -> dialect != null && dialect.matchesJdbcUrl(StringUtils.trimToEmpty(jdbcConnectionUrl))); }
@Test(expected = MessageException.class) public void testFindNoMatch() { DialectUtils.find("foo", "bar"); } }
public Dialect getDialect() { return new H2(); }
@Test public void init_does_not_fail_if_mysql_5_6() throws Exception { DatabaseMetaData metadata = newMetadata( 5, 6); underTest.init(metadata); }
@Test public void init_does_not_fail_if_mssql_2014() throws Exception { DatabaseMetaData metadata = newMetadata( 12, 0); underTest.init(metadata); }
@Test public void init_throws_ISE_if_called_twice() throws Exception { DatabaseMetaData metaData = newMetadata(9, 5); underTest.init(metaData); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("onInit() must be called once"); underTest.init(metaData); }
@Test public void generate_sql_type() { TimestampColumnDef def = newTimestampColumnDefBuilder() .setColumnName("created_at") .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("TIMESTAMP"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("TIMESTAMP"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("DATETIME"); assertThat(def.generateSqlType(new MySql())).isEqualTo("DATETIME"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("TIMESTAMP (6)"); }
@Test public void init_throws_MessageException_if_mysql_5_5() throws Exception { expectedException.expect(MessageException.class); expectedException.expectMessage("Unsupported mysql version: 5.5. Minimal supported version is 5.6."); DatabaseMetaData metadata = newMetadata( 5, 5); underTest.init(metadata); }
@Test public void init_throws_MessageException_if_mssql_2012() throws Exception { expectedException.expect(MessageException.class); expectedException.expectMessage("Unsupported mssql version: 11.0. Minimal supported version is 12.0."); DatabaseMetaData metadata = newMetadata( 11, 0); underTest.init(metadata); }
@Test public void postgresql_9_2_is_not_supported() throws Exception { expectedException.expect(MessageException.class); expectedException.expectMessage("Unsupported postgresql version: 9.2. Minimal supported version is 9.3."); DatabaseMetaData metadata = newMetadata( 9, 2); underTest.init(metadata); }
@Test public void generate_sql_type() { BigIntegerColumnDef def = new BigIntegerColumnDef.Builder() .setColumnName("issues") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER (38)"); }
@Test public void generate_sql_type() { BooleanColumnDef def = new BooleanColumnDef.Builder() .setColumnName("enabled") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("BOOLEAN"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BOOLEAN"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(1)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(1)"); }
@Test public void generate_sql_type() { TinyIntColumnDef def = new TinyIntColumnDef.Builder() .setColumnName("foo") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("TINYINT"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("SMALLINT"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("TINYINT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(2)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(3)"); }
@Test public void generate_sql_type() { VarcharColumnDef def = new VarcharColumnDef.Builder() .setColumnName("issues") .setLimit(10) .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("VARCHAR (10)"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("VARCHAR (10)"); assertThat(def.generateSqlType(new MySql())).isEqualTo("VARCHAR (10)"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("NVARCHAR (10)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("VARCHAR2 (10 CHAR)"); }
@Test public void generate_sql_type() { DecimalColumnDef def = new DecimalColumnDef.Builder() .setColumnName("issues") .setPrecision(30) .setScale(20) .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("DOUBLE"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("NUMERIC (30,20)"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("DECIMAL (30,20)"); assertThat(def.generateSqlType(new MySql())).isEqualTo("DECIMAL (30,20)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMERIC (30,20)"); }