diff --git a/beeline/src/java/org/apache/hive/beeline/hs2connection/BeelineSiteParser.java b/beeline/src/java/org/apache/hive/beeline/hs2connection/BeelineSiteParser.java index 4c55104da3..95a1b782a6 100644 --- a/beeline/src/java/org/apache/hive/beeline/hs2connection/BeelineSiteParser.java +++ b/beeline/src/java/org/apache/hive/beeline/hs2connection/BeelineSiteParser.java @@ -90,8 +90,9 @@ public Properties getConnectionProperties() throws BeelineSiteParseException { for (Entry kv : conf) { String key = kv.getKey(); if (key.startsWith(BEELINE_CONNECTION_NAMED_JDBC_URL_PREFIX)) { + // using conf.get(key) to help with variable substitution props.setProperty(key.substring(BEELINE_CONNECTION_NAMED_JDBC_URL_PREFIX.length()), - kv.getValue()); + conf.get(key)); } } } catch (Exception e) { @@ -117,7 +118,7 @@ public Properties getConnectionProperties(String propertyValue) throws BeelineSi if (key.startsWith(BEELINE_CONNECTION_NAMED_JDBC_URL_PREFIX) && (propertyValue.equalsIgnoreCase(kv.getValue()))) { props.setProperty(key.substring(BEELINE_CONNECTION_NAMED_JDBC_URL_PREFIX.length()), - kv.getValue()); + conf.get(key)); } } } catch (Exception e) { diff --git a/beeline/src/test/org/apache/hive/beeline/hs2connection/TestBeelineSiteParser.java b/beeline/src/test/org/apache/hive/beeline/hs2connection/TestBeelineSiteParser.java index fc2b44dac9..8fe400123b 100644 --- a/beeline/src/test/org/apache/hive/beeline/hs2connection/TestBeelineSiteParser.java +++ b/beeline/src/test/org/apache/hive/beeline/hs2connection/TestBeelineSiteParser.java @@ -19,8 +19,12 @@ import java.io.File; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Properties; + +import org.apache.hive.common.util.HiveTestUtils; import org.junit.Assert; import org.junit.Test; @@ -38,4 +42,18 @@ public void testConfigLocationPathInEtc() throws Exception { BeelineSiteParser.DEFAULT_BEELINE_SITE_FILE_NAME)); } + + @Test + public void testConnectionURLWithVarSubsitition() throws Exception { + List locations = new ArrayList(); + String beelineSite = HiveTestUtils.getFileFromClasspath(BeelineSiteParser.DEFAULT_BEELINE_SITE_FILE_NAME); + locations.add(beelineSite); + BeelineSiteParser beelineSiteParser = new BeelineSiteParser(locations); + Properties properties = beelineSiteParser.getConnectionProperties(); + Assert.assertEquals("jdbc:hive2://zkhost1:2181,zkhost2:2181,zkhost3:2181/;" + + "serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=myqueue", + properties.get("test"));; + } + + } diff --git a/beeline/src/test/resources/beeline-site.xml b/beeline/src/test/resources/beeline-site.xml new file mode 100644 index 0000000000..578e10fe04 --- /dev/null +++ b/beeline/src/test/resources/beeline-site.xml @@ -0,0 +1,17 @@ + + + + beeline.hs2.jdbc.url.container + jdbc:hive2://zkhost1:2181,zkhost2:2181,zkhost3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 + + + beeline.hs2.jdbc.url.test + ${beeline.hs2.jdbc.url.container}?tez.queue.name=myqueue + + + + beeline.hs2.jdbc.url.default + test + + +