This is an automated email from the ASF dual-hosted git repository. pvary pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push: new f04323f HIVE-22804: Ensure ANSI quotes are used for mysql connections (Zoltan Chovan via Peter Vary) f04323f is described below commit f04323f8e096b5b5b80d73ac50e8c8955936655c Author: Zoltan Chovan <zcho...@cloudera.com> AuthorDate: Wed Feb 5 13:33:49 2020 +0100 HIVE-22804: Ensure ANSI quotes are used for mysql connections (Zoltan Chovan via Peter Vary) --- .../hive/metastore/datasource/BoneCPDataSourceProvider.java | 7 +++++++ .../hive/metastore/datasource/DbCPDataSourceProvider.java | 10 +++++++++- .../hive/metastore/datasource/HikariCPDataSourceProvider.java | 7 +++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java index f3243c5..a64f311 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java @@ -38,6 +38,9 @@ import org.apache.hadoop.hive.metastore.metrics.Metrics; 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 class BoneCPDataSourceProvider implements DataSourceProvider { 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 a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java index 1275e54..6a1ed8f 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java @@ -31,6 +31,9 @@ import org.slf4j.LoggerFactory; 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 class DbCPDataSourceProvider implements DataSourceProvider { // 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 a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java index 7fd78d6..333610d 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java @@ -30,6 +30,9 @@ import javax.sql.DataSource; 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 class HikariCPDataSourceProvider implements DataSourceProvider { 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);