diff --git standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java index f3243c540b..a64f31111c 100644 --- standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java +++ standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java @@ -38,6 +38,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.MYSQL; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.determineDatabaseProduct; + /** * DataSourceProvider for the BoneCP connection pool. */ @@ -80,6 +83,10 @@ public DataSource create(Configuration hdpConfig) throws SQLException { config.setUser(user); config.setPassword(passwd); + if (determineDatabaseProduct(driverUrl) == MYSQL) { + config.setInitSQL("SET @@session.sql_mode=ANSI_QUOTES"); + } + return initMetrics(new BoneCPDataSource(config)); } diff --git standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java index 1275e54948..6a1ed8f4d6 100644 --- standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java +++ standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java @@ -31,6 +31,9 @@ import javax.sql.DataSource; import java.sql.SQLException; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.MYSQL; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.determineDatabaseProduct; + /** * DataSourceProvider for the dbcp connection pool. */ @@ -98,7 +101,12 @@ public DataSource create(Configuration hdpConfig) throws SQLException { // This doesn't get used, but it's still necessary, see // https://git1-us-west.apache.org/repos/asf?p=commons-dbcp.git;a=blob;f=doc/ManualPoolingDataSourceExample.java; // h=f45af2b8481f030b27364e505984c0eef4f35cdb;hb=refs/heads/DBCP_1_5_x_BRANCH - new PoolableConnectionFactory(connFactory, objectPool, null, null, false, true); + PoolableConnectionFactory poolableConnFactory = + new PoolableConnectionFactory(connFactory, objectPool, null, null, false, true); + + if (determineDatabaseProduct(driverUrl) == MYSQL) { + poolableConnFactory.setValidationQuery("SET @@session.sql_mode=ANSI_QUOTES"); + } return new PoolingDataSource(objectPool); } diff --git standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java index 7fd78d6734..333610d13f 100644 --- standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java +++ standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java @@ -30,6 +30,9 @@ import java.sql.SQLException; import java.util.Properties; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.MYSQL; +import static org.apache.hadoop.hive.metastore.DatabaseProduct.determineDatabaseProduct; + /** * DataSourceProvider for the HikariCP connection pool. */ @@ -64,6 +67,10 @@ public DataSource create(Configuration hdpConfig) throws SQLException { config.setJdbcUrl(driverUrl); config.setUsername(user); config.setPassword(passwd); + + if (determineDatabaseProduct(driverUrl) == MYSQL) { + config.setConnectionInitSql("SET @@session.sql_mode=ANSI_QUOTES"); + } //https://github.com/brettwooldridge/HikariCP config.setConnectionTimeout(connectionTimeout);