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);
 

Reply via email to