Skip to content

Commit

Permalink
Simplified nullType logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Axel Fontaine committed Feb 17, 2018
1 parent 440db19 commit 569c348
Show file tree
Hide file tree
Showing 31 changed files with 183 additions and 150 deletions.
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ Contribute

So you've got an awesome idea to throw into Flyway. Great! Please keep the following in mind:

* **Use http://stackoverflow.com/questions/tagged/flyway for indirect Flyway questions that are not bugs.**
* **Contributions will not be accepted without tests or necessary documentation updates.**
* Make sure to read https://flywaydb.org/documentation/contribute/ first
* **Use http://stackoverflow.com/questions/tagged/flyway for Flyway questions that are not bugs.**
* **Contributions must include the necessary documentation updates.**
* **Make sure to read https://flywaydb.org/documentation/contribute/ first**
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,16 @@ public JdbcTemplate getJdbcTemplate() {

@Override
public void close() {
restoreOriginalState();
JdbcUtils.closeConnection(jdbcConnection);
}

/**
* Restores this connection to its original state.
*/
protected void restoreOriginalState() {
}

public java.sql.Connection getJdbcConnection() {
return jdbcConnection;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,15 @@ public abstract class Database<C extends Connection> implements Closeable {
*/
protected final DatabaseMetaData jdbcMetaData;

/**
* The main JDBC connection to use.
*/
private final java.sql.Connection mainJdbcConnection;

/**
* The main connection to use.
*/
protected final C mainConnection;
protected C mainConnection;

/**
* The connection to use for migrations.
Expand All @@ -62,11 +67,6 @@ public abstract class Database<C extends Connection> implements Closeable {



/**
* The type to assign to a null value.
*/
private final int nullType;

/**
* The major version of the database.
*/
Expand All @@ -82,43 +82,35 @@ public abstract class Database<C extends Connection> implements Closeable {
*
* @param configuration The Flyway configuration.
* @param connection The main connection to use.
* @param nullType The type to assign to a null value.
*/
public Database(FlywayConfiguration configuration, java.sql.Connection connection, int nullType
public Database(FlywayConfiguration configuration, java.sql.Connection connection



) {
this.configuration = configuration;
this.mainJdbcConnection = connection;
try {
this.jdbcMetaData = connection.getMetaData();
} catch (SQLException e) {
throw new FlywaySqlException("Unable to get metadata for connection", e);
}
this.mainConnection = getConnection(connection, nullType



);
this.nullType = nullType;




Pair<Integer, Integer> majorMinor = determineMajorAndMinorVersion();
majorVersion = majorMinor.getLeft();
minorVersion = majorMinor.getRight();
ensureSupported();
}

/**
* Retrieves a Flyway Connection for this JDBC connection.
*
* @param connection The JDBC connection to wrap.
* @param nullType The JDBC type to assign to a null value.
* @return The Flyway Connection.
*/
protected abstract C getConnection(java.sql.Connection connection, int nullType
protected abstract C getConnection(java.sql.Connection connection



Expand Down Expand Up @@ -284,6 +276,13 @@ public DatabaseMetaData getJdbcMetaData() {
* @return The main connection, used to manipulate the schema history.
*/
public final C getMainConnection() {
if (mainConnection == null) {
this.mainConnection = getConnection(mainJdbcConnection



);
}
return mainConnection;
}

Expand All @@ -294,7 +293,7 @@ public final C getMigrationConnection() {
if (migrationConnection == null) {
this.migrationConnection = useSingleConnection()
? mainConnection
: getConnection(JdbcUtils.openConnection(configuration.getDataSource()), nullType
: getConnection(JdbcUtils.openConnection(configuration.getDataSource())



Expand Down Expand Up @@ -366,6 +365,8 @@ public void close() {
if (!useSingleConnection() && migrationConnection != null) {
migrationConnection.close();
}
mainConnection.close();
if (mainConnection != null) {
mainConnection.close();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,20 @@ public static Database createDatabase(FlywayConfiguration configuration, boolean
LOG.info("Database: " + getJdbcUrl(connection) + " (" + databaseProductName + ")");
}

Database database = createDatabase(configuration, connection, databaseProductName



);
database.ensureSupported();
return database;
}

private static Database createDatabase(FlywayConfiguration configuration, Connection connection, String databaseProductName



) {
if (databaseProductName.startsWith("Apache Derby")) {
return new DerbyDatabase(configuration, connection

Expand Down Expand Up @@ -175,7 +189,6 @@ public static Database createDatabase(FlywayConfiguration configuration, boolean

);
}

throw new FlywayException("Unsupported Database: " + databaseProductName);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,19 @@
import org.flywaydb.core.internal.util.StringUtils;

import java.sql.SQLException;
import java.sql.Types;

/**
* CockroachDB connection.
*/
public class CockroachDBConnection extends Connection<CockroachDBDatabase> {
CockroachDBConnection(FlywayConfiguration configuration, CockroachDBDatabase database,
java.sql.Connection connection, int nullType
java.sql.Connection connection



) {
super(configuration, database, connection, nullType
super(configuration, database, connection, Types.NULL



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,11 @@

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

/**
* CockroachDB database.
*/
public class CockroachDBDatabase extends Database {
public class CockroachDBDatabase extends Database<CockroachDBConnection> {
/**
* Checks whether this connection is pointing at a CockroachDB instance.
*
Expand All @@ -59,20 +58,20 @@ public CockroachDBDatabase(FlywayConfiguration configuration, Connection connect


) {
super(configuration, connection, Types.NULL
super(configuration, connection



);
}

@Override
protected org.flywaydb.core.internal.database.Connection getConnection(Connection connection, int nullType
protected CockroachDBConnection getConnection(Connection connection



) {
return new CockroachDBConnection(configuration, this, connection, nullType
return new CockroachDBConnection(configuration, this, connection



Expand Down Expand Up @@ -107,9 +106,9 @@ protected SqlScript doCreateSqlScript(Resource sqlScriptResource, String sqlScri
protected Pair<Integer, Integer> determineMajorAndMinorVersion() {
String version;
try {
version = mainConnection.getJdbcTemplate().queryForString("SELECT value FROM crdb_internal.node_build_info where field='Version'");
version = getMainConnection().getJdbcTemplate().queryForString("SELECT value FROM crdb_internal.node_build_info where field='Version'");
if (version == null) {
version = mainConnection.getJdbcTemplate().queryForString("SELECT value FROM crdb_internal.node_build_info where field='Tag'");
version = getMainConnection().getJdbcTemplate().queryForString("SELECT value FROM crdb_internal.node_build_info where field='Tag'");
}
} catch (SQLException e) {
throw new FlywaySqlException("Unable to determine CockroachDB version", e);
Expand All @@ -127,7 +126,7 @@ public String getDbName() {

@Override
protected String doGetCurrentUser() throws SQLException {
return mainConnection.getJdbcTemplate().queryForString("(SELECT * FROM [SHOW SESSION_USER])");
return getMainConnection().getJdbcTemplate().queryForString("(SELECT * FROM [SHOW SESSION_USER])");
}

public boolean supportsDdlTransactions() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,18 @@
import org.flywaydb.core.internal.database.Schema;

import java.sql.SQLException;
import java.sql.Types;

/**
* DB2 connection.
*/
public class DB2Connection extends Connection<DB2Database> {
DB2Connection(FlywayConfiguration configuration, DB2Database database, java.sql.Connection connection, int nullType
DB2Connection(FlywayConfiguration configuration, DB2Database database, java.sql.Connection connection



) {
super(configuration, database, connection, nullType
super(configuration, database, connection, Types.VARCHAR



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

/**
* DB2 database.
*/
public class DB2Database extends Database {
public class DB2Database extends Database<DB2Connection> {
/**
* Creates a new instance.
*
Expand All @@ -41,20 +40,20 @@ public DB2Database(FlywayConfiguration configuration, Connection connection


) {
super(configuration, connection, Types.VARCHAR
super(configuration, connection



);
}

@Override
protected org.flywaydb.core.internal.database.Connection getConnection(Connection connection, int nullType
protected DB2Connection getConnection(Connection connection



) {
return new DB2Connection(configuration, this, connection, nullType
return new DB2Connection(configuration, this, connection



Expand Down Expand Up @@ -124,7 +123,7 @@ public String getDbName() {

@Override
protected String doGetCurrentUser() throws SQLException {
return mainConnection.getJdbcTemplate().queryForString("select CURRENT_USER from sysibm.sysdummy1");
return getMainConnection().getJdbcTemplate().queryForString("select CURRENT_USER from sysibm.sysdummy1");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,18 @@
import org.flywaydb.core.internal.database.Schema;

import java.sql.SQLException;
import java.sql.Types;

/**
* Derby connection.
*/
public class DerbyConnection extends Connection<DerbyDatabase> {
DerbyConnection(FlywayConfiguration configuration, DerbyDatabase database, java.sql.Connection connection, int nullType
DerbyConnection(FlywayConfiguration configuration, DerbyDatabase database, java.sql.Connection connection



) {
super(configuration, database, connection, nullType
super(configuration, database, connection, Types.VARCHAR



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

/**
* Derby database.
*/
public class DerbyDatabase extends Database {
public class DerbyDatabase extends Database<DerbyConnection> {
/**
* Creates a new instance.
*
Expand All @@ -41,20 +40,20 @@ public DerbyDatabase(FlywayConfiguration configuration, Connection connection


) {
super(configuration, connection, Types.VARCHAR
super(configuration, connection



);
}

@Override
protected org.flywaydb.core.internal.database.Connection getConnection(Connection connection, int nullType
protected DerbyConnection getConnection(Connection connection



) {
return new DerbyConnection(configuration, this, connection, nullType
return new DerbyConnection(configuration, this, connection



Expand Down Expand Up @@ -90,7 +89,7 @@ public String getDbName() {

@Override
protected String doGetCurrentUser() throws SQLException {
return mainConnection.getJdbcTemplate().queryForString("SELECT CURRENT_USER FROM SYSIBM.SYSDUMMY1");
return getMainConnection().getJdbcTemplate().queryForString("SELECT CURRENT_USER FROM SYSIBM.SYSDUMMY1");
}

@Override
Expand Down
Loading

0 comments on commit 569c348

Please sign in to comment.