Treat MariaDB type as MySQL

resolved Merge issues on cherry-pick
This commit is contained in:
Glenn Renfro
2019-02-13 15:59:23 -05:00
parent 04fff1055c
commit 52e05f37bd
3 changed files with 20 additions and 9 deletions

View File

@@ -101,10 +101,13 @@ public enum DatabaseType {
* @return DatabaseType for given product name.
* @throws IllegalArgumentException if none is found.
*/
public static DatabaseType fromProductName(String productName){
if(!dbNameMap.containsKey(productName)){
throw new IllegalArgumentException("DatabaseType not found for product name: [" +
productName + "]");
public static DatabaseType fromProductName(String productName) {
if (productName.equals("MariaDB")) {
productName = "MySQL";
}
if (!dbNameMap.containsKey(productName)) {
throw new IllegalArgumentException(
"DatabaseType not found for product name: [" + productName + "]");
}
else{
return dbNameMap.get(productName);

View File

@@ -101,7 +101,7 @@ public class TaskExecutionDaoFactoryBean implements FactoryBean<TaskExecutionDao
this.dao = new JdbcTaskExecutionDao(dataSource, this.tablePrefix);
String databaseType;
try {
databaseType = org.springframework.batch.support.DatabaseType.fromMetaData(dataSource).name();
databaseType = DatabaseType.fromMetaData(dataSource).name();
}
catch (MetaDataAccessException e) {
throw new IllegalStateException(e);

View File

@@ -15,6 +15,7 @@
*/
package org.springframework.cloud.task.repository.support;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.springframework.cloud.task.repository.support.DatabaseType.HSQL;
import static org.springframework.cloud.task.repository.support.DatabaseType.MYSQL;
@@ -39,10 +40,11 @@ public class DatabaseTypeTests {
@Test
public void testFromProductName() {
assertEquals(HSQL, fromProductName("HSQL Database Engine"));
assertEquals(ORACLE, fromProductName("Oracle"));
assertEquals(POSTGRES, fromProductName("PostgreSQL"));
assertEquals(MYSQL, fromProductName("MySQL"));
assertThat(fromProductName("HSQL Database Engine")).isEqualTo(HSQL);
assertThat(fromProductName("Oracle")).isEqualTo(ORACLE);
assertThat(fromProductName("PostgreSQL")).isEqualTo(POSTGRES);
assertThat(fromProductName("MySQL")).isEqualTo(MYSQL);
assertThat(fromProductName("MariaDB")).isEqualTo(MYSQL);
}
@Test(expected = IllegalArgumentException.class)
@@ -74,4 +76,10 @@ public class DatabaseTypeTests {
assertEquals(MYSQL, DatabaseType.fromMetaData(ds));
}
@Test
public void testFromMetaDataForMariaDB() throws Exception {
DataSource ds = TestDBUtils.getMockDataSource("MariaDB");
assertThat(DatabaseType.fromMetaData(ds)).isEqualTo(MYSQL);
}
}