diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java index 262eaa24c1..2cebe72e82 100644 --- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java +++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java @@ -1558,6 +1558,6 @@ public static void main(String[] args) { System.exit(1); } System.out.println("schemaTool completed"); - + System.exit(0); } } diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index b24bef5095..e8e9433b24 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -4708,6 +4708,18 @@ public void verifyAndSet(String name, String value) throws IllegalArgumentExcept } } } + + public void setConfValue(String name, String value) throws IllegalArgumentException { + String oldValue = name != null ? get(name) : null; + if (name == null || value == null || !value.equals(oldValue)) { + // When either name or value is null, the set method below will fail, + // and throw IllegalArgumentException + set(name, value); + if (isSparkRelatedConfig(name)) { + isSparkConfigUpdated = true; + } + } + } public boolean isHiddenConfig(String name) { return Iterables.any(hiddenSet, hiddenVar -> name.startsWith(hiddenVar)); diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 30b6daf8f9..c8fe1e69c5 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -202,7 +202,7 @@ public HiveConnection(String uri, Properties info) throws SQLException { if (isEmbeddedMode) { EmbeddedThriftBinaryCLIService embeddedClient = new EmbeddedThriftBinaryCLIService(); - embeddedClient.init(null); + embeddedClient.init(null, connParams.getHiveConfs()); client = embeddedClient; // open client session diff --git a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java index accba808c3..e9f863e3ef 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java @@ -18,6 +18,8 @@ package org.apache.hive.service.cli.thrift; +import java.util.Map; + import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hive.service.cli.CLIService; import org.apache.hive.service.cli.ICLIService; @@ -46,6 +48,28 @@ public synchronized void init(HiveConf hiveConf) { cliService.start(); super.init(hiveConf); } + + public synchronized void init(HiveConf hiveConf, Map confOverlay) { + // Null HiveConf is passed in jdbc driver side code since driver side is supposed to be + // independent of conf object. Create new HiveConf object here in this case. + if (hiveConf == null) { + hiveConf = new HiveConf(); + } + // Set the specific parameters if needed + if (confOverlay != null && !confOverlay.isEmpty()) { + // apply overlay query specific settings, if any + for (Map.Entry confEntry : confOverlay.entrySet()) { + try { + hiveConf.setConfValue(confEntry.getKey(), confEntry.getValue()); + } catch (IllegalArgumentException e) { + throw new RuntimeException("Error applying statement specific settings", e); + } + } + } + cliService.init(hiveConf); + cliService.start(); + super.init(hiveConf); + } public ICLIService getService() { return cliService; diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/tools/HiveSchemaHelper.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/tools/HiveSchemaHelper.java index 70746e8e13..aa554a6f5d 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/tools/HiveSchemaHelper.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/tools/HiveSchemaHelper.java @@ -44,7 +44,7 @@ public static final String DB_MYSQL = "mysql"; public static final String DB_POSTGRACE = "postgres"; public static final String DB_ORACLE = "oracle"; - public static final String EMBEDDED_HS2_URL = "jdbc:hive2://"; + public static final String EMBEDDED_HS2_URL = "jdbc:hive2://?hive.security.authorization.enabled=false"; public static final String HIVE_JDBC_DRIVER = "org.apache.hive.jdbc.HiveDriver";