You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/09/28 03:10:21 UTC

[01/33] hive git commit: HIVE-10624: Update the initial script to make beeline bucked cli as default and allow user choose old hive cli by env (Ferdinand via Xuefu)

Repository: hive
Updated Branches:
  refs/heads/master 02121a872 -> e570e4f0c


HIVE-10624: Update the initial script to make beeline bucked cli as default and allow user choose old hive cli by env (Ferdinand via Xuefu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/2ddd86de
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/2ddd86de
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/2ddd86de

Branch: refs/heads/master
Commit: 2ddd86de5e005eb0457cc8bf0da47aa6c4d99c27
Parents: 9bc1b3b
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Sat May 9 03:58:25 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Sat May 9 03:58:25 2015 -0700

----------------------------------------------------------------------
 bin/ext/cli.sh              | 21 +++++++++++++++------
 bin/ext/util/execHiveCmd.sh |  6 ++++--
 2 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/2ddd86de/bin/ext/cli.sh
----------------------------------------------------------------------
diff --git a/bin/ext/cli.sh b/bin/ext/cli.sh
index 914aae3..733705a 100644
--- a/bin/ext/cli.sh
+++ b/bin/ext/cli.sh
@@ -16,13 +16,22 @@
 THISSERVICE=cli
 export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} "
 
+updateCli() {
+  if [ $USE_DEPRECATED_CLI == "true" ]; then
+    CLASS=org.apache.hadoop.hive.cli.CliDriver
+    JAR=hive-cli-*.jar
+  else
+    CLASS=org.apache.hive.beeline.cli.HiveCli
+    JAR=hive-beeline-*.jar
+  fi
+}
+
 cli () {
-  CLASS=org.apache.hadoop.hive.cli.CliDriver
-  execHiveCmd $CLASS "$@"
+  updateCli
+  execHiveCmd $CLASS $JAR "$@"
 }
 
 cli_help () {
-  CLASS=org.apache.hadoop.hive.cli.CliDriver
-  execHiveCmd $CLASS "--help"
-} 
-
+  updateCli
+  execHiveCmd $CLASS $JAR "--help"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/2ddd86de/bin/ext/util/execHiveCmd.sh
----------------------------------------------------------------------
diff --git a/bin/ext/util/execHiveCmd.sh b/bin/ext/util/execHiveCmd.sh
index 167cc40..e46ec3c 100644
--- a/bin/ext/util/execHiveCmd.sh
+++ b/bin/ext/util/execHiveCmd.sh
@@ -16,9 +16,11 @@
 execHiveCmd () {
   CLASS=$1;
   shift;
+  JAR=$1
+  shift;
 
   # cli specific code
-  if [ ! -f ${HIVE_LIB}/hive-cli-*.jar ]; then
+  if [ ! -f ${HIVE_LIB}/$JAR ]; then
     echo "Missing Hive CLI Jar"
     exit 3;
   fi
@@ -28,5 +30,5 @@ execHiveCmd () {
   fi
 
   # hadoop 20 or newer - skip the aux_jars option. picked up from hiveconf
-  exec $HADOOP jar ${HIVE_LIB}/hive-cli-*.jar $CLASS $HIVE_OPTS "$@"
+  exec $HADOOP jar ${HIVE_LIB}/$JAR $CLASS $HIVE_OPTS "$@"
 }


[09/33] hive git commit: Merge branch 'master' into beeline-cli

Posted by xu...@apache.org.
Merge branch 'master' into beeline-cli


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/00e0d55a
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/00e0d55a
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/00e0d55a

Branch: refs/heads/master
Commit: 00e0d55a8bab27c82655e1aa237138847fd964b3
Parents: 2243de3 2a77e87
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Thu Jun 25 20:40:55 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Thu Jun 25 20:40:55 2015 -0700

----------------------------------------------------------------------
 NOTICE                                          |    2 +-
 README.txt                                      |   36 +-
 RELEASE_NOTES.txt                               | 1020 ++-
 accumulo-handler/pom.xml                        |    2 +-
 .../accumulo/AccumuloConnectionParameters.java  |  111 +-
 .../hive/accumulo/AccumuloStorageHandler.java   |   50 +
 .../hive/accumulo/HiveAccumuloHelper.java       |  280 +
 .../mr/HiveAccumuloTableInputFormat.java        |   74 +-
 .../mr/HiveAccumuloTableOutputFormat.java       |   63 +-
 .../TestAccumuloConnectionParameters.java       |   19 +
 .../hive/accumulo/TestHiveAccumuloHelper.java   |   75 +
 .../mr/TestHiveAccumuloTableInputFormat.java    |    8 +-
 .../mr/TestHiveAccumuloTableOutputFormat.java   |    2 +-
 .../positive/accumulo_predicate_pushdown.q.out  |   76 +-
 .../results/positive/accumulo_queries.q.out     |   70 +-
 ant/pom.xml                                     |    2 +-
 .../apache/hadoop/hive/ant/QTestGenTask.java    |   37 +-
 beeline/pom.xml                                 |    8 +-
 .../java/org/apache/hive/beeline/BeeLine.java   |    2 +-
 .../org/apache/hive/beeline/BeeLineOpts.java    |    9 +
 .../java/org/apache/hive/beeline/Commands.java  |   18 +-
 .../apache/hive/beeline/HiveSchemaHelper.java   |    1 -
 .../org/apache/hive/beeline/HiveSchemaTool.java |    3 +
 .../hive/beeline/TestBeelineArgParsing.java     |   32 +-
 .../test/resources/DummyDriver-1.0-SNAPSHOT.jar |  Bin 2812 -> 0 bytes
 beeline/src/test/resources/DummyDriver.txt      |   59 +
 .../src/test/resources/postgresql-9.3.jdbc3.jar |  Bin 539003 -> 0 bytes
 bin/ext/hiveserver2.cmd                         |   51 +-
 bin/hive.cmd                                    |    2 +-
 cli/pom.xml                                     |    2 +-
 common/pom.xml                                  |   22 +-
 .../hadoop/hive/common/JvmPauseMonitor.java     |  229 +
 .../hive/common/jsonexplain/tez/Attr.java       |    6 +-
 .../hive/common/jsonexplain/tez/Connection.java |    6 +-
 .../hadoop/hive/common/jsonexplain/tez/Op.java  |   64 +-
 .../hive/common/jsonexplain/tez/Printer.java    |   41 +
 .../hive/common/jsonexplain/tez/Stage.java      |   95 +-
 .../common/jsonexplain/tez/TezJsonParser.java   |   63 +-
 .../hive/common/jsonexplain/tez/Vertex.java     |   75 +-
 .../hive/common/metrics/LegacyMetrics.java      |  229 +
 .../hadoop/hive/common/metrics/Metrics.java     |  253 -
 .../hive/common/metrics/common/Metrics.java     |   64 +
 .../common/metrics/common/MetricsFactory.java   |   62 +
 .../metrics/metrics2/CodahaleMetrics.java       |  347 +
 .../metrics/metrics2/MetricsReporting.java      |   27 +
 .../org/apache/hadoop/hive/conf/HiveConf.java   |   93 +-
 .../hive/conf/LoopingByteArrayInputStream.java  |    2 +-
 .../apache/hive/common/util/HiveTestUtils.java  |   46 +
 .../hive/common/metrics/TestLegacyMetrics.java  |  295 +
 .../hadoop/hive/common/metrics/TestMetrics.java |  286 -
 .../metrics/metrics2/TestCodahaleMetrics.java   |  138 +
 .../hive/common/type/TestHiveBaseChar.java      |    2 +-
 .../hive/common/type/TestHiveVarchar.java       |   22 +-
 contrib/pom.xml                                 |    2 +-
 .../util/typedbytes/TypedBytesInput.java        |    2 +-
 .../util/typedbytes/TypedBytesOutput.java       |    2 +-
 .../util/typedbytes/TypedBytesRecordInput.java  |    2 +-
 .../util/typedbytes/TypedBytesRecordOutput.java |    2 +-
 .../typedbytes/TypedBytesWritableInput.java     |    2 +-
 .../typedbytes/TypedBytesWritableOutput.java    |    2 +-
 .../test/results/clientpositive/url_hook.q.out  |    4 +
 data/conf/spark/standalone/hive-site.xml        |    6 +
 data/conf/spark/yarn-client/hive-site.xml       |    6 +
 data/files/ct_events_clean.txt                  |   76 +
 data/files/customers.txt                        |    3 +
 data/files/emp2.txt                             |   16 +
 data/files/nested_orders.txt                    |    8 +
 data/files/orders.txt                           |    8 +
 data/files/service_request_clean.txt            |   76 +
 data/files/sortdp.txt                           |   32 +
 data/files/store_200                            |   12 +
 data/files/vectortab_a_1k                       | 1000 +++
 data/files/vectortab_b_1k                       | 1000 +++
 data/scripts/q_test_cleanup.sql                 |    2 +-
 data/scripts/q_test_cleanup_for_encryption.sql  |    2 +-
 data/scripts/q_test_init_for_encryption.sql     |    2 +-
 dev-support/jenkins-submit-build.sh             |   14 +-
 hbase-handler/pom.xml                           |    2 +-
 .../hive/hbase/HBaseTestStructSerializer.java   |   20 +-
 .../results/positive/external_table_ppd.q.out   |    8 +-
 .../results/positive/hbase_custom_key2.q.out    |   18 +-
 .../results/positive/hbase_custom_key3.q.out    |   24 +-
 .../results/positive/hbase_ppd_key_range.q.out  |   76 +-
 .../test/results/positive/hbase_pushdown.q.out  |   68 +-
 .../test/results/positive/hbase_queries.q.out   |   42 +-
 .../test/results/positive/hbase_timestamp.q.out |   32 +-
 .../test/results/positive/ppd_key_ranges.q.out  |   32 +-
 hcatalog/core/pom.xml                           |    2 +-
 .../hive/hcatalog/common/HCatException.java     |    2 +-
 .../data/HCatRecordObjectInspectorFactory.java  |    2 +-
 .../hcatalog/data/schema/HCatFieldSchema.java   |    6 +-
 .../hive/hcatalog/mapreduce/OutputJobInfo.java  |    2 +-
 .../hive/hcatalog/data/TestJsonSerDe.java       |    2 +-
 hcatalog/hcatalog-pig-adapter/pom.xml           |    2 +-
 .../apache/hive/hcatalog/pig/HCatLoader.java    |    8 -
 .../hive/hcatalog/pig/TestHCatLoader.java       |   44 -
 .../hcatalog/pig/TestHCatLoaderEncryption.java  |   27 +-
 hcatalog/pom.xml                                |    2 +-
 hcatalog/server-extensions/pom.xml              |    9 +-
 .../src/test/e2e/templeton/inpdir/xmlmapper.py  |   15 +
 .../src/test/e2e/templeton/inpdir/xmlreducer.py |   16 +
 .../tests/jobsubmission_streaming.conf          |    2 +-
 hcatalog/streaming/pom.xml                      |    2 +-
 .../streaming/DelimitedInputWriter.java         |    2 +-
 .../hive/hcatalog/streaming/HiveEndPoint.java   |    2 +-
 .../hive/hcatalog/streaming/TestStreaming.java  |    2 +-
 hcatalog/webhcat/java-client/pom.xml            |    2 +-
 .../hive/hcatalog/api/TestHCatClient.java       |    2 +-
 hcatalog/webhcat/svr/pom.xml                    |    2 +-
 .../hive/hcatalog/templeton/AppConfig.java      |    2 +
 .../hive/hcatalog/templeton/HcatDelegator.java  |    4 +-
 .../hive/hcatalog/templeton/HiveDelegator.java  |   15 +-
 .../hive/hcatalog/templeton/JarDelegator.java   |    8 +-
 .../hcatalog/templeton/LauncherDelegator.java   |   14 +
 .../hive/hcatalog/templeton/PigDelegator.java   |   13 +-
 .../apache/hive/hcatalog/templeton/Server.java  |   34 +-
 .../hive/hcatalog/templeton/SqoopDelegator.java |   20 +-
 .../hcatalog/templeton/StreamingDelegator.java  |    3 +-
 .../templeton/tool/JobSubmissionConstants.java  |    3 +
 .../hcatalog/templeton/tool/LaunchMapper.java   |  241 +-
 .../templeton/tool/TempletonControllerJob.java  |    7 +-
 hwi/pom.xml                                     |    2 +-
 itests/custom-serde/pom.xml                     |    2 +-
 itests/hcatalog-unit/pom.xml                    |    2 +-
 itests/hive-jmh/pom.xml                         |    2 +-
 .../benchmark/storage/ColumnarStorageBench.java |    4 +-
 itests/hive-minikdc/pom.xml                     |   22 +-
 .../hive/minikdc/TestHs2HooksWithMiniKdc.java   |    2 +-
 itests/hive-unit-hadoop2/pom.xml                |    2 +-
 itests/hive-unit/pom.xml                        |   90 +-
 .../org/apache/hadoop/hive/UtilsForTest.java    |   41 +
 .../apache/hadoop/hive/hooks/TestHs2Hooks.java  |   10 +-
 .../hadoop/hive/metastore/TestFilterHooks.java  |   29 +-
 .../hive/metastore/TestMetaStoreMetrics.java    |   94 +
 .../TestHiveAuthorizerCheckInvocation.java      |   34 +-
 .../plugin/TestHiveAuthorizerShowFilters.java   |    6 +-
 .../hive/ql/txn/compactor/TestCompactor.java    |   11 +-
 .../org/apache/hive/jdbc/TestJdbcDriver2.java   |   20 +
 .../apache/hive/jdbc/TestJdbcWithMiniHS2.java   |  123 +
 .../authorization/TestJdbcMetadataApiAuth.java  |  260 +
 .../TestJdbcWithSQLAuthorization.java           |   18 +
 itests/pom.xml                                  |    3 +-
 itests/qtest-accumulo/pom.xml                   |  508 ++
 .../test/java/org/apache/hive/TestDummy.java    |   31 +
 itests/qtest-spark/pom.xml                      |    2 +-
 itests/qtest/pom.xml                            |   23 +-
 .../test/resources/testconfiguration.properties |   30 +-
 itests/test-serde/pom.xml                       |    2 +-
 itests/util/pom.xml                             |    2 +-
 .../org/apache/hadoop/hive/ql/QTestUtil.java    |   27 +-
 jdbc/pom.xml                                    |    2 +-
 .../org/apache/hive/jdbc/HiveConnection.java    |   50 +-
 .../apache/hive/jdbc/HivePreparedStatement.java |    2 +-
 .../apache/hive/jdbc/HiveQueryResultSet.java    |   50 +-
 .../org/apache/hive/jdbc/HiveStatement.java     |   32 +-
 .../hive/jdbc/HttpRequestInterceptorBase.java   |   18 +
 metastore/dbs/derby/execute.sh                  |   37 -
 metastore/dbs/derby/prepare.sh                  |   63 -
 metastore/dbs/postgres/execute.sh               |   29 -
 metastore/dbs/postgres/prepare.sh               |   72 -
 metastore/pom.xml                               |    2 +-
 .../upgrade/derby/hive-schema-2.0.0.derby.sql   |  336 +
 .../derby/upgrade-1.2.0-to-2.0.0.derby.sql      |    3 +
 .../scripts/upgrade/derby/upgrade.order.derby   |    2 +-
 .../upgrade/mssql/hive-schema-2.0.0.mssql.sql   |  947 +++
 .../mssql/upgrade-1.2.0-to-2.0.0.mssql.sql      |    5 +
 .../scripts/upgrade/mssql/upgrade.order.mssql   |    2 +-
 .../upgrade/mysql/021-HIVE-7018.mysql.sql       |   53 +
 .../upgrade/mysql/hive-schema-1.3.0.mysql.sql   |   10 +-
 .../upgrade/mysql/hive-schema-2.0.0.mysql.sql   |  834 +++
 .../mysql/upgrade-1.2.0-to-1.3.0.mysql.sql      |    2 +-
 .../mysql/upgrade-1.2.0-to-2.0.0.mysql.sql      |    4 +
 .../scripts/upgrade/mysql/upgrade.order.mysql   |    2 +-
 .../upgrade/oracle/hive-schema-2.0.0.oracle.sql |  788 ++
 .../oracle/upgrade-1.2.0-to-2.0.0.oracle.sql    |    4 +
 .../scripts/upgrade/oracle/upgrade.order.oracle |    2 +-
 .../postgres/hive-schema-1.3.0.postgres.sql     |   36 -
 .../postgres/hive-schema-2.0.0.postgres.sql     | 1457 ++++
 .../upgrade-1.2.0-to-2.0.0.postgres.sql         |   12 +
 .../upgrade/postgres/upgrade.order.postgres     |    2 +-
 .../apache/hadoop/hive/metastore/Deadline.java  |    2 +-
 .../hadoop/hive/metastore/HiveAlterHandler.java |   42 +-
 .../hadoop/hive/metastore/HiveMetaStore.java    |  246 +-
 .../hive/metastore/HiveMetaStoreClient.java     |   13 +-
 .../hive/metastore/HiveMetaStoreFsImpl.java     |    1 -
 .../hive/metastore/MetaStoreDirectSql.java      |   26 +-
 .../hive/metastore/MetaStoreSchemaInfo.java     |    8 +-
 .../hadoop/hive/metastore/ObjectStore.java      |    6 +-
 .../hive/metastore/StatObjectConverter.java     |   16 +-
 .../apache/hadoop/hive/metastore/Warehouse.java |   14 +-
 .../hive/metastore/txn/CompactionInfo.java      |    9 +
 .../metastore/txn/CompactionTxnHandler.java     |   28 +-
 .../hadoop/hive/metastore/txn/TxnHandler.java   |   36 +-
 odbc/pom.xml                                    |    2 +-
 packaging/pom.xml                               |    2 +-
 pom.xml                                         |   53 +-
 ql/pom.xml                                      |    9 +-
 .../java/org/apache/hadoop/hive/ql/Driver.java  |   11 +-
 .../apache/hadoop/hive/ql/exec/ColumnInfo.java  |    2 +-
 .../org/apache/hadoop/hive/ql/exec/DDLTask.java |   37 +-
 .../hive/ql/exec/DefaultFetchFormatter.java     |    1 -
 .../apache/hadoop/hive/ql/exec/ExplainTask.java |   58 +-
 .../hive/ql/exec/ExprNodeEvaluatorFactory.java  |   12 +-
 .../ql/exec/ExprNodeGenericFuncEvaluator.java   |    3 +-
 .../hive/ql/exec/ExprNodeNullEvaluator.java     |   47 -
 .../hadoop/hive/ql/exec/FunctionRegistry.java   |   12 +-
 .../hadoop/hive/ql/exec/MapJoinOperator.java    |    6 +-
 .../hive/ql/exec/OrcFileMergeOperator.java      |   70 +-
 .../hive/ql/exec/PTFRollingPartition.java       |   30 +-
 .../hive/ql/exec/PartitionKeySampler.java       |    9 +-
 .../hadoop/hive/ql/exec/ReduceSinkOperator.java |    7 +-
 .../apache/hadoop/hive/ql/exec/TaskFactory.java |    2 +-
 .../apache/hadoop/hive/ql/exec/TaskRunner.java  |    1 +
 .../apache/hadoop/hive/ql/exec/Utilities.java   |   39 +-
 .../hadoop/hive/ql/exec/mr/ExecDriver.java      |   16 +-
 .../persistence/BytesBytesMultiHashMap.java     |   48 +-
 .../persistence/HybridHashTableContainer.java   |   59 +-
 .../persistence/MapJoinBytesTableContainer.java |   74 +-
 .../hadoop/hive/ql/exec/spark/CacheTran.java    |   54 +
 .../hive/ql/exec/spark/GroupByShuffler.java     |    4 +
 .../hive/ql/exec/spark/HashTableLoader.java     |   23 +-
 .../ql/exec/spark/HivePairFlatMapFunction.java  |    1 +
 .../ql/exec/spark/HiveSparkClientFactory.java   |    1 +
 .../ql/exec/spark/LocalHiveSparkClient.java     |    8 +-
 .../hadoop/hive/ql/exec/spark/MapInput.java     |   16 +
 .../hadoop/hive/ql/exec/spark/MapTran.java      |   22 +-
 .../hadoop/hive/ql/exec/spark/ReduceTran.java   |   23 +-
 .../ql/exec/spark/RemoteHiveSparkClient.java    |   16 +-
 .../hadoop/hive/ql/exec/spark/ShuffleTran.java  |   24 +
 .../hive/ql/exec/spark/SmallTableCache.java     |   73 +
 .../hive/ql/exec/spark/SortByShuffler.java      |    5 +
 .../hadoop/hive/ql/exec/spark/SparkPlan.java    |  150 +
 .../hive/ql/exec/spark/SparkPlanGenerator.java  |   25 +-
 .../hive/ql/exec/spark/SparkShuffler.java       |    2 +
 .../hadoop/hive/ql/exec/spark/SparkTran.java    |    6 +
 .../hive/ql/exec/spark/SparkUtilities.java      |   53 +-
 .../ql/exec/spark/session/SparkSessionImpl.java |    2 +-
 .../spark/session/SparkSessionManagerImpl.java  |   63 +-
 .../ql/exec/spark/status/SparkJobMonitor.java   |    2 +-
 .../hive/ql/exec/tez/HashTableLoader.java       |   74 +-
 .../hive/ql/exec/tez/HiveSplitGenerator.java    |   24 +
 .../hadoop/hive/ql/exec/tez/TezJobMonitor.java  |   12 +-
 .../hive/ql/exec/tez/TezSessionPoolManager.java |   21 +-
 .../hive/ql/exec/tez/TezSessionState.java       |   10 -
 .../hive/ql/exec/vector/BytesColumnVector.java  |    9 +
 .../hive/ql/exec/vector/ColumnVector.java       |   10 +
 .../ql/exec/vector/VectorColumnSetInfo.java     |   42 +-
 .../hive/ql/exec/vector/VectorCopyRow.java      |   35 +-
 .../ql/exec/vector/VectorFilterOperator.java    |    5 +-
 .../ql/exec/vector/VectorGroupByOperator.java   |   16 +-
 .../ql/exec/vector/VectorMapJoinOperator.java   |    8 +-
 .../VectorMapJoinOuterFilteredOperator.java     |    6 +-
 .../ql/exec/vector/VectorizationContext.java    |  111 +-
 .../ql/exec/vector/VectorizedBatchUtil.java     |    7 +-
 .../mapjoin/VectorMapJoinCommonOperator.java    |   58 +-
 .../VectorMapJoinGenerateResultOperator.java    |   47 +-
 ...pJoinInnerBigOnlyGenerateResultOperator.java |   53 +-
 .../VectorMapJoinInnerBigOnlyLongOperator.java  |   15 +-
 ...ctorMapJoinInnerBigOnlyMultiKeyOperator.java |   15 +-
 ...VectorMapJoinInnerBigOnlyStringOperator.java |   12 +-
 ...ectorMapJoinInnerGenerateResultOperator.java |   39 +-
 .../mapjoin/VectorMapJoinInnerLongOperator.java |   17 +-
 .../VectorMapJoinInnerMultiKeyOperator.java     |   19 +-
 .../VectorMapJoinInnerStringOperator.java       |   17 +-
 ...orMapJoinLeftSemiGenerateResultOperator.java |   40 +-
 .../VectorMapJoinLeftSemiLongOperator.java      |   13 +-
 .../VectorMapJoinLeftSemiMultiKeyOperator.java  |   17 +-
 .../VectorMapJoinLeftSemiStringOperator.java    |   17 +-
 ...ectorMapJoinOuterGenerateResultOperator.java |  805 +-
 .../mapjoin/VectorMapJoinOuterLongOperator.java |  189 +-
 .../VectorMapJoinOuterMultiKeyOperator.java     |  184 +-
 .../VectorMapJoinOuterStringOperator.java       |  185 +-
 .../mapjoin/VectorMapJoinRowBytesContainer.java |    2 +-
 .../fast/VectorMapJoinFastBytesHashMap.java     |    8 +-
 .../VectorMapJoinFastBytesHashMultiSet.java     |    4 +-
 .../fast/VectorMapJoinFastBytesHashTable.java   |   10 +-
 .../mapjoin/fast/VectorMapJoinFastKeyStore.java |   10 +-
 .../fast/VectorMapJoinFastLongHashMap.java      |    2 +-
 .../fast/VectorMapJoinFastLongHashTable.java    |   18 +-
 .../fast/VectorMapJoinFastTableContainer.java   |    2 +-
 .../fast/VectorMapJoinFastValueStore.java       |    8 +-
 .../VectorMapJoinOptimizedLongCommon.java       |    4 +-
 .../apache/hadoop/hive/ql/hooks/ATSHook.java    |   27 +-
 .../hadoop/hive/ql/io/HiveInputFormat.java      |   39 +-
 .../org/apache/hadoop/hive/ql/io/IOContext.java |    2 +-
 .../ql/io/avro/AvroContainerOutputFormat.java   |    2 +-
 .../hadoop/hive/ql/io/merge/MergeFileTask.java  |    6 +-
 .../hive/ql/io/orc/ColumnStatisticsImpl.java    |  217 +-
 .../ql/io/orc/ConversionTreeReaderFactory.java  |   38 +
 .../hive/ql/io/orc/OrcFileKeyWrapper.java       |   27 +-
 .../io/orc/OrcFileStripeMergeRecordReader.java  |   23 +-
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java   |    8 +-
 .../hadoop/hive/ql/io/orc/OrcRecordUpdater.java |   24 +-
 .../apache/hadoop/hive/ql/io/orc/OrcUtils.java  |    6 +-
 .../hive/ql/io/orc/RecordReaderFactory.java     |  269 +
 .../hadoop/hive/ql/io/orc/RecordReaderImpl.java |   11 +-
 .../hadoop/hive/ql/io/orc/WriterImpl.java       |    2 +-
 .../io/parquet/FilterPredicateLeafBuilder.java  |    8 +-
 .../hive/ql/io/parquet/LeafFilterFactory.java   |   20 +-
 .../ql/io/parquet/MapredParquetInputFormat.java |    3 +-
 .../io/parquet/MapredParquetOutputFormat.java   |    2 +-
 .../parquet/VectorizedParquetInputFormat.java   |    2 +-
 .../convert/DataWritableRecordConverter.java    |    8 +-
 .../ql/io/parquet/convert/ETypeConverter.java   |   10 +-
 .../convert/HiveCollectionConverter.java        |   29 +-
 .../io/parquet/convert/HiveGroupConverter.java  |   24 +-
 .../io/parquet/convert/HiveSchemaConverter.java |   18 +-
 .../io/parquet/convert/HiveStructConverter.java |    6 +-
 .../hive/ql/io/parquet/convert/Repeated.java    |   38 +-
 .../parquet/read/DataWritableReadSupport.java   |   20 +-
 .../read/ParquetRecordReaderWrapper.java        |   31 +-
 .../serde/AbstractParquetMapInspector.java      |   13 +-
 .../serde/DeepParquetHiveMapInspector.java      |    6 +-
 .../serde/ParquetHiveArrayInspector.java        |   43 +-
 .../ql/io/parquet/serde/ParquetHiveSerDe.java   |    4 +-
 .../serde/StandardParquetHiveMapInspector.java  |    6 +-
 .../hive/ql/io/parquet/timestamp/NanoTime.java  |    6 +-
 .../parquet/write/DataWritableWriteSupport.java |    8 +-
 .../ql/io/parquet/write/DataWritableWriter.java |   10 +-
 .../write/ParquetRecordWriterWrapper.java       |    6 +-
 .../ql/io/rcfile/stats/PartialScanTask.java     |    4 +-
 .../io/rcfile/truncate/ColumnTruncateTask.java  |    4 +-
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |   10 +-
 .../hadoop/hive/ql/lockmgr/DbLockManager.java   |    4 +-
 .../hadoop/hive/ql/lockmgr/DbTxnManager.java    |    2 +-
 .../hadoop/hive/ql/lockmgr/DummyTxnManager.java |   15 -
 .../hadoop/hive/ql/lockmgr/HiveLockObject.java  |    2 +-
 .../zookeeper/ZooKeeperHiveLockManager.java     |    2 +
 .../apache/hadoop/hive/ql/metadata/Hive.java    |   17 +-
 .../formatting/JsonMetaDataFormatter.java       |    2 +-
 .../metadata/formatting/MetaDataFormatter.java  |    2 +-
 .../formatting/TextMetaDataFormatter.java       |   76 +-
 .../hive/ql/optimizer/ColumnPrunerProcCtx.java  |   27 +
 .../ql/optimizer/ColumnPrunerProcFactory.java   |   49 +-
 .../hive/ql/optimizer/ConstantPropagate.java    |   12 +-
 .../ql/optimizer/ConstantPropagateProcCtx.java  |   21 +
 .../optimizer/ConstantPropagateProcFactory.java |  235 +-
 .../hive/ql/optimizer/ConvertJoinMapJoin.java   |   46 +-
 .../hive/ql/optimizer/GenMRTableScan1.java      |    2 +-
 .../hive/ql/optimizer/GenMapRedUtils.java       |    5 +-
 .../hive/ql/optimizer/GroupByOptimizer.java     |    7 +-
 .../ql/optimizer/NonBlockingOpDeDupProc.java    |    9 -
 .../hadoop/hive/ql/optimizer/Optimizer.java     |    4 +
 .../PrunerExpressionOperatorFactory.java        |    3 -
 .../ql/optimizer/ReduceSinkMapJoinProc.java     |    2 +-
 .../optimizer/RemoveDynamicPruningBySize.java   |   19 +-
 .../hive/ql/optimizer/SimpleFetchOptimizer.java |    2 -
 .../ql/optimizer/calcite/HiveCalciteUtil.java   |  143 +-
 .../ql/optimizer/calcite/HiveRelCollation.java  |   18 +
 .../ql/optimizer/calcite/HiveRelOptUtil.java    |  167 +-
 .../ql/optimizer/calcite/RelOptHiveTable.java   |    6 +-
 .../calcite/reloperators/HiveAggregate.java     |   58 +
 .../calcite/reloperators/HiveGroupingID.java    |   17 +
 .../calcite/reloperators/HiveMultiJoin.java     |  198 +
 .../calcite/reloperators/HiveProject.java       |    5 +-
 .../calcite/reloperators/HiveSemiJoin.java      |   79 +
 .../calcite/reloperators/HiveSortExchange.java  |   18 +
 .../rules/HiveExpandDistinctAggregatesRule.java |  278 +
 .../rules/HiveInsertExchange4JoinRule.java      |   27 +-
 .../rules/HiveJoinProjectTransposeRule.java     |   60 +
 .../calcite/rules/HiveJoinToMultiJoinRule.java  |  309 +-
 .../calcite/rules/HivePreFilteringRule.java     |  218 +
 .../calcite/rules/HiveProjectMergeRule.java     |    1 -
 .../calcite/rules/HiveRelFieldTrimmer.java      |  181 +
 .../calcite/rules/HiveWindowingFixRule.java     |  163 +
 .../calcite/translator/ASTConverter.java        |    2 -
 .../calcite/translator/HiveOpConverter.java     |  304 +-
 .../translator/HiveOpConverterPostProc.java     |   90 +-
 .../calcite/translator/PlanModifierUtil.java    |   47 +-
 .../calcite/translator/RexNodeConverter.java    |    5 +-
 .../correlation/ReduceSinkDeDuplication.java    |   15 +-
 .../ql/optimizer/lineage/ExprProcFactory.java   |    3 +-
 .../ql/optimizer/pcr/PcrExprProcFactory.java    |    3 +-
 .../hive/ql/optimizer/physical/Vectorizer.java  |  204 +-
 .../spark/SetSparkReducerParallelism.java       |   30 +-
 .../spark/SparkReduceSinkMapJoinProc.java       |    2 +-
 .../stats/annotation/StatsRulesProcFactory.java |  285 +-
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |  121 +-
 .../hive/ql/parse/DDLSemanticAnalyzer.java      |    3 +-
 .../hive/ql/parse/ExplainSemanticAnalyzer.java  |    9 +-
 .../hadoop/hive/ql/parse/GenTezUtils.java       |   24 +
 .../apache/hadoop/hive/ql/parse/HiveParser.g    |   11 +-
 .../hive/ql/parse/OptimizeTezProcContext.java   |   14 +
 .../hadoop/hive/ql/parse/PTFInvocationSpec.java |    8 +
 .../hadoop/hive/ql/parse/PTFTranslator.java     |   15 +-
 .../apache/hadoop/hive/ql/parse/ParseUtils.java |   42 +-
 .../hive/ql/parse/ProcessAnalyzeTable.java      |    4 +-
 .../org/apache/hadoop/hive/ql/parse/QB.java     |   19 +
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |  270 +-
 .../hive/ql/parse/TableAccessAnalyzer.java      |    6 +-
 .../hadoop/hive/ql/parse/TaskCompiler.java      |    4 +-
 .../hadoop/hive/ql/parse/TezCompiler.java       |   24 +-
 .../hive/ql/parse/TypeCheckProcFactory.java     |    4 +-
 .../hadoop/hive/ql/parse/WindowingSpec.java     |   86 +-
 .../hive/ql/parse/spark/GenSparkUtils.java      |    2 +-
 .../parse/spark/SparkProcessAnalyzeTable.java   |    2 +-
 .../hive/ql/plan/AbstractOperatorDesc.java      |    2 +-
 .../hadoop/hive/ql/plan/ColStatistics.java      |   33 +-
 .../hadoop/hive/ql/plan/ConditionalWork.java    |    4 +-
 .../hive/ql/plan/ExprNodeConstantDesc.java      |   15 +-
 .../hadoop/hive/ql/plan/ExprNodeNullDesc.java   |   69 -
 .../apache/hadoop/hive/ql/plan/FilterDesc.java  |    4 +-
 .../apache/hadoop/hive/ql/plan/JoinDesc.java    |    7 -
 .../apache/hadoop/hive/ql/plan/PlanUtils.java   |   28 +-
 .../hadoop/hive/ql/plan/ReduceSinkDesc.java     |   15 +-
 .../apache/hadoop/hive/ql/plan/Statistics.java  |   15 +-
 .../hadoop/hive/ql/plan/TableScanDesc.java      |   22 +-
 .../hadoop/hive/ql/plan/VectorGroupByDesc.java  |   23 +-
 .../hadoop/hive/ql/plan/ptf/BoundaryDef.java    |   42 +-
 .../hadoop/hive/ql/plan/ptf/CurrentRowDef.java  |   12 +-
 .../hive/ql/plan/ptf/RangeBoundaryDef.java      |   38 +-
 .../hive/ql/plan/ptf/ValueBoundaryDef.java      |   50 +-
 .../hadoop/hive/ql/plan/ptf/WindowFrameDef.java |   31 +-
 .../hadoop/hive/ql/processors/SetProcessor.java |    3 +
 .../AuthorizationPreEventListener.java          |    8 +-
 .../AuthorizationMetaStoreFilterHook.java       |    9 +-
 .../authorization/plugin/HiveOperationType.java |   19 +-
 .../plugin/HivePrivilegeObjectUtils.java        |   51 +
 .../plugin/sqlstd/Operation2Privilege.java      |   17 +-
 .../SQLStdHiveAuthorizationValidator.java       |    5 +
 .../hadoop/hive/ql/session/OperationLog.java    |    2 +-
 .../hadoop/hive/ql/session/SessionState.java    |   26 +-
 .../apache/hadoop/hive/ql/stats/StatsUtils.java |  264 +-
 .../hive/ql/txn/compactor/CompactorMR.java      |    9 +-
 .../hadoop/hive/ql/txn/compactor/Initiator.java |    2 +-
 .../hadoop/hive/ql/txn/compactor/Worker.java    |    3 +-
 .../org/apache/hadoop/hive/ql/udf/UDFCrc32.java |   75 +
 .../org/apache/hadoop/hive/ql/udf/UDFMd5.java   |   33 +-
 .../apache/hadoop/hive/ql/udf/UDFRegExp.java    |   76 -
 .../org/apache/hadoop/hive/ql/udf/UDFSha1.java  |   88 +
 .../hive/ql/udf/generic/GenericUDAFAverage.java |   43 +-
 .../ql/udf/generic/GenericUDAFCollectList.java  |   15 +-
 .../ql/udf/generic/GenericUDAFCollectSet.java   |   14 +-
 .../ql/udf/generic/GenericUDAFFirstValue.java   |   47 +-
 .../ql/udf/generic/GenericUDAFLastValue.java    |   39 +-
 .../hive/ql/udf/generic/GenericUDAFMax.java     |   51 +-
 .../hive/ql/udf/generic/GenericUDAFMin.java     |    8 +-
 .../GenericUDAFMkCollectionEvaluator.java       |   21 +-
 .../generic/GenericUDAFStreamingEvaluator.java  |   85 +-
 .../hive/ql/udf/generic/GenericUDAFSum.java     |   41 +-
 .../hadoop/hive/ql/udf/generic/GenericUDF.java  |   23 -
 .../hive/ql/udf/generic/GenericUDFBaseDTI.java  |   18 +
 .../hive/ql/udf/generic/GenericUDFCoalesce.java |    2 +-
 .../hive/ql/udf/generic/GenericUDFDecode.java   |    2 +-
 .../hive/ql/udf/generic/GenericUDFEncode.java   |    2 +-
 .../hive/ql/udf/generic/GenericUDFGreatest.java |    1 +
 .../hive/ql/udf/generic/GenericUDFInstr.java    |    2 +-
 .../hive/ql/udf/generic/GenericUDFLocate.java   |    2 +-
 .../ql/udf/generic/GenericUDFParamUtils.java    |   71 +
 .../hive/ql/udf/generic/GenericUDFPrintf.java   |    3 +-
 .../hive/ql/udf/generic/GenericUDFRegExp.java   |  133 +
 .../hive/ql/udf/generic/GenericUDFSha2.java     |  137 +
 .../ql/udf/generic/GenericUDFSortArray.java     |   17 +-
 .../udf/generic/GenericUDFSubstringIndex.java   |  159 +
 .../udf/generic/GenericUDFToUnixTimeStamp.java  |    6 +-
 .../ql/udf/generic/GenericUDFTranslate.java     |    8 +-
 .../ql/udf/generic/GenericUDFUnixTimeStamp.java |   36 +-
 .../hive/ql/udf/generic/GenericUDFUtils.java    |    6 +-
 .../hadoop/hive/ql/udf/ptf/MatchPath.java       |    5 +-
 .../hive/ql/udf/ptf/WindowingTableFunction.java |  174 +-
 .../apache/hadoop/hive/ql/TestTxnCommands2.java |   18 +
 .../hadoop/hive/ql/exec/TestUtilities.java      |   11 +
 .../exec/vector/TestVectorGroupByOperator.java  |    2 +-
 .../hadoop/hive/ql/io/orc/TestFileDump.java     |    9 +-
 .../io/parquet/AbstractTestParquetDirect.java   |   26 +-
 .../ql/io/parquet/TestArrayCompatibility.java   |   78 +-
 .../ql/io/parquet/TestDataWritableWriter.java   |   52 +-
 .../ql/io/parquet/TestHiveSchemaConverter.java  |   16 +-
 .../hive/ql/io/parquet/TestMapStructures.java   |   64 +-
 .../parquet/TestMapredParquetInputFormat.java   |    2 +-
 .../parquet/TestMapredParquetOutputFormat.java  |    2 +-
 .../io/parquet/TestParquetRowGroupFilter.java   |    6 +-
 .../hive/ql/io/parquet/TestParquetSerDe.java    |    8 +-
 .../serde/TestAbstractParquetMapInspector.java  |    4 +-
 .../serde/TestDeepParquetHiveMapInspector.java  |    4 +-
 .../serde/TestParquetHiveArrayInspector.java    |    3 +-
 .../TestStandardParquetHiveMapInspector.java    |    4 +-
 .../hive/ql/io/sarg/TestSearchArgumentImpl.java |   29 +-
 .../hive/ql/lockmgr/TestDummyTxnManager.java    |  119 +-
 .../apache/hadoop/hive/ql/parse/TestIUD.java    |    7 +
 .../hadoop/hive/ql/plan/TestViewEntity.java     |   53 +-
 .../hadoop/hive/ql/session/TestAddResource.java |  116 +-
 .../hive/ql/session/TestSessionState.java       |   30 +-
 .../hadoop/hive/ql/udaf/TestStreamingSum.java   |   16 +-
 .../apache/hadoop/hive/ql/udf/TestUDFCrc32.java |   74 +
 .../apache/hadoop/hive/ql/udf/TestUDFJson.java  |   18 +
 .../apache/hadoop/hive/ql/udf/TestUDFSha1.java  |   57 +
 .../ql/udf/generic/TestGenericUDFRegexp.java    |  135 +
 .../hive/ql/udf/generic/TestGenericUDFSha2.java |  271 +
 .../ql/udf/generic/TestGenericUDFSortArray.java |  158 +
 .../generic/TestGenericUDFSubstringIndex.java   |   97 +
 .../clientnegative/lockneg_try_lock_db_in_use.q |    2 +-
 .../clientnegative/ptf_negative_NoWindowDefn.q  |    9 +
 .../table_nonprintable_negative.q               |   11 +
 .../udaf_collect_set_unsupported.q              |    3 +
 .../clientnegative/udf_sort_array_wrong3.q      |    2 +-
 .../clientpositive/alter_change_db_location.q   |    5 +
 .../queries/clientpositive/alter_merge_2_orc.q  |    6 +-
 .../clientpositive/alter_table_partition_drop.q |   11 +
 .../queries/clientpositive/ambiguitycheck.q     |    2 -
 .../clientpositive/authorization_view_sqlstd.q  |    4 +
 ql/src/test/queries/clientpositive/auto_join0.q |   12 +-
 ql/src/test/queries/clientpositive/auto_join1.q |    3 +
 .../test/queries/clientpositive/auto_join21.q   |    1 +
 .../test/queries/clientpositive/auto_join29.q   |    1 +
 .../test/queries/clientpositive/auto_join30.q   |    1 +
 .../clientpositive/auto_sortmerge_join_10.q     |    1 +
 .../clientpositive/auto_sortmerge_join_13.q     |    1 +
 .../clientpositive/auto_sortmerge_join_14.q     |    1 +
 .../clientpositive/auto_sortmerge_join_15.q     |    1 +
 .../clientpositive/auto_sortmerge_join_5.q      |    3 +
 .../clientpositive/auto_sortmerge_join_9.q      |    1 +
 .../queries/clientpositive/autogen_colalias.q   |    4 +-
 .../queries/clientpositive/avro_timestamp.q     |    2 +
 .../queries/clientpositive/avro_timestamp_win.q |   28 +
 ql/src/test/queries/clientpositive/bucket2.q    |    1 +
 ql/src/test/queries/clientpositive/bucket3.q    |    1 +
 ql/src/test/queries/clientpositive/bucket4.q    |    1 +
 .../clientpositive/bucket_map_join_tez1.q       |    1 +
 .../clientpositive/bucket_map_join_tez2.q       |    1 +
 ql/src/test/queries/clientpositive/cbo_gby.q    |    3 +
 .../test/queries/clientpositive/cbo_rp_join0.q  |   26 +
 .../test/queries/clientpositive/cbo_rp_join1.q  |   22 +
 .../test/queries/clientpositive/cbo_subq_in.q   |    1 +
 .../test/queries/clientpositive/cbo_udf_udaf.q  |    2 +
 .../test/queries/clientpositive/cbo_windowing.q |    6 +-
 .../clientpositive/correlationoptimizer1.q      |    1 +
 ql/src/test/queries/clientpositive/count.q      |    1 +
 ql/src/test/queries/clientpositive/cross_join.q |    1 +
 .../clientpositive/cross_product_check_1.q      |   10 +-
 .../clientpositive/cross_product_check_2.q      |    7 +-
 .../clientpositive/crtseltbl_serdeprops.q       |   11 +
 ql/src/test/queries/clientpositive/ctas.q       |    2 +
 ql/src/test/queries/clientpositive/cteViews.q   |   41 +
 .../disable_merge_for_bucketing.q               |    1 +
 .../clientpositive/dynamic_partition_pruning.q  |    1 +
 .../dynamic_partition_pruning_2.q               |   18 +
 .../clientpositive/dynpart_sort_opt_bucketing.q |   73 +
 .../dynpart_sort_opt_vectorization.q            |    1 +
 .../clientpositive/dynpart_sort_optimization.q  |    1 +
 .../clientpositive/dynpart_sort_optimization2.q |    8 +-
 .../clientpositive/encryption_drop_partition.q  |   18 +
 .../clientpositive/encryption_drop_table.q      |   18 +
 .../clientpositive/encryption_drop_view.q       |    6 +
 .../encryption_insert_partition_dynamic.q       |    8 +-
 .../encryption_insert_partition_static.q        |   41 +-
 .../clientpositive/encryption_insert_values.q   |   15 +
 .../encryption_join_unencrypted_tbl.q           |    4 +-
 ...yption_join_with_different_encryption_keys.q |    8 +-
 .../encryption_load_data_to_encrypted_tables.q  |    4 +-
 .../clientpositive/encryption_move_tbl.q        |   20 +
 .../encryption_select_read_only_encrypted_tbl.q |    4 +-
 .../clientpositive/exec_parallel_column_stats.q |    5 +
 .../test/queries/clientpositive/explainuser_2.q |    7 +-
 .../test/queries/clientpositive/explainuser_3.q |  115 +
 .../clientpositive/filter_cond_pushdown.q       |   19 +
 .../clientpositive/filter_join_breaktask2.q     |    2 +
 ql/src/test/queries/clientpositive/fold_case.q  |    8 +
 .../clientpositive/fold_eq_with_case_when.q     |   21 +
 ql/src/test/queries/clientpositive/groupby1.q   |    1 +
 ql/src/test/queries/clientpositive/groupby2.q   |    1 +
 ql/src/test/queries/clientpositive/groupby3.q   |    1 +
 ...groupby_complex_types_multi_single_reducer.q |    8 +-
 .../clientpositive/groupby_grouping_sets6.q     |    1 -
 ql/src/test/queries/clientpositive/having.q     |    1 +
 .../clientpositive/hybridgrace_hashjoin_1.q     |    1 +
 .../clientpositive/hybridgrace_hashjoin_2.q     |    6 +-
 .../test/queries/clientpositive/insert_into1.q  |   16 +-
 .../test/queries/clientpositive/insert_into2.q  |   15 +-
 .../clientpositive/insert_into_with_schema2.q   |   34 +
 .../clientpositive/insert_nonacid_from_acid.q   |    2 +
 ql/src/test/queries/clientpositive/join0.q      |    1 +
 ql/src/test/queries/clientpositive/join1.q      |    1 +
 ql/src/test/queries/clientpositive/join42.q     |   36 +
 ql/src/test/queries/clientpositive/join43.q     |   83 +
 .../join_merge_multi_expressions.q              |    2 +
 .../test/queries/clientpositive/join_nullsafe.q |    3 +
 .../clientpositive/json_serde_qualified_types.q |   12 +
 .../queries/clientpositive/limit_pushdown.q     |    1 +
 .../queries/clientpositive/load_dyn_part1.q     |    1 +
 .../queries/clientpositive/load_dyn_part2.q     |    1 +
 .../queries/clientpositive/load_dyn_part3.q     |    1 +
 .../test/queries/clientpositive/lvj_mapjoin.q   |    1 +
 .../queries/clientpositive/mapjoin_decimal.q    |    7 +-
 .../queries/clientpositive/mapjoin_mapjoin.q    |    1 +
 ql/src/test/queries/clientpositive/mapreduce1.q |    1 +
 ql/src/test/queries/clientpositive/mapreduce2.q |    1 +
 ql/src/test/queries/clientpositive/merge1.q     |    1 +
 ql/src/test/queries/clientpositive/merge2.q     |    1 +
 ql/src/test/queries/clientpositive/mergejoin.q  |    3 +-
 .../clientpositive/metadata_only_queries.q      |    1 +
 ql/src/test/queries/clientpositive/mrr.q        |    3 +
 .../clientpositive/orc_int_type_promotion.q     |   79 +
 ql/src/test/queries/clientpositive/orc_merge1.q |    3 +
 ql/src/test/queries/clientpositive/orc_merge2.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge3.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge4.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge5.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge6.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge7.q |    1 +
 ql/src/test/queries/clientpositive/orc_merge9.q |   44 +
 .../clientpositive/orc_merge_incompat1.q        |    1 +
 .../clientpositive/orc_merge_incompat2.q        |    1 +
 ql/src/test/queries/clientpositive/parallel.q   |    1 +
 .../queries/clientpositive/partition_date2.q    |    2 +
 .../clientpositive/partition_timestamp.q        |    2 +
 .../clientpositive/partition_timestamp2.q       |    2 +
 .../clientpositive/partition_timestamp2_win.q   |   58 +
 .../clientpositive/partition_timestamp_win.q    |   59 +
 ql/src/test/queries/clientpositive/ptf.q        |    1 +
 .../test/queries/clientpositive/ptf_matchpath.q |    1 +
 .../test/queries/clientpositive/ptf_streaming.q |    1 +
 .../queries/clientpositive/ql_rewrite_gbtoidx.q |    4 +-
 .../queries/clientpositive/script_env_var1.q    |    4 +-
 .../test/queries/clientpositive/script_pipe.q   |    1 +
 .../queries/clientpositive/selectDistinctStar.q |    5 +-
 .../clientpositive/select_dummy_source.q        |    1 +
 ql/src/test/queries/clientpositive/skewjoin.q   |   12 +-
 .../queries/clientpositive/stats_noscan_1.q     |    1 +
 .../queries/clientpositive/stats_only_null.q    |    4 +
 .../queries/clientpositive/subquery_exists.q    |    2 +
 .../test/queries/clientpositive/subquery_in.q   |    1 +
 .../queries/clientpositive/table_nonprintable.q |   30 +
 ql/src/test/queries/clientpositive/temp_table.q |    7 +-
 .../clientpositive/tez_bmj_schema_evolution.q   |    1 +
 ql/src/test/queries/clientpositive/tez_dml.q    |    3 +
 ql/src/test/queries/clientpositive/tez_join.q   |    1 +
 .../test/queries/clientpositive/tez_join_hash.q |    3 +
 .../clientpositive/tez_join_result_complex.q    |  139 +
 .../queries/clientpositive/tez_join_tests.q     |    1 +
 .../queries/clientpositive/tez_joins_explain.q  |    2 +-
 .../queries/clientpositive/tez_multi_union.q    |    1 +
 .../clientpositive/tez_schema_evolution.q       |   12 +-
 .../test/queries/clientpositive/tez_self_join.q |   33 +
 ql/src/test/queries/clientpositive/tez_smb_1.q  |   32 +
 .../test/queries/clientpositive/tez_smb_main.q  |    1 +
 ql/src/test/queries/clientpositive/tez_union.q  |    1 +
 ql/src/test/queries/clientpositive/tez_union2.q |    1 +
 .../tez_union_dynamic_partition.q               |   22 +
 .../queries/clientpositive/tez_union_group_by.q |    1 +
 .../clientpositive/tez_union_multiinsert.q      |    1 +
 ql/src/test/queries/clientpositive/transform1.q |    1 +
 .../queries/clientpositive/udaf_collect_set_2.q |  222 +
 .../clientpositive/udaf_percentile_approx_23.q  |    4 +-
 ql/src/test/queries/clientpositive/udf_crc32.q  |   13 +
 .../clientpositive/udf_folder_constants.q       |   11 +
 ql/src/test/queries/clientpositive/udf_sha1.q   |   13 +
 ql/src/test/queries/clientpositive/udf_sha2.q   |   41 +
 .../queries/clientpositive/udf_sort_array.q     |   10 +
 .../clientpositive/udf_substring_index.q        |   32 +
 .../queries/clientpositive/udf_unix_timestamp.q |    8 +-
 ql/src/test/queries/clientpositive/union2.q     |    1 +
 ql/src/test/queries/clientpositive/union3.q     |    1 +
 ql/src/test/queries/clientpositive/union35.q    |    2 -
 ql/src/test/queries/clientpositive/union4.q     |    1 +
 ql/src/test/queries/clientpositive/union5.q     |    1 +
 ql/src/test/queries/clientpositive/union6.q     |    1 +
 ql/src/test/queries/clientpositive/union7.q     |    1 +
 ql/src/test/queries/clientpositive/union8.q     |    1 +
 ql/src/test/queries/clientpositive/union9.q     |    1 +
 .../queries/clientpositive/unionDistinct_1.q    |    1 +
 .../queries/clientpositive/unionDistinct_2.q    |    2 +
 .../update_after_multiple_inserts.q             |    2 +
 .../clientpositive/update_all_partitioned.q     |    4 +-
 .../queries/clientpositive/update_all_types.q   |    2 +
 .../queries/clientpositive/update_orig_table.q  |    2 +
 .../clientpositive/update_where_partitioned.q   |    4 +-
 .../queries/clientpositive/vector_aggregate_9.q |    1 +
 .../queries/clientpositive/vector_between_in.q  |    1 +
 .../clientpositive/vector_binary_join_groupby.q |    1 +
 .../test/queries/clientpositive/vector_bucket.q |    1 +
 .../clientpositive/vector_cast_constant.q       |    1 +
 .../test/queries/clientpositive/vector_char_2.q |    1 +
 .../test/queries/clientpositive/vector_char_4.q |    1 +
 .../clientpositive/vector_char_mapjoin1.q       |    1 +
 .../queries/clientpositive/vector_char_simple.q |    1 +
 .../queries/clientpositive/vector_coalesce.q    |   52 +-
 .../queries/clientpositive/vector_coalesce_2.q  |    1 +
 .../clientpositive/vector_count_distinct.q      |    1 +
 .../queries/clientpositive/vector_data_types.q  |   13 +-
 .../test/queries/clientpositive/vector_date_1.q |    1 +
 .../queries/clientpositive/vector_decimal_1.q   |    1 +
 .../clientpositive/vector_decimal_10_0.q        |    1 +
 .../queries/clientpositive/vector_decimal_2.q   |    1 +
 .../clientpositive/vector_decimal_aggregate.q   |    1 +
 .../clientpositive/vector_decimal_cast.q        |    1 +
 .../clientpositive/vector_decimal_expressions.q |   12 +-
 .../clientpositive/vector_decimal_mapjoin.q     |    1 +
 .../clientpositive/vector_decimal_math_funcs.q  |    1 +
 .../clientpositive/vector_decimal_precision.q   |    1 +
 .../clientpositive/vector_decimal_round.q       |    1 +
 .../clientpositive/vector_decimal_round_2.q     |    1 +
 .../queries/clientpositive/vector_decimal_udf.q |    1 +
 .../clientpositive/vector_decimal_udf2.q        |    1 +
 .../queries/clientpositive/vector_distinct_2.q  |    1 +
 ql/src/test/queries/clientpositive/vector_elt.q |    1 +
 .../queries/clientpositive/vector_groupby_3.q   |    1 +
 .../clientpositive/vector_groupby_reduce.q      |    4 +
 .../clientpositive/vector_grouping_sets.q       |   64 +
 .../queries/clientpositive/vector_if_expr.q     |    1 +
 .../queries/clientpositive/vector_inner_join.q  |    1 +
 .../queries/clientpositive/vector_interval_1.q  |    1 +
 .../queries/clientpositive/vector_interval_2.q  |    1 +
 .../clientpositive/vector_interval_mapjoin.q    |   88 +
 .../test/queries/clientpositive/vector_join30.q |  161 +
 .../clientpositive/vector_join_filters.q        |   38 +
 .../queries/clientpositive/vector_join_nulls.q  |   33 +
 .../clientpositive/vector_left_outer_join.q     |    1 +
 .../clientpositive/vector_left_outer_join2.q    |    3 +
 .../clientpositive/vector_leftsemi_mapjoin.q    |    1 +
 .../clientpositive/vector_mapjoin_reduce.q      |    1 +
 .../vector_mr_diff_schema_alias.q               |    1 +
 .../clientpositive/vector_multi_insert.q        |    1 +
 .../vector_non_string_partition.q               |    1 +
 .../clientpositive/vector_null_projection.q     |   21 +
 .../clientpositive/vector_nullsafe_join.q       |   73 +
 .../queries/clientpositive/vector_orderby_5.q   |    1 +
 .../queries/clientpositive/vector_outer_join0.q |    1 +
 .../queries/clientpositive/vector_outer_join1.q |   20 +-
 .../queries/clientpositive/vector_outer_join2.q |   19 +-
 .../queries/clientpositive/vector_outer_join3.q |   18 +-
 .../queries/clientpositive/vector_outer_join4.q |   17 +-
 .../queries/clientpositive/vector_outer_join5.q |  174 +
 .../vector_partition_diff_num_cols.q            |    1 +
 .../vector_partitioned_date_time.q              |    5 +-
 .../vector_partitioned_date_time_win.q          |  129 +
 .../vector_reduce_groupby_decimal.q             |    1 +
 .../clientpositive/vector_string_concat.q       |    1 +
 .../queries/clientpositive/vector_varchar_4.q   |    1 +
 .../clientpositive/vector_varchar_mapjoin1.q    |    1 +
 .../clientpositive/vector_varchar_simple.q      |    1 +
 .../queries/clientpositive/vectorization_0.q    |    3 +
 .../queries/clientpositive/vectorization_1.q    |    3 +
 .../queries/clientpositive/vectorization_10.q   |    3 +
 .../queries/clientpositive/vectorization_11.q   |    3 +
 .../queries/clientpositive/vectorization_12.q   |    3 +
 .../queries/clientpositive/vectorization_13.q   |  142 +-
 .../queries/clientpositive/vectorization_14.q   |    3 +
 .../queries/clientpositive/vectorization_15.q   |    3 +
 .../queries/clientpositive/vectorization_16.q   |    1 +
 .../queries/clientpositive/vectorization_17.q   |   51 +
 .../queries/clientpositive/vectorization_2.q    |    3 +
 .../queries/clientpositive/vectorization_3.q    |    3 +
 .../queries/clientpositive/vectorization_4.q    |    3 +
 .../queries/clientpositive/vectorization_5.q    |    3 +
 .../queries/clientpositive/vectorization_6.q    |    3 +
 .../queries/clientpositive/vectorization_7.q    |   80 +-
 .../queries/clientpositive/vectorization_8.q    |   81 +-
 .../queries/clientpositive/vectorization_9.q    |   39 +-
 .../clientpositive/vectorization_decimal_date.q |    1 +
 .../queries/clientpositive/vectorization_div0.q |    1 +
 .../clientpositive/vectorization_limit.q        |    1 +
 .../clientpositive/vectorization_part_project.q |    5 +-
 .../clientpositive/vectorization_pushdown.q     |    1 +
 .../vectorization_short_regress.q               |  420 +-
 .../clientpositive/vectorized_bucketmapjoin1.q  |    1 +
 .../queries/clientpositive/vectorized_case.q    |    1 +
 .../queries/clientpositive/vectorized_casts.q   |    3 +
 .../queries/clientpositive/vectorized_context.q |    1 +
 .../clientpositive/vectorized_date_funcs.q      |    3 +
 .../clientpositive/vectorized_distinct_gby.q    |    3 +-
 .../vectorized_dynamic_partition_pruning.q      |    1 +
 .../queries/clientpositive/vectorized_mapjoin.q |    3 +
 .../clientpositive/vectorized_math_funcs.q      |    1 +
 .../clientpositive/vectorized_nested_mapjoin.q  |    3 +
 .../queries/clientpositive/vectorized_parquet.q |    1 +
 .../clientpositive/vectorized_rcfile_columnar.q |    2 +-
 .../clientpositive/vectorized_shufflejoin.q     |   11 +-
 .../clientpositive/vectorized_string_funcs.q    |    1 +
 .../clientpositive/vectorized_timestamp_funcs.q |   42 +-
 ql/src/test/queries/clientpositive/windowing.q  |    2 +-
 .../clientpositive/windowing_windowspec.q       |    2 -
 .../clientpositive/windowing_windowspec2.q      |   60 +
 .../clientpositive/windowing_windowspec3.q      |   62 +
 ql/src/test/resources/RefreshedJarClassV1.txt   |   26 +
 ql/src/test/resources/RefreshedJarClassV2.txt   |   26 +
 ql/src/test/resources/SessionStateTest.jar.v1   |  Bin 2176 -> 0 bytes
 ql/src/test/resources/SessionStateTest.jar.v2   |  Bin 2177 -> 0 bytes
 .../clientnegative/authorization_ctas2.q.out    |    2 +
 .../lockneg_try_lock_db_in_use.q.out            |    9 +-
 .../ptf_negative_NoWindowDefn.q.out             |    1 +
 .../table_nonprintable_negative.q.out           |   19 +
 .../udaf_collect_set_unsupported.q.out          |    1 +
 .../clientnegative/udf_sort_array_wrong1.q.out  |    2 +-
 .../clientnegative/udf_sort_array_wrong2.q.out  |    2 +-
 .../clientnegative/udf_sort_array_wrong3.q.out  |    2 +-
 .../results/clientpositive/add_part_exist.q.out |    2 +
 ql/src/test/results/clientpositive/alter1.q.out |    4 +
 ql/src/test/results/clientpositive/alter2.q.out |    4 +
 ql/src/test/results/clientpositive/alter3.q.out |    4 +
 ql/src/test/results/clientpositive/alter4.q.out |    4 +
 ql/src/test/results/clientpositive/alter5.q.out |    4 +
 .../alter_change_db_location.q.out              |   37 +
 .../results/clientpositive/alter_db_owner.q.out |    6 +
 .../results/clientpositive/alter_index.q.out    |    2 +
 .../clientpositive/alter_merge_2_orc.q.out      |   16 +-
 .../clientpositive/alter_rename_partition.q.out |    6 +
 .../alter_table_partition_drop.q.out            |   74 +
 .../clientpositive/annotate_stats_filter.q.out  |   28 +-
 .../clientpositive/annotate_stats_join.q.out    |    8 +-
 .../annotate_stats_join_pkfk.q.out              |   42 +-
 .../clientpositive/annotate_stats_limit.q.out   |    2 +-
 .../clientpositive/annotate_stats_part.q.out    |   10 +-
 .../clientpositive/annotate_stats_select.q.out  |    6 +-
 .../clientpositive/annotate_stats_table.q.out   |    4 +-
 .../authorization_owner_actions_db.q.out        |    2 +
 .../authorization_view_sqlstd.q.out             |   14 +
 .../results/clientpositive/auto_join0.q.out     |  235 +-
 .../results/clientpositive/auto_join1.q.out     |    8 +-
 .../results/clientpositive/auto_join14.q.out    |   12 +-
 .../results/clientpositive/auto_join16.q.out    |    4 +-
 .../results/clientpositive/auto_join30.q.out    |   24 +
 .../results/clientpositive/auto_join31.q.out    |    4 +
 .../results/clientpositive/auto_join32.q.out    |   32 +-
 .../results/clientpositive/auto_join8.q.out     |   14 +-
 .../clientpositive/auto_join_stats.q.out        |   28 +-
 .../clientpositive/auto_join_stats2.q.out       |    8 +-
 .../auto_join_without_localtask.q.out           |   60 +
 .../clientpositive/auto_sortmerge_join_1.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_12.q.out |    2 +-
 .../clientpositive/auto_sortmerge_join_14.q.out |    4 +
 .../clientpositive/auto_sortmerge_join_15.q.out |    4 +
 .../clientpositive/auto_sortmerge_join_2.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_3.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_4.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_5.q.out  |   14 +
 .../clientpositive/auto_sortmerge_join_6.q.out  |   66 +
 .../clientpositive/auto_sortmerge_join_7.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_8.q.out  |    8 +
 .../clientpositive/auto_sortmerge_join_9.q.out  |  143 +
 .../clientpositive/autogen_colalias.q.out       |   12 +-
 .../clientpositive/avro_timestamp.q.java1.7.out |    8 +-
 .../clientpositive/avro_timestamp.q.java1.8.out |    8 +-
 .../avro_timestamp_win.q.java1.7.out            |  134 +
 .../avro_timestamp_win.q.java1.8.out            |  134 +
 .../clientpositive/binarysortable_1.q.out       |  Bin 4302 -> 4329 bytes
 .../clientpositive/bucket_map_join_1.q.out      |   10 +-
 .../clientpositive/bucket_map_join_2.q.out      |   10 +-
 .../results/clientpositive/bucketmapjoin1.q.out |   28 +-
 .../bucketsortoptimize_insert_2.q.out           |   20 +
 .../bucketsortoptimize_insert_4.q.out           |   16 +
 .../bucketsortoptimize_insert_5.q.out           |   20 +
 .../bucketsortoptimize_insert_6.q.out           |   24 +
 .../bucketsortoptimize_insert_7.q.out           |    2 +-
 .../test/results/clientpositive/cbo_gby.q.out   |   18 +-
 .../clientpositive/cbo_rp_auto_join1.q.out      |    4 +-
 .../results/clientpositive/cbo_rp_join0.q.out   | 6867 ++++++++++++++++++
 .../results/clientpositive/cbo_rp_join1.q.out   |  426 ++
 .../results/clientpositive/cbo_subq_in.q.out    |    2 +
 .../results/clientpositive/cbo_udf_udaf.q.out   |   18 +-
 .../results/clientpositive/cbo_windowing.q.out  |  122 +-
 .../clientpositive/column_access_stats.q.out    |   78 +-
 .../clientpositive/columnstats_partlvl.q.out    |   14 +-
 .../clientpositive/columnstats_partlvl_dp.q.out |    8 +-
 .../clientpositive/columnstats_tbllvl.q.out     |   14 +-
 .../results/clientpositive/complex_alias.q.out  |   42 +-
 .../clientpositive/compute_stats_date.q.out     |    2 +-
 .../clientpositive/correlationoptimizer1.q.out  |   16 +-
 .../clientpositive/correlationoptimizer10.q.out |    6 +-
 .../clientpositive/correlationoptimizer11.q.out |    8 +-
 .../clientpositive/correlationoptimizer15.q.out |    6 +-
 .../clientpositive/correlationoptimizer2.q.out  |   10 +-
 .../clientpositive/correlationoptimizer3.q.out  |   12 +-
 .../clientpositive/correlationoptimizer4.q.out  |    6 +-
 .../clientpositive/correlationoptimizer5.q.out  |    6 +
 .../clientpositive/correlationoptimizer6.q.out  |   48 +-
 .../results/clientpositive/create_view.q.out    |    2 +
 .../clientpositive/cross_product_check_1.q.out  |   20 +-
 .../clientpositive/cross_product_check_2.q.out  |   76 +-
 .../clientpositive/crtseltbl_serdeprops.q.out   |   35 +
 ql/src/test/results/clientpositive/ctas.q.out   |    2 +
 .../test/results/clientpositive/cteViews.q.out  |  242 +
 .../test/results/clientpositive/database.q.out  |   12 +
 .../clientpositive/database_location.q.out      |    8 +
 .../clientpositive/database_properties.q.out    |    6 +
 .../clientpositive/dbtxnmgr_query5.q.out        |    2 +
 .../clientpositive/decimal_precision2.q.out     |   28 +-
 .../clientpositive/describe_database.q.out      |    4 +
 .../clientpositive/describe_database_json.q.out |   12 +
 .../clientpositive/describe_table_json.q.out    |    4 +
 .../display_colstats_tbllvl.q.out               |    6 +-
 .../dynpart_sort_opt_bucketing.q.out            |  277 +
 .../dynpart_sort_optimization2.q.out            |  166 +-
 .../encrypted/encryption_drop_partition.q.out   |   81 +
 .../encrypted/encryption_drop_table.q.out       |   62 +
 .../encrypted/encryption_drop_view.q.out        |   34 +
 .../encryption_insert_partition_dynamic.q.out   |   32 +-
 .../encryption_insert_partition_static.q.out    |  387 +-
 .../encrypted/encryption_insert_values.q.out    |   71 +
 .../encryption_join_unencrypted_tbl.q.out       |   16 +-
 ...on_join_with_different_encryption_keys.q.out |   16 +-
 ...cryption_load_data_to_encrypted_tables.q.out |    8 +-
 .../encrypted/encryption_move_tbl.q.out         |   55 +
 ...ryption_select_read_only_encrypted_tbl.q.out |    8 +-
 .../exec_parallel_column_stats.q.out            |   51 +
 .../clientpositive/explain_logical.q.out        |   28 +-
 .../clientpositive/explain_rearrange.q.out      |   32 +-
 .../clientpositive/filter_cond_pushdown.q.out   |  382 +
 .../clientpositive/filter_join_breaktask.q.out  |   12 +-
 .../clientpositive/filter_join_breaktask2.q.out |    8 +-
 .../results/clientpositive/filter_numeric.q.out |    6 +-
 .../test/results/clientpositive/fold_case.q.out |  186 +-
 .../clientpositive/fold_eq_with_case_when.q.out |  231 +
 .../test/results/clientpositive/fold_when.q.out |   32 +-
 .../test/results/clientpositive/groupby10.q.out |  140 +-
 .../test/results/clientpositive/groupby11.q.out |   70 +-
 .../test/results/clientpositive/groupby2.q.out  |   33 +-
 .../clientpositive/groupby2_map_skew.q.out      |   33 +-
 .../test/results/clientpositive/groupby8.q.out  |  140 +-
 .../clientpositive/groupby8_map_skew.q.out      |   70 +-
 ...pby_complex_types_multi_single_reducer.q.out |   68 +-
 .../results/clientpositive/groupby_cube1.q.out  |  137 +-
 .../clientpositive/groupby_grouping_sets2.q.out |   36 +-
 .../clientpositive/groupby_grouping_sets3.q.out |   32 +-
 .../clientpositive/groupby_grouping_sets4.q.out |   72 +-
 .../clientpositive/groupby_grouping_sets5.q.out |   44 +-
 .../clientpositive/groupby_grouping_sets6.q.out |   70 +-
 .../results/clientpositive/groupby_ppd.q.out    |   34 +-
 .../clientpositive/groupby_rollup1.q.out        |  123 +-
 .../results/clientpositive/groupby_sort_6.q.out |   46 +-
 ql/src/test/results/clientpositive/having.q.out |   28 +-
 .../test/results/clientpositive/having2.q.out   |   32 +-
 .../identity_project_remove_skip.q.out          |    6 +
 .../results/clientpositive/implicit_cast1.q.out |    8 +-
 .../clientpositive/index_auto_empty.q.out       |    8 +-
 .../clientpositive/index_auto_unused.q.out      |    4 +-
 .../results/clientpositive/index_creation.q.out |    2 +
 .../results/clientpositive/index_serde.q.out    |    6 +-
 .../clientpositive/index_skewtable.q.out        |   12 +-
 .../clientpositive/infer_const_type.q.out       |   28 +-
 ql/src/test/results/clientpositive/input2.q.out |    4 +
 .../test/results/clientpositive/input21.q.out   |   10 +-
 .../test/results/clientpositive/input23.q.out   |    8 +-
 .../test/results/clientpositive/input24.q.out   |    4 +-
 .../test/results/clientpositive/input25.q.out   |   36 +-
 .../test/results/clientpositive/input26.q.out   |   28 +-
 ql/src/test/results/clientpositive/input3.q.out |    4 +
 ql/src/test/results/clientpositive/input6.q.out |    2 +-
 ql/src/test/results/clientpositive/input9.q.out |    6 +-
 .../results/clientpositive/input_part4.q.out    |    6 +-
 .../test/results/clientpositive/insert1.q.out   |   46 +-
 .../results/clientpositive/insert_into1.q.out   |   86 +-
 .../results/clientpositive/insert_into2.q.out   |   82 +-
 .../insert_into_with_schema2.q.out              |  135 +
 .../insert_nonacid_from_acid.q.out              |   20 +-
 ql/src/test/results/clientpositive/join14.q.out |   14 +-
 ql/src/test/results/clientpositive/join19.q.out |   62 +-
 ql/src/test/results/clientpositive/join28.q.out |    2 +-
 ql/src/test/results/clientpositive/join29.q.out |    6 +
 ql/src/test/results/clientpositive/join31.q.out |    6 +
 ql/src/test/results/clientpositive/join32.q.out |    2 +-
 .../clientpositive/join32_lessSize.q.out        |   10 +-
 ql/src/test/results/clientpositive/join33.q.out |    2 +-
 ql/src/test/results/clientpositive/join42.q.out |  312 +
 ql/src/test/results/clientpositive/join43.q.out |  648 ++
 ql/src/test/results/clientpositive/join8.q.out  |   16 +-
 .../join_cond_pushdown_unqual1.q.out            |   48 +-
 .../join_cond_pushdown_unqual2.q.out            |   24 +-
 .../join_cond_pushdown_unqual3.q.out            |   48 +-
 .../join_cond_pushdown_unqual4.q.out            |   24 +-
 .../results/clientpositive/join_hive_626.q.out  |   28 +-
 .../join_merge_multi_expressions.q.out          |    6 +-
 .../results/clientpositive/join_nullsafe.q.out  |   16 +-
 .../results/clientpositive/join_reorder.q.out   |   92 +-
 .../results/clientpositive/join_reorder2.q.out  |   68 +-
 .../results/clientpositive/join_reorder3.q.out  |   68 +-
 .../results/clientpositive/join_reorder4.q.out  |   54 +-
 .../test/results/clientpositive/join_view.q.out |   18 +-
 .../json_serde_qualified_types.q.out            |   33 +
 .../test/results/clientpositive/keyword_1.q.out |    8 +-
 .../clientpositive/lateral_view_explode2.q.out  |    6 +-
 .../list_bucket_query_oneskew_2.q.out           |   22 +-
 .../clientpositive/mapjoin_subquery.q.out       |    4 +-
 .../clientpositive/mapjoin_subquery2.q.out      |   20 +-
 .../results/clientpositive/merge_join_1.q.out   |   32 +-
 .../results/clientpositive/mergejoins.q.out     |   40 +-
 .../clientpositive/mergejoins_mixed.q.out       |  332 +-
 .../results/clientpositive/metadataonly1.q.out  |   72 +-
 .../results/clientpositive/multiMapJoin1.q.out  |   76 +
 .../results/clientpositive/multiMapJoin2.q.out  |   30 +-
 .../clientpositive/multigroupby_singlemr.q.out  |  136 +-
 .../results/clientpositive/nullformatCTAS.q.out |    6 +-
 .../results/clientpositive/nullgroup3.q.out     |   16 +-
 .../results/clientpositive/nullgroup5.q.out     |   14 +-
 .../clientpositive/optimize_nullscan.q.out      |   82 +-
 .../clientpositive/orc_int_type_promotion.q.out |  377 +
 .../results/clientpositive/orc_merge1.q.out     |    8 +-
 .../results/clientpositive/orc_merge9.q.out     |  186 +
 .../clientpositive/orc_predicate_pushdown.q.out |   36 +-
 .../clientpositive/partition_boolexpr.q.out     |    8 +-
 .../clientpositive/partition_date2.q.out        |    8 +-
 .../clientpositive/partition_timestamp.q.out    |    8 +-
 .../clientpositive/partition_timestamp2.q.out   |    8 +-
 .../partition_timestamp2_win.q.out              |  399 +
 .../partition_timestamp_win.q.out               |  316 +
 .../test/results/clientpositive/ppd_gby.q.out   |   41 +-
 .../test/results/clientpositive/ppd_gby2.q.out  |   49 +-
 .../results/clientpositive/ppd_gby_join.q.out   |   68 +-
 .../test/results/clientpositive/ppd_join.q.out  |   64 +-
 .../test/results/clientpositive/ppd_join2.q.out |   81 +-
 .../test/results/clientpositive/ppd_join3.q.out |   91 +-
 .../test/results/clientpositive/ppd_join4.q.out |   24 +-
 .../test/results/clientpositive/ppd_join5.q.out |   22 +-
 .../clientpositive/ppd_outer_join2.q.out        |   16 +-
 .../clientpositive/ppd_outer_join3.q.out        |   16 +-
 .../clientpositive/ppd_outer_join4.q.out        |   32 +-
 .../clientpositive/ppd_outer_join5.q.out        |   72 +-
 .../clientpositive/ppd_repeated_alias.q.out     |   78 +-
 .../results/clientpositive/ppd_udf_col.q.out    |  190 +-
 .../test/results/clientpositive/ppd_union.q.out |   42 +-
 .../results/clientpositive/ppd_union_view.q.out |   46 +-
 ql/src/test/results/clientpositive/ppd_vc.q.out |    8 +-
 .../clientpositive/ql_rewrite_gbtoidx.q.out     |  258 +-
 .../ql_rewrite_gbtoidx_cbo_1.q.out              |  260 +-
 .../ql_rewrite_gbtoidx_cbo_2.q.out              |   16 +-
 .../query_result_fileformat.q.out               |   12 +-
 ql/src/test/results/clientpositive/quote1.q.out |    6 +-
 .../results/clientpositive/quotedid_basic.q.out |   70 +-
 .../results/clientpositive/quotedid_skew.q.out  |   40 +-
 .../clientpositive/reduce_deduplicate.q.out     |   16 +-
 .../results/clientpositive/rename_column.q.out  |    4 +
 .../runtime_skewjoin_mapjoin_spark.q.out        |   27 +-
 .../test/results/clientpositive/sample6.q.out   |   12 +-
 .../clientpositive/script_env_var1.q.out        |    8 +-
 .../clientpositive/selectDistinctStar.q.out     |   92 +-
 .../clientpositive/select_dummy_source.q.out    |   34 +-
 .../test/results/clientpositive/semijoin.q.out  |   10 +-
 .../results/clientpositive/show_functions.q.out |    6 +
 .../results/clientpositive/show_tables.q.out    |   18 +
 .../test/results/clientpositive/skewjoin.q.out  |   89 +-
 .../clientpositive/skewjoin_mapjoin1.q.out      |  112 +-
 .../clientpositive/skewjoin_mapjoin10.q.out     |   26 +-
 .../clientpositive/skewjoin_mapjoin11.q.out     |   32 +-
 .../clientpositive/skewjoin_mapjoin2.q.out      |   72 +-
 .../clientpositive/skewjoin_mapjoin3.q.out      |   32 +-
 .../clientpositive/skewjoin_mapjoin4.q.out      |   40 +-
 .../clientpositive/skewjoin_mapjoin5.q.out      |   50 +-
 .../clientpositive/skewjoin_mapjoin6.q.out      |   48 +-
 .../clientpositive/skewjoin_mapjoin7.q.out      |   68 +-
 .../clientpositive/skewjoin_mapjoin8.q.out      |   20 +-
 .../clientpositive/skewjoin_mapjoin9.q.out      |   40 +-
 .../skewjoin_union_remove_1.q.out               |  144 +-
 .../skewjoin_union_remove_2.q.out               |   48 +-
 .../results/clientpositive/skewjoinopt1.q.out   |  144 +-
 .../results/clientpositive/skewjoinopt10.q.out  |   52 +-
 .../results/clientpositive/skewjoinopt11.q.out  |   84 +-
 .../results/clientpositive/skewjoinopt12.q.out  |   40 +-
 .../results/clientpositive/skewjoinopt13.q.out  |   28 +-
 .../results/clientpositive/skewjoinopt14.q.out  |   48 +-
 .../results/clientpositive/skewjoinopt15.q.out  |   34 +-
 .../results/clientpositive/skewjoinopt16.q.out  |   40 +-
 .../results/clientpositive/skewjoinopt17.q.out  |   80 +-
 .../results/clientpositive/skewjoinopt18.q.out  |    6 +-
 .../results/clientpositive/skewjoinopt19.q.out  |   40 +-
 .../results/clientpositive/skewjoinopt2.q.out   |  168 +-
 .../results/clientpositive/skewjoinopt20.q.out  |   40 +-
 .../results/clientpositive/skewjoinopt3.q.out   |   80 +-
 .../results/clientpositive/skewjoinopt4.q.out   |   80 +-
 .../results/clientpositive/skewjoinopt5.q.out   |   40 +-
 .../results/clientpositive/skewjoinopt6.q.out   |   40 +-
 .../results/clientpositive/skewjoinopt7.q.out   |   52 +-
 .../results/clientpositive/skewjoinopt8.q.out   |   52 +-
 .../results/clientpositive/skewjoinopt9.q.out   |   54 +-
 .../results/clientpositive/smb_mapjoin9.q.out   |    8 +-
 .../spark/annotate_stats_join.q.out             |  212 +-
 .../clientpositive/spark/auto_join0.q.out       |   97 +-
 .../clientpositive/spark/auto_join1.q.out       |   68 +-
 .../clientpositive/spark/auto_join10.q.out      |   28 +-
 .../clientpositive/spark/auto_join11.q.out      |   32 +-
 .../clientpositive/spark/auto_join14.q.out      |   70 +-
 .../clientpositive/spark/auto_join16.q.out      |   68 +-
 .../clientpositive/spark/auto_join17.q.out      |   60 +-
 .../clientpositive/spark/auto_join18.q.out      |   30 +-
 .../spark/auto_join18_multi_distinct.q.out      |   30 +-
 .../clientpositive/spark/auto_join19.q.out      |   56 +-
 .../clientpositive/spark/auto_join26.q.out      |   68 +-
 .../clientpositive/spark/auto_join27.q.out      |   31 +-
 .../clientpositive/spark/auto_join32.q.out      |  104 +-
 .../clientpositive/spark/auto_join4.q.out       |   14 +-
 .../clientpositive/spark/auto_join5.q.out       |   24 +-
 .../clientpositive/spark/auto_join6.q.out       |   10 +-
 .../clientpositive/spark/auto_join8.q.out       |   16 +-
 .../clientpositive/spark/auto_join9.q.out       |   56 +-
 .../spark/auto_join_filters.q.out               |    4 +-
 .../clientpositive/spark/auto_join_nulls.q.out  |    6 +-
 .../clientpositive/spark/auto_join_stats.q.out  |    4 +-
 .../clientpositive/spark/auto_join_stats2.q.out |    8 +-
 .../spark/auto_join_without_localtask.q.out     |   32 +-
 .../spark/auto_sortmerge_join_10.q.out          |   10 +
 .../spark/auto_sortmerge_join_12.q.out          |    2 +-
 .../spark/auto_sortmerge_join_5.q.out           |    6 +
 .../spark/bucket_map_join_1.q.out               |   10 +-
 .../spark/bucket_map_join_2.q.out               |   10 +-
 .../clientpositive/spark/bucketmapjoin1.q.out   |   28 +-
 .../spark/bucketsortoptimize_insert_7.q.out     |   18 +-
 .../results/clientpositive/spark/cbo_gby.q.out  |   24 +-
 .../clientpositive/spark/cbo_subq_in.q.out      |    2 +
 .../clientpositive/spark/cbo_udf_udaf.q.out     |   18 +-
 .../spark/column_access_stats.q.out             |  104 +-
 .../spark/constprog_partitioner.q.out           |   80 +-
 .../results/clientpositive/spark/count.q.out    |   24 +-
 .../clientpositive/spark/cross_join.q.out       |   74 +-
 .../spark/cross_product_check_1.q.out           |   60 +-
 .../spark/cross_product_check_2.q.out           |  106 +-
 .../results/clientpositive/spark/ctas.q.out     |    2 +
 .../spark/filter_join_breaktask.q.out           |   12 +-
 .../spark/filter_join_breaktask2.q.out          |    8 +-
 .../results/clientpositive/spark/groupby1.q.out |    8 +-
 .../clientpositive/spark/groupby10.q.out        |   88 +-
 .../clientpositive/spark/groupby11.q.out        |   44 +-
 .../results/clientpositive/spark/groupby2.q.out |   25 +-
 .../results/clientpositive/spark/groupby3.q.out |    8 +-
 .../clientpositive/spark/groupby3_map.q.out     |    8 +-
 .../spark/groupby3_map_multi_distinct.q.out     |    8 +-
 .../spark/groupby3_map_skew.q.out               |    8 +-
 .../clientpositive/spark/groupby3_noskew.q.out  |    6 +-
 .../spark/groupby3_noskew_multi_distinct.q.out  |    6 +-
 .../results/clientpositive/spark/groupby4.q.out |    6 +-
 .../results/clientpositive/spark/groupby8.q.out |   88 +-
 .../spark/groupby8_map_skew.q.out               |   44 +-
 ...pby_complex_types_multi_single_reducer.q.out |   90 +-
 .../clientpositive/spark/groupby_cube1.q.out    |  151 +-
 .../clientpositive/spark/groupby_map_ppr.q.out  |    8 +-
 .../spark/groupby_map_ppr_multi_distinct.q.out  |    8 +-
 .../clientpositive/spark/groupby_position.q.out |  130 +-
 .../clientpositive/spark/groupby_ppr.q.out      |    8 +-
 .../clientpositive/spark/groupby_rollup1.q.out  |  133 +-
 .../spark/groupby_sort_1_23.q.out               |  101 +-
 .../spark/groupby_sort_skew_1_23.q.out          |  101 +-
 .../results/clientpositive/spark/having.q.out   |   94 +-
 .../spark/index_auto_self_join.q.out            |  116 +-
 .../spark/infer_bucket_sort_map_operators.q.out |    5 +-
 .../spark/infer_bucket_sort_merge.q.out         |    4 +-
 .../clientpositive/spark/innerjoin.q.out        |   54 +-
 .../results/clientpositive/spark/insert1.q.out  |   46 +-
 .../clientpositive/spark/insert_into1.q.out     |   92 +-
 .../clientpositive/spark/insert_into2.q.out     |   88 +-
 .../results/clientpositive/spark/join1.q.out    |   38 +-
 .../results/clientpositive/spark/join10.q.out   |   28 +-
 .../results/clientpositive/spark/join11.q.out   |   18 +-
 .../results/clientpositive/spark/join14.q.out   |   60 +-
 .../results/clientpositive/spark/join16.q.out   |   36 +-
 .../results/clientpositive/spark/join17.q.out   |   52 +-
 .../results/clientpositive/spark/join18.q.out   |   12 +-
 .../spark/join18_multi_distinct.q.out           |   12 +-
 .../results/clientpositive/spark/join19.q.out   |   62 +-
 .../results/clientpositive/spark/join28.q.out   |    2 +-
 .../results/clientpositive/spark/join29.q.out   |   66 +-
 .../results/clientpositive/spark/join31.q.out   |  104 +-
 .../results/clientpositive/spark/join32.q.out   |    2 +-
 .../clientpositive/spark/join32_lessSize.q.out  |   10 +-
 .../results/clientpositive/spark/join33.q.out   |    2 +-
 .../results/clientpositive/spark/join34.q.out   |   44 +-
 .../results/clientpositive/spark/join35.q.out   |   96 +-
 .../results/clientpositive/spark/join4.q.out    |   16 +-
 .../results/clientpositive/spark/join40.q.out   |  116 +-
 .../results/clientpositive/spark/join5.q.out    |   20 +-
 .../results/clientpositive/spark/join6.q.out    |   10 +-
 .../results/clientpositive/spark/join8.q.out    |   18 +-
 .../results/clientpositive/spark/join9.q.out    |   42 +-
 .../clientpositive/spark/join_alt_syntax.q.out  |   42 +-
 .../spark/join_cond_pushdown_unqual1.q.out      |   48 +-
 .../spark/join_cond_pushdown_unqual2.q.out      |   24 +-
 .../spark/join_cond_pushdown_unqual3.q.out      |   48 +-
 .../spark/join_cond_pushdown_unqual4.q.out      |   24 +-
 .../clientpositive/spark/join_hive_626.q.out    |   28 +-
 .../spark/join_merge_multi_expressions.q.out    |    6 +-
 .../clientpositive/spark/join_nullsafe.q.out    |   16 +-
 .../clientpositive/spark/join_reorder.q.out     |   92 +-
 .../clientpositive/spark/join_reorder2.q.out    |   68 +-
 .../clientpositive/spark/join_reorder3.q.out    |   68 +-
 .../clientpositive/spark/join_reorder4.q.out    |   54 +-
 .../results/clientpositive/spark/join_vc.q.out  |   40 +-
 .../clientpositive/spark/join_view.q.out        |   18 +-
 .../spark/lateral_view_explode2.q.out           |    6 +-
 .../spark/limit_partition_metadataonly.q.out    |    4 +-
 .../clientpositive/spark/limit_pushdown.q.out   |  150 +-
 .../clientpositive/spark/load_dyn_part13.q.out  |   12 +-
 .../clientpositive/spark/load_dyn_part14.q.out  |    9 +
 .../clientpositive/spark/louter_join_ppr.q.out  |  514 +-
 .../clientpositive/spark/mapjoin_decimal.q.out  |   41 +-
 .../clientpositive/spark/mapjoin_subquery.q.out |    4 +-
 .../spark/mapjoin_subquery2.q.out               |   30 +-
 .../results/clientpositive/spark/merge1.q.out   |    4 +-
 .../results/clientpositive/spark/merge2.q.out   |    4 +-
 .../clientpositive/spark/mergejoins.q.out       |   40 +-
 .../clientpositive/spark/mergejoins_mixed.q.out |  332 +-
 .../spark/metadata_only_queries.q.out           |   12 +-
 .../clientpositive/spark/multi_insert.q.out     |   48 +
 ...i_insert_move_tasks_share_dependencies.q.out |   48 +
 .../clientpositive/spark/multi_join_union.q.out |    8 +
 .../spark/multigroupby_singlemr.q.out           |  146 +-
 .../spark/optimize_nullscan.q.out               |   76 +-
 .../results/clientpositive/spark/order2.q.out   |    2 +-
 .../spark/outer_join_ppr.q.java1.7.out          |  366 +-
 .../spark/outer_join_ppr.q.java1.8.out          |  366 +-
 .../clientpositive/spark/parallel_join1.q.out   |   38 +-
 .../clientpositive/spark/parallel_orderby.q.out |    6 +-
 .../test/results/clientpositive/spark/pcr.q.out |    4 +-
 .../clientpositive/spark/ppd_gby_join.q.out     |  144 +-
 .../results/clientpositive/spark/ppd_join.q.out |  124 +-
 .../clientpositive/spark/ppd_join2.q.out        |   81 +-
 .../clientpositive/spark/ppd_join3.q.out        |   91 +-
 .../clientpositive/spark/ppd_join4.q.out        |   24 +-
 .../clientpositive/spark/ppd_join5.q.out        |   54 +-
 .../clientpositive/spark/ppd_join_filter.q.out  |  442 +-
 .../clientpositive/spark/ppd_outer_join1.q.out  |  120 +-
 .../clientpositive/spark/ppd_outer_join2.q.out  |  158 +-
 .../clientpositive/spark/ppd_outer_join3.q.out  |  154 +-
 .../clientpositive/spark/ppd_outer_join4.q.out  |   32 +-
 .../clientpositive/spark/ppd_outer_join5.q.out  |   72 +-
 .../spark/ql_rewrite_gbtoidx.q.out              |  263 +-
 .../spark/ql_rewrite_gbtoidx_cbo_1.q.out        |  469 +-
 .../spark/reduce_deduplicate.q.out              |   16 +-
 .../clientpositive/spark/router_join_ppr.q.out  |  582 +-
 .../spark/runtime_skewjoin_mapjoin_spark.q.out  |    5 +-
 .../results/clientpositive/spark/sample6.q.out  |   12 +-
 .../clientpositive/spark/script_env_var1.q.out  |    8 +-
 .../results/clientpositive/spark/semijoin.q.out |   36 +-
 .../results/clientpositive/spark/skewjoin.q.out |  243 +-
 .../clientpositive/spark/skewjoin_noskew.q.out  |   32 +-
 .../spark/skewjoin_union_remove_1.q.out         |  120 +-
 .../spark/skewjoin_union_remove_2.q.out         |   42 +-
 .../clientpositive/spark/skewjoinopt1.q.out     |  120 +-
 .../clientpositive/spark/skewjoinopt10.q.out    |   32 +-
 .../clientpositive/spark/skewjoinopt11.q.out    |   64 +-
 .../clientpositive/spark/skewjoinopt12.q.out    |   30 +-
 .../clientpositive/spark/skewjoinopt13.q.out    |   28 +-
 .../clientpositive/spark/skewjoinopt14.q.out    |   40 +-
 .../clientpositive/spark/skewjoinopt15.q.out    |   40 +-
 .../clientpositive/spark/skewjoinopt16.q.out    |   30 +-
 .../clientpositive/spark/skewjoinopt17.q.out    |   60 +-
 .../clientpositive/spark/skewjoinopt18.q.out    |    6 +-
 .../clientpositive/spark/skewjoinopt19.q.out    |   30 +-
 .../clientpositive/spark/skewjoinopt2.q.out     |  128 +-
 .../clientpositive/spark/skewjoinopt20.q.out    |   30 +-
 .../clientpositive/spark/skewjoinopt3.q.out     |   60 +-
 .../clientpositive/spark/skewjoinopt4.q.out     |   60 +-
 .../clientpositive/spark/skewjoinopt5.q.out     |   30 +-
 .../clientpositive/spark/skewjoinopt6.q.out     |   30 +-
 .../clientpositive/spark/skewjoinopt7.q.out     |   42 +-
 .../clientpositive/spark/skewjoinopt8.q.out     |   42 +-
 .../clientpositive/spark/skewjoinopt9.q.out     |   42 +-
 .../results/clientpositive/spark/stats1.q.out   |    8 +-
 .../results/clientpositive/spark/stats12.q.out  |    2 +-
 .../results/clientpositive/spark/stats13.q.out  |    2 +-
 .../results/clientpositive/spark/stats2.q.out   |    2 +-
 .../results/clientpositive/spark/stats7.q.out   |    2 +-
 .../results/clientpositive/spark/stats8.q.out   |    2 +-
 .../clientpositive/spark/stats_noscan_2.q.out   |    8 +-
 .../clientpositive/spark/stats_only_null.q.out  |    8 +-
 .../clientpositive/spark/subquery_exists.q.out  |   22 +-
 .../clientpositive/spark/subquery_in.q.out      |  230 +-
 .../spark/subquery_multiinsert.q.java1.7.out    |   14 +-
 .../spark/subquery_multiinsert.q.java1.8.out    |   14 +-
 .../spark/table_access_keys_stats.q.out         |   18 +-
 .../clientpositive/spark/temp_table.q.out       |  100 +-
 .../spark/tez_joins_explain.q.out               |    2 -
 .../clientpositive/spark/transform1.q.out       |    8 +-
 .../clientpositive/spark/udf_in_file.q.out      |    8 +-
 .../results/clientpositive/spark/union.q.out    |   12 +-
 .../results/clientpositive/spark/union10.q.out  |   18 +-
 .../results/clientpositive/spark/union11.q.out  |   93 +-
 .../results/clientpositive/spark/union12.q.out  |   14 +-
 .../results/clientpositive/spark/union13.q.out  |    8 +-
 .../results/clientpositive/spark/union14.q.out  |   84 +-
 .../results/clientpositive/spark/union15.q.out  |  111 +-
 .../results/clientpositive/spark/union16.q.out  |  125 +
 .../results/clientpositive/spark/union17.q.out  |   24 +-
 .../results/clientpositive/spark/union18.q.out  |   10 +
 .../results/clientpositive/spark/union19.q.out  |   16 +-
 .../results/clientpositive/spark/union2.q.out   |   12 +-
 .../results/clientpositive/spark/union20.q.out  |   28 +-
 .../results/clientpositive/spark/union21.q.out  |   24 +-
 .../results/clientpositive/spark/union22.q.out  |    9 +
 .../results/clientpositive/spark/union23.q.out  |    7 +
 .../results/clientpositive/spark/union24.q.out  |   71 +-
 .../results/clientpositive/spark/union25.q.out  |   52 +-
 .../results/clientpositive/spark/union26.q.out  |   16 +
 .../results/clientpositive/spark/union27.q.out  |    8 +
 .../results/clientpositive/spark/union28.q.out  |   76 +-
 .../results/clientpositive/spark/union29.q.out  |   12 +
 .../results/clientpositive/spark/union3.q.out   |   12 +
 .../results/clientpositive/spark/union30.q.out  |   80 +-
 .../results/clientpositive/spark/union31.q.out  |   32 +
 .../results/clientpositive/spark/union32.q.out  |   30 +
 .../results/clientpositive/spark/union33.q.out  |   26 +-
 .../results/clientpositive/spark/union34.q.out  |   63 +-
 .../results/clientpositive/spark/union4.q.out   |   12 +-
 .../results/clientpositive/spark/union5.q.out   |   62 +-
 .../results/clientpositive/spark/union6.q.out   |    8 +-
 .../results/clientpositive/spark/union7.q.out   |   82 +-
 .../results/clientpositive/spark/union8.q.out   |   13 +-
 .../results/clientpositive/spark/union9.q.out   |   19 +-
 .../spark/union_lateralview.q.out               |   24 +
 .../clientpositive/spark/union_ppr.q.out        |   10 +
 .../clientpositive/spark/union_remove_1.q.out   |   28 +-
 .../clientpositive/spark/union_remove_10.q.out  |   24 +-
 .../clientpositive/spark/union_remove_11.q.out  |   12 +
 .../clientpositive/spark/union_remove_12.q.out  |   14 +-
 .../clientpositive/spark/union_remove_13.q.out  |   22 +-
 .../clientpositive/spark/union_remove_14.q.out  |   14 +-
 .../clientpositive/spark/union_remove_15.q.out  |   30 +-
 .../clientpositive/spark/union_remove_16.q.out  |   30 +-
 .../clientpositive/spark/union_remove_17.q.out  |    8 +
 .../clientpositive/spark/union_remove_18.q.out  |   30 +-
 .../clientpositive/spark/union_remove_19.q.out  |  220 +-
 .../clientpositive/spark/union_remove_2.q.out   |   24 +-
 .../clientpositive/spark/union_remove_20.q.out  |   30 +-
 .../clientpositive/spark/union_remove_21.q.out  |   82 +-
 .../clientpositive/spark/union_remove_22.q.out  |   52 +-
 .../clientpositive/spark/union_remove_23.q.out  |   30 +-
 .../clientpositive/spark/union_remove_24.q.out  |   30 +-
 .../clientpositive/spark/union_remove_25.q.out  |   44 +-
 .../clientpositive/spark/union_remove_3.q.out   |   12 +
 .../clientpositive/spark/union_remove_4.q.out   |   28 +-
 .../clientpositive/spark/union_remove_5.q.out   |   24 +-
 .../clientpositive/spark/union_remove_6.q.out   |   22 +-
 .../spark/union_remove_6_subq.q.out             |   44 +-
 .../clientpositive/spark/union_remove_7.q.out   |   28 +-
 .../clientpositive/spark/union_remove_8.q.out   |   24 +-
 .../clientpositive/spark/union_remove_9.q.out   |   22 +-
 .../clientpositive/spark/union_top_level.q.out  |   66 +-
 .../clientpositive/spark/union_view.q.out       |  143 +
 .../spark/vector_cast_constant.q.java1.7.out    |    6 +-
 .../spark/vector_cast_constant.q.java1.8.out    |    6 +-
 .../spark/vector_count_distinct.q.out           |    6 +-
 .../spark/vector_data_types.q.out               |  116 +-
 .../spark/vector_decimal_aggregate.q.out        |   12 +-
 .../spark/vector_distinct_2.q.out               |    4 +-
 .../clientpositive/spark/vector_elt.q.out       |    2 +-
 .../clientpositive/spark/vector_groupby_3.q.out |    6 +-
 .../spark/vector_mapjoin_reduce.q.out           |  261 +-
 .../clientpositive/spark/vector_orderby_5.q.out |    6 +-
 .../spark/vector_string_concat.q.out            |    6 +-
 .../clientpositive/spark/vectorization_0.q.out  |   28 +-
 .../clientpositive/spark/vectorization_1.q.out  |    8 +-
 .../clientpositive/spark/vectorization_10.q.out |  428 +-
 .../clientpositive/spark/vectorization_11.q.out |   74 +-
 .../clientpositive/spark/vectorization_12.q.out |  994 +--
 .../clientpositive/spark/vectorization_13.q.out |  430 +-
 .../clientpositive/spark/vectorization_14.q.out | 1182 +--
 .../clientpositive/spark/vectorization_15.q.out |   68 +-
 .../clientpositive/spark/vectorization_16.q.out |    8 +-
 .../clientpositive/spark/vectorization_17.q.out |  507 ++
 .../clientpositive/spark/vectorization_2.q.out  |    8 +-
 .../clientpositive/spark/vectorization_3.q.out  |    8 +-
 .../clientpositive/spark/vectorization_4.q.out  |    8 +-
 .../clientpositive/spark/vectorization_5.q.out  |    8 +-
 .../clientpositive/spark/vectorization_6.q.out  | 3042 ++++----
 .../clientpositive/spark/vectorization_7.q.out  |  328 +-
 .../clientpositive/spark/vectorization_8.q.out  |  314 +-
 .../clientpositive/spark/vectorization_9.q.out  |  965 ++-
 .../spark/vectorization_div0.q.out              |    6 +-
 .../spark/vectorization_part_project.q.out      |   42 +-
 .../spark/vectorization_pushdown.q.out          |    8 +-
 .../spark/vectorization_short_regress.q.out     | 1338 ++--
 .../clientpositive/spark/vectorized_case.q.out  |    2 +-
 .../spark/vectorized_mapjoin.q.out              |   68 +-
 .../spark/vectorized_nested_mapjoin.q.out       |    8 +-
 .../spark/vectorized_rcfile_columnar.q.out      |   24 +-
 .../spark/vectorized_shufflejoin.q.out          |   89 +-
 .../spark/vectorized_timestamp_funcs.q.out      |  408 +-
 .../clientpositive/spark/windowing.q.out        |    4 +-
 .../test/results/clientpositive/stats12.q.out   |    2 +-
 .../test/results/clientpositive/stats13.q.out   |    2 +-
 ql/src/test/results/clientpositive/stats2.q.out |    2 +-
 ql/src/test/results/clientpositive/stats7.q.out |    2 +-
 ql/src/test/results/clientpositive/stats8.q.out |    2 +-
 .../results/clientpositive/stats_noscan_2.q.out |    8 +-
 .../subq_where_serialization.q.out              |    5 +
 .../clientpositive/subquery_exists.q.out        |    2 +
 .../clientpositive/subquery_in_having.q.out     |  132 +-
 .../subquery_multiinsert.q.java1.7.out          |   18 +-
 .../clientpositive/subquery_notexists.q.out     |   12 +-
 .../subquery_notexists_having.q.out             |   12 +-
 .../results/clientpositive/subquery_notin.q.out |   50 +-
 .../subquery_notin_having.q.java1.7.out         |   70 +-
 .../subquery_unqual_corr_expr.q.out             |    8 +-
 .../subquery_unqualcolumnrefs.q.out             |   74 +-
 .../results/clientpositive/subquery_views.q.out |   20 +-
 .../symlink_text_input_format.q.out             |   24 +-
 .../clientpositive/table_nonprintable.q.out     |   72 +
 .../results/clientpositive/temp_table.q.out     |   84 +-
 .../temp_table_display_colstats_tbllvl.q.out    |    6 +-
 .../clientpositive/temp_table_names.q.out       |    8 +
 .../tez/acid_vectorization_partition.q.out      |   20 +-
 .../clientpositive/tez/alter_merge_2_orc.q.out  |   16 +-
 .../results/clientpositive/tez/auto_join0.q.out |   91 +-
 .../results/clientpositive/tez/auto_join1.q.out |    8 +-
 .../tez/auto_sortmerge_join_10.q.out            |   14 +
 .../tez/auto_sortmerge_join_12.q.out            |    5 +-
 .../tez/auto_sortmerge_join_5.q.out             |    6 +
 .../results/clientpositive/tez/cbo_gby.q.out    |   18 +-
 .../clientpositive/tez/cbo_subq_in.q.out        |    2 +
 .../clientpositive/tez/cbo_udf_udaf.q.out       |   18 +-
 .../clientpositive/tez/cbo_windowing.q.out      |  122 +-
 .../tez/cross_product_check_1.q.out             |   20 +-
 .../tez/cross_product_check_2.q.out             |   88 +-
 .../test/results/clientpositive/tez/ctas.q.out  |    2 +
 .../tez/dynamic_partition_pruning.q.out         |  390 +-
 .../tez/dynamic_partition_pruning_2.q.out       |  126 +
 .../tez/dynpart_sort_optimization2.q.out        |  166 +-
 .../clientpositive/tez/explainuser_1.q.out      | 1713 +++--
 .../clientpositive/tez/explainuser_2.q.out      | 1053 ++-
 .../clientpositive/tez/explainuser_3.q.out      |  522 ++
 .../tez/filter_join_breaktask2.q.out            |    8 +-
 .../results/clientpositive/tez/groupby2.q.out   |   17 +-
 .../results/clientpositive/tez/having.q.out     |   28 +-
 .../tez/hybridgrace_hashjoin_2.q.out            |   20 +-
 .../clientpositive/tez/insert_into1.q.out       |   86 +-
 .../clientpositive/tez/insert_into2.q.out       |   82 +-
 .../clientpositive/tez/join_nullsafe.q.out      |   20 +-
 .../clientpositive/tez/limit_pushdown.q.out     |   31 +-
 .../clientpositive/tez/mapjoin_decimal.q.out    |   42 +-
 .../results/clientpositive/tez/mergejoin.q.out  |   12 +
 .../clientpositive/tez/metadataonly1.q.out      |   72 +-
 .../test/results/clientpositive/tez/mrr.q.out   | 2074 +++---
 .../clientpositive/tez/optimize_nullscan.q.out  |   72 +-
 .../results/clientpositive/tez/orc_merge1.q.out |    8 +-
 .../clientpositive/tez/script_env_var1.q.out    |    8 +-
 .../clientpositive/tez/selectDistinctStar.q.out |  108 +-
 .../results/clientpositive/tez/skewjoin.q.out   |   84 +-
 .../clientpositive/tez/stats_only_null.q.out    |  422 ++
 .../clientpositive/tez/subquery_exists.q.out    |    2 +
 .../results/clientpositive/tez/temp_table.q.out |   93 +-
 .../results/clientpositive/tez/tez_dml.q.out    | 2008 ++---
 .../results/clientpositive/tez/tez_join.q.out   |   28 +-
 .../clientpositive/tez/tez_join_hash.q.out      |  297 +-
 .../tez/tez_join_result_complex.q.out           | 2159 ++++++
 .../clientpositive/tez/tez_joins_explain.q.out  |    2 -
 .../clientpositive/tez/tez_multi_union.q.out    | 1002 +--
 .../tez/tez_schema_evolution.q.out              |   96 +-
 .../clientpositive/tez/tez_self_join.q.out      |  205 +
 .../results/clientpositive/tez/tez_smb_1.q.out  |  278 +
 .../clientpositive/tez/tez_smb_main.q.out       |   20 +
 .../results/clientpositive/tez/tez_union.q.out  |   81 +
 .../results/clientpositive/tez/tez_union2.q.out |   18 +
 .../tez/tez_union_dynamic_partition.q.out       |  148 +
 .../clientpositive/tez/tez_union_group_by.q.out |   51 +-
 .../tez/tez_union_multiinsert.q.out             |  126 +-
 .../results/clientpositive/tez/transform1.q.out |    8 +-
 .../results/clientpositive/tez/union2.q.out     |   10 +
 .../results/clientpositive/tez/union3.q.out     |   12 +
 .../results/clientpositive/tez/union4.q.out     |   12 +
 .../results/clientpositive/tez/union5.q.out     |   12 +-
 .../results/clientpositive/tez/union6.q.out     |   10 +
 .../results/clientpositive/tez/union7.q.out     |   12 +-
 .../results/clientpositive/tez/union8.q.out     |    9 +
 .../results/clientpositive/tez/union9.q.out     |   15 +
 .../clientpositive/tez/unionDistinct_1.q.out    |  817 ++-
 .../clientpositive/tez/unionDistinct_2.q.out    |   38 +-
 .../tez/update_after_multiple_inserts.q.out     |   12 +-
 .../tez/update_all_partitioned.q.out            |   14 +-
 .../clientpositive/tez/update_all_types.q.out   |   48 +-
 .../clientpositive/tez/update_orig_table.q.out  |   17 +-
 .../tez/update_where_partitioned.q.out          |   20 +-
 .../clientpositive/tez/vector_bucket.q.out      |   10 +-
 .../clientpositive/tez/vector_coalesce.q.out    |  400 +-
 .../tez/vector_count_distinct.q.out             |   29 +-
 .../clientpositive/tez/vector_data_types.q.out  |  116 +-
 .../clientpositive/tez/vector_date_1.q.out      |   20 +-
 .../tez/vector_decimal_expressions.q.out        |   99 +-
 .../tez/vector_groupby_reduce.q.out             |   10 +-
 .../tez/vector_grouping_sets.q.out              |  266 +
 .../clientpositive/tez/vector_interval_2.q.out  |   60 +-
 .../tez/vector_interval_mapjoin.q.out           |  281 +
 .../clientpositive/tez/vector_join30.q.out      | 1367 ++++
 .../tez/vector_join_filters.q.out               |  222 +
 .../clientpositive/tez/vector_join_nulls.q.out  |  195 +
 .../tez/vector_left_outer_join2.q.out           |   20 +-
 .../tez/vector_left_outer_join3.q.out           |  222 +
 .../tez/vector_leftsemi_mapjoin.q.out           | 1092 +--
 .../tez/vector_mr_diff_schema_alias.q.out       |   42 +-
 .../tez/vector_multi_insert.q.out               |   20 +-
 .../tez/vector_null_projection.q.out            |  178 +
 .../tez/vector_nullsafe_join.q.out              | 1210 +++
 .../clientpositive/tez/vector_outer_join1.q.out |  376 +-
 .../clientpositive/tez/vector_outer_join2.q.out |  122 +-
 .../clientpositive/tez/vector_outer_join3.q.out |  164 +-
 .../clientpositive/tez/vector_outer_join4.q.out | 1060 +--
 .../clientpositive/tez/vector_outer_join5.q.out | 1328 ++++
 .../tez/vector_partitioned_date_time.q.out      |   10 +-
 .../clientpositive/tez/vectorization_0.q.out    |    8 +-
 .../clientpositive/tez/vectorization_1.q.out    |    8 +-
 .../clientpositive/tez/vectorization_10.q.out   |  428 +-
 .../clientpositive/tez/vectorization_11.q.out   |   74 +-
 .../clientpositive/tez/vectorization_12.q.out   |  994 +--
 .../clientpositive/tez/vectorization_13.q.out   |  414 +-
 .../clientpositive/tez/vectorization_14.q.out   | 1170 +--
 .../clientpositive/tez/vectorization_15.q.out   |   58 +-
 .../clientpositive/tez/vectorization_17.q.out   |  507 ++
 .../clientpositive/tez/vectorization_2.q.out    |    8 +-
 .../clientpositive/tez/vectorization_3.q.out    |    8 +-
 .../clientpositive/tez/vectorization_4.q.out    |    8 +-
 .../clientpositive/tez/vectorization_5.q.out    |    8 +-
 .../clientpositive/tez/vectorization_6.q.out    | 3042 ++++----
 .../clientpositive/tez/vectorization_7.q.out    |  320 +-
 .../clientpositive/tez/vectorization_8.q.out    |  306 +-
 .../clientpositive/tez/vectorization_9.q.out    |  957 ++-
 .../tez/vectorization_limit.q.out               |   31 +-
 .../tez/vectorization_part_project.q.out        |   40 +-
 .../tez/vectorization_short_regress.q.out       | 1240 ++--
 .../clientpositive/tez/vectorized_casts.q.out   |   42 +-
 .../tez/vectorized_date_funcs.q.out             |  272 +-
 .../tez/vectorized_distinct_gby.q.out           |   56 +-
 .../vectorized_dynamic_partition_pruning.q.out  |  398 +-
 .../clientpositive/tez/vectorized_mapjoin.q.out |    8 +-
 .../tez/vectorized_nested_mapjoin.q.out         |    8 +-
 .../tez/vectorized_rcfile_columnar.q.out        |   24 +-
 .../tez/vectorized_shufflejoin.q.out            |   37 +-
 .../tez/vectorized_timestamp_funcs.q.out        |  396 +-
 .../tez/vectorized_timestamp_ints_casts.q.out   |  234 +
 .../tez_join_result_complex.q.out               | 1337 ++++
 .../clientpositive/timestamp_literal.q.out      |   12 +-
 .../results/clientpositive/transform1.q.out     |    8 +-
 .../results/clientpositive/type_widening.q.out  |    4 +-
 .../clientpositive/udaf_collect_set_2.q.out     |  742 ++
 .../udaf_percentile_approx_23.q.out             |   16 +-
 ql/src/test/results/clientpositive/udf5.q.out   |   30 +-
 .../results/clientpositive/udf_add_months.q.out |    4 +-
 .../clientpositive/udf_bitwise_shiftleft.q.out  |    4 +-
 .../clientpositive/udf_bitwise_shiftright.q.out |    4 +-
 .../udf_bitwise_shiftrightunsigned.q.out        |    4 +-
 .../test/results/clientpositive/udf_cbrt.q.out  |    4 +-
 .../test/results/clientpositive/udf_crc32.q.out |   60 +
 .../clientpositive/udf_current_database.q.out   |   16 +-
 .../clientpositive/udf_date_format.q.out        |    4 +-
 .../results/clientpositive/udf_decode.q.out     |    6 +-
 .../results/clientpositive/udf_factorial.q.out  |    4 +-
 .../clientpositive/udf_folder_constants.q.out   |  120 +
 .../clientpositive/udf_from_utc_timestamp.q.out |    4 +-
 .../results/clientpositive/udf_in_file.q.out    |   10 +-
 .../results/clientpositive/udf_last_day.q.out   |    4 +-
 .../results/clientpositive/udf_length.q.out     |    4 +-
 .../clientpositive/udf_levenshtein.q.out        |    4 +-
 .../test/results/clientpositive/udf_md5.q.out   |    4 +-
 .../clientpositive/udf_months_between.q.out     |    4 +-
 .../results/clientpositive/udf_quarter.q.out    |    4 +-
 .../test/results/clientpositive/udf_sha1.q.out  |   61 +
 .../test/results/clientpositive/udf_sha2.q.out  |  134 +
 .../results/clientpositive/udf_sort_array.q.out |   33 +
 .../results/clientpositive/udf_soundex.q.out    |    4 +-
 .../clientpositive/udf_substring_index.q.out    |  107 +
 .../clientpositive/udf_to_utc_timestamp.q.out   |    4 +-
 .../test/results/clientpositive/udf_trunc.q.out |   32 +-
 .../clientpositive/udf_unix_timestamp.q.out     |   32 +-
 .../results/clientpositive/udtf_stack.q.out     |    8 +-
 .../test/results/clientpositive/union10.q.out   |   12 +-
 .../test/results/clientpositive/union11.q.out   |   16 +-
 .../test/results/clientpositive/union12.q.out   |   12 +-
 .../test/results/clientpositive/union14.q.out   |   12 +-
 .../test/results/clientpositive/union15.q.out   |   16 +-
 .../test/results/clientpositive/union17.q.out   |   22 +-
 .../test/results/clientpositive/union18.q.out   |    8 +-
 .../test/results/clientpositive/union19.q.out   |   20 +-
 .../test/results/clientpositive/union20.q.out   |    4 +-
 .../test/results/clientpositive/union21.q.out   |   24 +-
 .../test/results/clientpositive/union22.q.out   |    7 +
 ql/src/test/results/clientpositive/union4.q.out |    8 +-
 ql/src/test/results/clientpositive/union5.q.out |   12 +-
 ql/src/test/results/clientpositive/union7.q.out |   12 +-
 .../clientpositive/unionDistinct_1.q.out        |  351 +-
 .../clientpositive/unionDistinct_2.q.out        |   42 +-
 .../results/clientpositive/union_remove_1.q.out |   24 +-
 .../clientpositive/union_remove_10.q.out        |   24 +-
 .../clientpositive/union_remove_11.q.out        |   30 +-
 .../clientpositive/union_remove_12.q.out        |   20 +-
 .../clientpositive/union_remove_13.q.out        |   28 +-
 .../clientpositive/union_remove_14.q.out        |   20 +-
 .../clientpositive/union_remove_15.q.out        |   28 +-
 .../clientpositive/union_remove_16.q.out        |   28 +-
 .../clientpositive/union_remove_17.q.out        |   20 +-
 .../clientpositive/union_remove_18.q.out        |   28 +-
 .../clientpositive/union_remove_19.q.out        |   56 +-
 .../results/clientpositive/union_remove_2.q.out |   24 +-
 .../clientpositive/union_remove_20.q.out        |   28 +-
 .../clientpositive/union_remove_21.q.out        |   24 +-
 .../clientpositive/union_remove_22.q.out        |   56 +-
 .../clientpositive/union_remove_23.q.out        |   34 +-
 .../clientpositive/union_remove_24.q.out        |   28 +-
 .../clientpositive/union_remove_25.q.out        |   24 +-
 .../results/clientpositive/union_remove_3.q.out |   30 +-
 .../results/clientpositive/union_remove_4.q.out |   24 +-
 .../results/clientpositive/union_remove_5.q.out |   24 +-
 .../results/clientpositive/union_remove_6.q.out |   32 +-
 .../clientpositive/union_remove_6_subq.q.out    |   32 +-
 .../results/clientpositive/union_remove_7.q.out |   24 +-
 .../results/clientpositive/union_remove_8.q.out |   24 +-
 .../results/clientpositive/union_remove_9.q.out |   32 +-
 .../results/clientpositive/union_view.q.out     |  216 +-
 .../update_after_multiple_inserts.q.out         |   12 +-
 .../clientpositive/update_all_partitioned.q.out |   14 +-
 .../clientpositive/update_all_types.q.out       |   48 +-
 .../clientpositive/update_orig_table.q.out      |   17 +-
 .../update_where_partitioned.q.out              |   20 +-
 .../results/clientpositive/vector_bucket.q.out  |   10 +-
 .../clientpositive/vector_coalesce.q.out        |  288 +-
 .../clientpositive/vector_data_types.q.out      |  116 +-
 .../results/clientpositive/vector_date_1.q.out  |   20 +-
 .../vector_decimal_expressions.q.out            |   73 +-
 .../clientpositive/vector_groupby_reduce.q.out  |   10 +-
 .../clientpositive/vector_grouping_sets.q.out   |  253 +
 .../clientpositive/vector_interval_2.q.out      |   60 +-
 .../vector_interval_mapjoin.q.out               |  281 +
 .../results/clientpositive/vector_join30.q.out  | 2218 ++++++
 .../clientpositive/vector_join_filters.q.out    |  222 +
 .../clientpositive/vector_join_nulls.q.out      |  195 +
 .../vector_left_outer_join2.q.out               |    8 +-
 .../vector_leftsemi_mapjoin.q.out               |   48 +-
 .../clientpositive/vector_mapjoin_reduce.q.out  |   12 +
 .../vector_mr_diff_schema_alias.q.out           |   42 +-
 .../clientpositive/vector_multi_insert.q.out    |    6 +-
 .../clientpositive/vector_null_projection.q.out |  167 +
 .../clientpositive/vector_nullsafe_join.q.out   | 1208 +++
 .../clientpositive/vector_outer_join1.q.out     |  368 +-
 .../clientpositive/vector_outer_join2.q.out     |  118 +-
 .../clientpositive/vector_outer_join3.q.out     |  152 +-
 .../clientpositive/vector_outer_join4.q.out     | 1052 +--
 .../clientpositive/vector_outer_join5.q.out     | 1300 ++++
 .../vector_partitioned_date_time.q.out          |   10 +-
 .../vector_partitioned_date_time_win.q.out      | 2036 ++++++
 .../clientpositive/vectorization_0.q.out        |    8 +-
 .../clientpositive/vectorization_1.q.out        |    8 +-
 .../clientpositive/vectorization_10.q.out       |  428 +-
 .../clientpositive/vectorization_11.q.out       |   74 +-
 .../clientpositive/vectorization_12.q.out       |  994 +--
 .../clientpositive/vectorization_13.q.out       |  414 +-
 .../clientpositive/vectorization_14.q.out       | 1170 +--
 .../clientpositive/vectorization_15.q.out       |   58 +-
 .../clientpositive/vectorization_17.q.out       |  500 ++
 .../clientpositive/vectorization_2.q.out        |    8 +-
 .../clientpositive/vectorization_3.q.out        |    8 +-
 .../clientpositive/vectorization_4.q.out        |    8 +-
 .../clientpositive/vectorization_5.q.out        |    8 +-
 .../clientpositive/vectorization_6.q.out        | 3042 ++++----
 .../clientpositive/vectorization_7.q.out        |  312 +-
 .../clientpositive/vectorization_8.q.out        |  298 +-
 .../clientpositive/vectorization_9.q.out        |  957 ++-
 .../vectorization_part_project.q.out            |   40 +-
 .../vectorization_short_regress.q.out           | 1240 ++--
 .../clientpositive/vectorized_casts.q.out       |   42 +-
 .../clientpositive/vectorized_date_funcs.q.out  |  272 +-
 .../vectorized_distinct_gby.q.out               |    4 +-
 .../clientpositive/vectorized_mapjoin.q.out     |    8 +-
 .../vectorized_nested_mapjoin.q.out             |    8 +-
 .../vectorized_rcfile_columnar.q.out            |   24 +-
 .../clientpositive/vectorized_shufflejoin.q.out |   44 +-
 .../vectorized_timestamp_funcs.q.out            |  396 +-
 .../test/results/clientpositive/windowing.q.out |    4 +-
 .../clientpositive/windowing_windowspec.q.out   |  108 -
 .../clientpositive/windowing_windowspec2.q.out  | 3084 ++++++++
 .../clientpositive/windowing_windowspec3.q.out  |  232 +
 serde/pom.xml                                   |    4 +-
 .../hadoop/hive/ql/io/sarg/SearchArgument.java  |    2 +-
 .../hive/serde2/ColumnProjectionUtils.java      |   29 +-
 .../hadoop/hive/serde2/NullStructSerDe.java     |    2 +-
 .../hive/serde2/io/HiveDecimalWritable.java     |    5 +-
 .../hive/serde2/io/HiveVarcharWritable.java     |    7 +-
 .../hive/serde2/io/TimestampWritable.java       |    2 +-
 .../hive/serde2/lazy/LazySerDeParameters.java   |   18 +
 .../MetadataListStructObjectInspector.java      |    2 +-
 .../ObjectInspectorConverters.java              |    5 +-
 .../objectinspector/ObjectInspectorUtils.java   |    6 +-
 .../AbstractPrimitiveObjectInspector.java       |    1 +
 .../PrimitiveObjectInspectorFactory.java        |    4 +-
 .../primitive/WritableVoidObjectInspector.java  |    5 +
 .../hive/serde2/typeinfo/CharTypeInfo.java      |    5 +-
 .../hive/serde2/typeinfo/DecimalTypeInfo.java   |    7 +-
 .../hive/serde2/typeinfo/PrimitiveTypeInfo.java |    5 +-
 .../hive/serde2/typeinfo/VarcharTypeInfo.java   |    5 +-
 .../apache/hadoop/hive/serde2/VerifyFast.java   |   10 +-
 .../hive/serde2/io/TestTimestampWritable.java   |    2 +-
 .../hive/serde2/lazy/TestLazySimpleSerDe.java   |    9 +-
 service/pom.xml                                 |    2 +-
 .../org/apache/hive/service/CookieSigner.java   |   18 +
 .../apache/hive/service/auth/HttpAuthUtils.java |    2 +-
 .../auth/LdapAuthenticationProviderImpl.java    |  460 +-
 .../service/auth/TSetIpAddressProcessor.java    |    4 +-
 .../org/apache/hive/service/cli/CLIService.java |   13 -
 .../apache/hive/service/cli/ColumnValue.java    |    2 +
 .../java/org/apache/hive/service/cli/Type.java  |    2 +-
 .../cli/operation/GetCatalogsOperation.java     |   12 +-
 .../cli/operation/GetColumnsOperation.java      |   34 +
 .../cli/operation/GetFunctionsOperation.java    |   25 +
 .../cli/operation/GetSchemasOperation.java      |   13 +
 .../cli/operation/GetTableTypesOperation.java   |    4 +
 .../cli/operation/GetTablesOperation.java       |   10 +
 .../cli/operation/GetTypeInfoOperation.java     |    4 +
 .../cli/operation/MetadataOperation.java        |   35 +
 .../service/cli/operation/OperationManager.java |   13 +-
 .../service/cli/operation/SQLOperation.java     |   16 +-
 .../hive/service/cli/session/HiveSession.java   |   12 +-
 .../service/cli/session/HiveSessionImpl.java    |   30 +-
 .../cli/session/HiveSessionImplwithUGI.java     |   21 -
 .../service/cli/session/SessionManager.java     |    6 +-
 .../service/cli/thrift/ThriftCLIService.java    |    4 +
 .../service/cli/thrift/ThriftHttpServlet.java   |   20 +-
 .../apache/hive/service/server/HiveServer2.java |   28 +-
 .../TestLdapAuthenticationProviderImpl.java     |   18 +
 shims/0.20S/pom.xml                             |    2 +-
 .../hadoop/hive/shims/Hadoop20SShims.java       |    5 -
 .../apache/hadoop/mapred/WebHCatJTShim20S.java  |   10 +
 shims/0.23/pom.xml                              |    2 +-
 .../apache/hadoop/hive/shims/Hadoop23Shims.java |   22 +-
 .../apache/hadoop/mapred/WebHCatJTShim23.java   |   18 +-
 shims/aggregator/pom.xml                        |    2 +-
 shims/common/pom.xml                            |    2 +-
 .../apache/hadoop/hive/shims/HadoopShims.java   |    7 +-
 .../hive/thrift/HadoopThriftAuthBridge.java     |    6 +-
 shims/pom.xml                                   |    2 +-
 shims/scheduler/pom.xml                         |    2 +-
 spark-client/pom.xml                            |    4 +-
 .../apache/hive/spark/client/JobContext.java    |    2 +-
 .../hive/spark/client/JobContextImpl.java       |    7 +-
 .../hive/spark/client/SparkClientImpl.java      |    5 +-
 .../hive/spark/client/SparkClientUtilities.java |   13 +-
 .../apache/hive/spark/client/rpc/RpcServer.java |   18 +
 testutils/metastore/dbs/derby/execute.sh        |   37 +
 testutils/metastore/dbs/derby/prepare.sh        |   63 +
 testutils/metastore/dbs/postgres/execute.sh     |   29 +
 testutils/metastore/dbs/postgres/prepare.sh     |   72 +
 testutils/pom.xml                               |    2 +-
 .../org/apache/hive/ptest/execution/PTest.java  |   12 +-
 .../ptest/execution/conf/TestConfiguration.java |   12 +-
 .../execution/conf/TestTestConfiguration.java   |   38 +-
 .../resources/test-configuration.properties     |    2 +
 1727 files changed, 103421 insertions(+), 39461 deletions(-)
----------------------------------------------------------------------



[17/33] hive git commit: HIVE-11352: Avoid the double connections with 'e' option[beeline-cli branch](Ferdinand Xu via Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11352: Avoid the double connections with 'e' option[beeline-cli branch](Ferdinand Xu via Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/edbd8db0
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/edbd8db0
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/edbd8db0

Branch: refs/heads/master
Commit: edbd8db0cdda22b8ecbd8bf723c86f2f38fd3bae
Parents: 804f20a
Author: Ferdinand Xu <ch...@intel.com>
Authored: Sun Jul 26 22:32:59 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Sun Jul 26 22:32:59 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/edbd8db0/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index c47b9fe..d4beefc 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -827,10 +827,10 @@ public class BeeLine implements Closeable {
         }
       } else {
         int code = initArgsFromCliVars(args);
-        defaultConnect(false);
-        if (code != 0){
+        if (code != 0 || exit) {
           return code;
         }
+        defaultConnect(false);
         getOpts().updateBeeLineOptsFromConf();
         getOpts().setShowHeader(false);
         getOpts().setOutputFormat("dsv");


[14/33] hive git commit: HIVE-11226 BeeLine-Cli: support hive.cli.prompt in new CLI (Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11226 BeeLine-Cli: support hive.cli.prompt in new CLI (Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0ac8f6c4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0ac8f6c4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0ac8f6c4

Branch: refs/heads/master
Commit: 0ac8f6c485f84c2d306ef8cac97d5ea8b542477d
Parents: 30aa155
Author: Ferdinand Xu <ch...@intel.com>
Authored: Mon Jul 13 21:51:32 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Mon Jul 13 21:51:32 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 25 ++++++++++++++++----
 .../org/apache/hive/beeline/BeeLineOpts.java    |  6 ++++-
 .../java/org/apache/hive/beeline/Commands.java  | 11 ++++++++-
 .../apache/hive/beeline/cli/TestHiveCli.java    |  8 ++++++-
 4 files changed, 43 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0ac8f6c4/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 5a22956..d2b8590 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -87,6 +87,7 @@ import org.apache.commons.cli.GnuParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
 import org.apache.hive.jdbc.Utils;
@@ -1082,7 +1083,7 @@ public class BeeLine implements Closeable {
       boolean needsUpdate = isConfNeedsUpdate(line);
       boolean res = commands.sql(line, getOpts().getEntireLineAsCommand());
       if (needsUpdate) {
-        getOpts().setHiveConf(getCommands().getHiveConf(true));
+        getOpts().setHiveConf(getCommands().getHiveConf(false));
       }
       return res;
     }
@@ -1354,19 +1355,35 @@ public class BeeLine implements Closeable {
     }
   }
 
-
   String getPrompt() {
+    if (isBeeLine) {
+      return getPromptForBeeline();
+    } else {
+      return getPromptForCli();
+    }
+  }
+
+  String getPromptForCli() {
+    String prompt;
+    // read prompt configuration and substitute variables.
+    HiveConf conf = getCommands().getHiveConf(true);
+    prompt = conf.getVar(HiveConf.ConfVars.CLIPROMPT);
+    prompt = getCommands().substituteVariables(conf, prompt);
+    return prompt + "> ";
+  }
+
+  String getPromptForBeeline() {
     if (getDatabaseConnection() == null || getDatabaseConnection().getUrl() == null) {
       return "beeline> ";
     } else {
       String printClosed = getDatabaseConnection().isClosed() ? " (closed)" : "";
-      return getPrompt(getDatabaseConnections().getIndex()
+      return getPromptForBeeline(getDatabaseConnections().getIndex()
           + ": " + getDatabaseConnection().getUrl()) + printClosed + "> ";
     }
   }
 
 
-  static String getPrompt(String url) {
+  static String getPromptForBeeline(String url) {
     if (url == null || url.length() == 0) {
       url = "beeline";
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/0ac8f6c4/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index 894f74f..0a86c24 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -117,7 +117,7 @@ class BeeLineOpts implements Completer {
 
   public String[] possibleSettingValues() {
     List<String> vals = new LinkedList<String>();
-    vals.addAll(Arrays.asList(new String[] {"yes", "no"}));
+    vals.addAll(Arrays.asList(new String[] { "yes", "no" }));
     return vals.toArray(new String[vals.size()]);
   }
 
@@ -538,5 +538,9 @@ class BeeLineOpts implements Completer {
   public void setDelimiterForDSV(char delimiterForDSV) {
     this.delimiterForDSV = delimiterForDSV;
   }
+
+  public HiveConf getConf() {
+    return conf;
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/0ac8f6c4/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index b07388a..8c406a3 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -737,6 +737,15 @@ public class Commands {
    * @return the hive configuration from server side
    */
   public HiveConf getHiveConf(boolean call) {
+    HiveConf hiveConf = beeLine.getOpts().getConf();
+    if (hiveConf != null && call) {
+      return hiveConf;
+    } else {
+      return getHiveConfHelper(call);
+    }
+  }
+
+  public HiveConf getHiveConfHelper(boolean call) {
     HiveConf conf = new HiveConf();
     BufferedRows rows = getConfInternal(call);
     while (rows != null && rows.hasNext()) {
@@ -1015,7 +1024,7 @@ public class Commands {
     return execute(line, false, entireLineAsCommand);
   }
 
-  private String substituteVariables(HiveConf conf, String line) {
+  public String substituteVariables(HiveConf conf, String line) {
     if (!beeLine.isBeeLine()) {
       // Substitution is only supported in non-beeline mode.
       return new VariableSubstitution(new HiveVariableSource() {

http://git-wip-us.apache.org/repos/asf/hive/blob/0ac8f6c4/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index ed4e7c6..542f1ee 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -78,7 +78,8 @@ public class TestHiveCli {
       int retCode) {
     executeCMD(options, CMD, retCode);
     String output = os.toString();
-    Assert.assertTrue("The expected keyword doesn't occur in the output: " + output,
+    LOG.debug(output);
+    Assert.assertTrue("The expected keyword " + keywords + "doesn't occur in the output: " + output,
         output.contains(keywords));
   }
 
@@ -88,6 +89,11 @@ public class TestHiveCli {
   }
 
   @Test
+  public void testSetPromptValue() {
+    verifyCMD("set hive.cli.prompt=MYCLI;SHOW\nTABLES;", "MYCLI> ", os, null, ERRNO_OK);
+  }
+
+  @Test
   public void testHelp() {
     verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS);
   }


[10/33] hive git commit: HIVE-6791: Support variable substition for Beeline shell command (Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-6791: Support variable substition for Beeline shell command (Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/102b23b1
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/102b23b1
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/102b23b1

Branch: refs/heads/master
Commit: 102b23b16bf26cbf439009b4b95542490a082710
Parents: 00e0d55
Author: Ferdinand Xu <ch...@intel.com>
Authored: Sun Jun 28 20:42:54 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Sun Jun 28 20:42:54 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   |  75 +---
 .../java/org/apache/hive/beeline/Commands.java  | 430 ++++++++++++++-----
 .../apache/hive/beeline/cli/TestHiveCli.java    |  75 +++-
 .../org/apache/hadoop/hive/cli/CliDriver.java   |  24 +-
 .../hadoop/hive/conf/HiveVariableSource.java    |  24 ++
 .../hadoop/hive/conf/VariableSubstitution.java  |  70 +++
 .../hive/conf/TestVariableSubstitution.java     |  63 +++
 .../java/org/apache/hadoop/hive/ql/Driver.java  |  10 +-
 .../ql/parse/ColumnStatsSemanticAnalyzer.java   |  14 +-
 .../hive/ql/parse/VariableSubstitution.java     |  60 ---
 .../ql/processors/AddResourceProcessor.java     |  11 +-
 .../hive/ql/processors/CompileProcessor.java    |  11 +-
 .../ql/processors/DeleteResourceProcessor.java  |  11 +-
 .../hadoop/hive/ql/processors/DfsProcessor.java |  11 +-
 .../hadoop/hive/ql/processors/SetProcessor.java |  32 +-
 .../service/cli/operation/SQLOperation.java     |  10 +-
 16 files changed, 651 insertions(+), 280 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 66fe322..1d468eb 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -87,6 +87,7 @@ import org.apache.commons.cli.GnuParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
 import org.apache.hive.jdbc.Utils;
@@ -830,7 +831,7 @@ public class BeeLine implements Closeable {
       }
 
       if (getOpts().getScriptFile() != null) {
-        return executeFile(getOpts().getScriptFile(), false);
+        return executeFile(getOpts().getScriptFile());
       }
       try {
         info(getApplicationTitle());
@@ -849,7 +850,7 @@ public class BeeLine implements Closeable {
     if (initFile != null) {
       info("Running init script " + initFile);
       try {
-        return executeFile(initFile, false);
+        return executeFile(initFile);
       } finally {
         exit = false;
       }
@@ -884,7 +885,7 @@ public class BeeLine implements Closeable {
     return ERRNO_OK;
   }
 
-  private int executeFile(String fileName, boolean isSourceCMD) {
+  private int executeFile(String fileName) {
     FileInputStream initStream = null;
     try {
       initStream = new FileInputStream(fileName);
@@ -894,31 +895,8 @@ public class BeeLine implements Closeable {
       return ERRNO_OTHER;
     } finally {
       IOUtils.closeStream(initStream);
-      if(!isSourceCMD) {
-        consoleReader = null;
-        output("");   // dummy new line
-      }
-    }
-  }
-
-  private boolean isSourceCMD(String cmd) {
-    if (cmd == null || cmd.isEmpty())
-      return false;
-    String[] tokens = tokenizeCmd(cmd);
-    return tokens[0].equalsIgnoreCase("!source");
-  }
-
-  private boolean sourceFile(String cmd) {
-    String[] tokens = tokenizeCmd(cmd);
-    String cmd_1 = getFirstCmd(cmd, tokens[0].length());
-    File sourceFile = new File(cmd_1);
-    if (!sourceFile.isFile()) {
-      return false;
-    } else {
-      boolean ret = (executeFile(cmd_1, true) == ERRNO_OK);
-      // For source command, we should not exit even when meeting some empty line.
-      setExit(false);
-      return ret;
+      consoleReader = null;
+      output("");   // dummy new line
     }
   }
 
@@ -933,10 +911,6 @@ public class BeeLine implements Closeable {
 
         // trim line
         line = (line == null) ? null : line.trim();
-        if (!isBeeLine) {
-          line = cliToBeelineCmd(line);
-        }
-
         if (!dispatch(line) && exitOnError) {
           return ERRNO_OTHER;
         }
@@ -1043,31 +1017,6 @@ public class BeeLine implements Closeable {
   }
 
   /**
-   * Extract and clean up the first command in the input.
-   */
-  private String getFirstCmd(String cmd, int length) {
-    return cmd.substring(length).trim();
-  }
-
-  private String cliToBeelineCmd(String cmd) {
-    if (cmd == null)
-      return null;
-    String[] tokens = tokenizeCmd(cmd);
-    if (cmd.equalsIgnoreCase("quit") || cmd.equalsIgnoreCase("exit")
-	|| cmd.equalsIgnoreCase("quit;") || cmd.equals("exit;")) {
-      return null;
-    } else if (tokens[0].equalsIgnoreCase("source")) {
-      return COMMAND_PREFIX + cmd;
-    } else if (cmd.startsWith("!")) {
-      String shell_cmd = cmd.substring(1);
-      return "!sh " + shell_cmd;
-    } else { // local mode
-      // command like dfs
-      return cmd;
-    }
-  }
-
-  /**
    * Dispatch the specified line to the appropriate {@link CommandHandler}.
    *
    * @param line
@@ -1089,10 +1038,6 @@ public class BeeLine implements Closeable {
       return true;
     }
 
-    if(isSourceCMD(line)){
-      return sourceFile(line);
-    }
-
     line = line.trim();
 
     // save it to the current script, if any
@@ -2121,4 +2066,12 @@ public class BeeLine implements Closeable {
   protected Reflector getReflector() {
     return reflector;
   }
+
+  public boolean isBeeLine() {
+    return isBeeLine;
+  }
+
+  public void setBeeLine(boolean isBeeLine) {
+    this.isBeeLine = isBeeLine;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index aaf6aec..d490273 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -22,6 +22,10 @@
  */
 package org.apache.hive.beeline;
 
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.SystemVariables;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.io.IOUtils;
 
 import java.io.BufferedReader;
@@ -32,7 +36,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.reflect.Method;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.sql.CallableStatement;
@@ -44,9 +47,11 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.sql.SQLWarning;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
@@ -219,9 +224,8 @@ public class Commands {
 
 
   public boolean exportedkeys(String line) throws Exception {
-    return metadata("getExportedKeys", new String[] {
-        beeLine.getConnection().getCatalog(), null,
-        arg1(line, "table name"),});
+    return metadata("getExportedKeys",
+        new String[] { beeLine.getConnection().getCatalog(), null, arg1(line, "table name"), });
   }
 
 
@@ -709,10 +713,303 @@ public class Commands {
     return execute(line, false, false);
   }
 
+  /**
+   * This method is used for retrieving the latest configuration from hive server2.
+   * It uses the set command processor.
+   *
+   * @return
+   */
+  private Map<String, String> getHiveVariables() {
+    Map<String, String> result = new HashMap<>();
+    BufferedRows rows = getConfInternal();
+    while (rows.hasNext()) {
+      Rows.Row row = (Rows.Row) rows.next();
+      if (!row.isMeta) {
+        result.put(row.values[0], row.values[1]);
+      }
+    }
+    return result;
+  }
+
+  private HiveConf getHiveConf() {
+    HiveConf conf = new HiveConf();
+    BufferedRows rows = getConfInternal();
+    while (rows.hasNext()) {
+      addConf((Rows.Row) rows.next(), conf);
+    }
+    return conf;
+  }
+
+  private BufferedRows getConfInternal() {
+    Statement stmnt = null;
+    BufferedRows rows = null;
+    try {
+      stmnt = beeLine.createStatement();
+      boolean hasResults = stmnt.execute("set");
+      if (hasResults) {
+        ResultSet rs = stmnt.getResultSet();
+        rows = new BufferedRows(beeLine, rs);
+      }
+    } catch (SQLException e) {
+      beeLine.error(e);
+      if (stmnt != null) {
+        try {
+          stmnt.close();
+        } catch (SQLException e1) {
+          beeLine.error(e1);
+        }
+      }
+    }
+    return rows;
+  }
+
+  private void addConf(Rows.Row r, HiveConf hiveConf) {
+    if (r.isMeta) {
+      return;
+    }
+    if (r.values == null || r.values[0] == null || r.values[0].isEmpty()) {
+      return;
+    }
+    String val = r.values[0];
+    if (r.values[0].startsWith(SystemVariables.SYSTEM_PREFIX) || r.values[0]
+        .startsWith(SystemVariables.ENV_PREFIX)) {
+      return;
+    } else {
+      String[] kv = val.split("=", 2);
+      hiveConf.set(kv[0], kv[1]);
+    }
+  }
+
+  /**
+   * Extract and clean up the first command in the input.
+   */
+  private String getFirstCmd(String cmd, int length) {
+    return cmd.substring(length).trim();
+  }
+
+  private String[] tokenizeCmd(String cmd) {
+    return cmd.split("\\s+");
+  }
+
+  private boolean isSourceCMD(String cmd) {
+    if (cmd == null || cmd.isEmpty())
+      return false;
+    String[] tokens = tokenizeCmd(cmd);
+    return tokens[0].equalsIgnoreCase("!source");
+  }
+
+  private boolean sourceFile(String cmd) {
+    String[] tokens = tokenizeCmd(cmd);
+    String cmd_1 = getFirstCmd(cmd, tokens[0].length());
+
+    cmd_1 = substituteVariables(getHiveConf(), cmd_1);
+    File sourceFile = new File(cmd_1);
+    if (!sourceFile.isFile()) {
+      return false;
+    } else {
+      boolean ret;
+      try {
+        ret = sourceFileInternal(sourceFile);
+      } catch (IOException e) {
+        beeLine.error(e);
+        return false;
+      }
+      return ret;
+    }
+  }
+
+  private boolean sourceFileInternal(File sourceFile) throws IOException {
+    BufferedReader reader = null;
+    try {
+      reader = new BufferedReader(new FileReader(sourceFile));
+      String extra = reader.readLine();
+      String lines = null;
+      while (extra != null) {
+        if (beeLine.isComment(extra)) {
+          continue;
+        }
+        if (lines == null) {
+          lines = extra;
+        } else {
+          lines += "\n" + extra;
+        }
+        extra = reader.readLine();
+      }
+      String[] cmds = lines.split(";");
+      for (String c : cmds) {
+        if (!executeInternal(c, false)) {
+          return false;
+        }
+      }
+    } finally {
+      if (reader != null) {
+        reader.close();
+      }
+    }
+    return true;
+  }
+
+  private String cliToBeelineCmd(String cmd) {
+    if (cmd == null)
+      return null;
+    String[] tokens = tokenizeCmd(cmd);
+    if (tokens[0].equalsIgnoreCase("source")) {
+      return BeeLine.COMMAND_PREFIX + cmd;
+    } else if (cmd.startsWith("!")) {
+      String shell_cmd = cmd.substring(1);
+      return "!sh " + shell_cmd;
+    } else { // local mode
+      // command like dfs
+      return cmd;
+    }
+  }
+
+  // Return false only occurred error when execution the sql and the sql should follow the rules
+  // of beeline.
+  private boolean executeInternal(String sql, boolean call) {
+    if (sql == null || sql.length() == 0) {
+      return true;
+    }
+
+    if (beeLine.isComment(sql)) {
+      //skip this and rest cmds in the line
+      return true;
+    }
+
+    if (sql.startsWith(BeeLine.COMMAND_PREFIX)) {
+      sql = sql.substring(1);
+    }
+
+    String prefix = call ? "call" : "sql";
+
+    if (sql.startsWith(prefix)) {
+      sql = sql.substring(prefix.length());
+    }
+
+    // batch statements?
+    if (beeLine.getBatch() != null) {
+      beeLine.getBatch().add(sql);
+      return true;
+    }
+
+    try {
+      Statement stmnt = null;
+      boolean hasResults;
+      Thread logThread = null;
+
+      try {
+        long start = System.currentTimeMillis();
+
+        if (call) {
+          stmnt = beeLine.getDatabaseConnection().getConnection().prepareCall(sql);
+          hasResults = ((CallableStatement) stmnt).execute();
+        } else {
+          stmnt = beeLine.createStatement();
+          if (beeLine.getOpts().isSilent()) {
+            hasResults = stmnt.execute(sql);
+          } else {
+            logThread = new Thread(createLogRunnable(stmnt));
+            logThread.setDaemon(true);
+            logThread.start();
+            hasResults = stmnt.execute(sql);
+            logThread.interrupt();
+            logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
+          }
+        }
+
+        beeLine.showWarnings();
+
+        if (hasResults) {
+          do {
+            ResultSet rs = stmnt.getResultSet();
+            try {
+              int count = beeLine.print(rs);
+              long end = System.currentTimeMillis();
+
+              beeLine.info(
+                  beeLine.loc("rows-selected", count) + " " + beeLine.locElapsedTime(end - start));
+            } finally {
+              if (logThread != null) {
+                logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
+                showRemainingLogsIfAny(stmnt);
+                logThread = null;
+              }
+              rs.close();
+            }
+          } while (BeeLine.getMoreResults(stmnt));
+        } else {
+          int count = stmnt.getUpdateCount();
+          long end = System.currentTimeMillis();
+          beeLine.info(
+              beeLine.loc("rows-affected", count) + " " + beeLine.locElapsedTime(end - start));
+        }
+      } finally {
+        if (logThread != null) {
+          if (!logThread.isInterrupted()) {
+            logThread.interrupt();
+          }
+          logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
+          showRemainingLogsIfAny(stmnt);
+        }
+        if (stmnt != null) {
+          stmnt.close();
+        }
+      }
+    } catch (Exception e) {
+      return beeLine.error(e);
+    }
+    beeLine.showWarnings();
+    return true;
+  }
+
+  public String handleMultiLineCmd(String line) throws IOException {
+    //When using -e, console reader is not initialized and command is a single line
+    while (beeLine.getConsoleReader() != null && !(line.trim().endsWith(";")) && beeLine.getOpts()
+        .isAllowMultiLineCommand()) {
+
+      if (!beeLine.getOpts().isSilent()) {
+        StringBuilder prompt = new StringBuilder(beeLine.getPrompt());
+        for (int i = 0; i < prompt.length() - 1; i++) {
+          if (prompt.charAt(i) != '>') {
+            prompt.setCharAt(i, i % 2 == 0 ? '.' : ' ');
+          }
+        }
+      }
+
+      String extra;
+      if (beeLine.getOpts().isSilent() && beeLine.getOpts().getScriptFile() != null) {
+        extra = beeLine.getConsoleReader().readLine(null, jline.console.ConsoleReader.NULL_MASK);
+      } else {
+        extra = beeLine.getConsoleReader().readLine(beeLine.getPrompt());
+      }
+
+      if (extra == null) { //it happens when using -f and the line of cmds does not end with ;
+        break;
+      }
+      if (!beeLine.isComment(extra)) {
+        line += "\n" + extra;
+      }
+    }
+    return line;
+  }
+
   public boolean sql(String line, boolean entireLineAsCommand) {
     return execute(line, false, entireLineAsCommand);
   }
 
+  private String substituteVariables(HiveConf conf, String line) {
+    if (!beeLine.isBeeLine()) {
+      // Substitution is only supported in non-beeline mode.
+      return new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return getHiveVariables();
+        }
+      }).substitute(conf, line);
+    }
+    return line;
+  }
+
   public boolean sh(String line) {
     if (line == null || line.length() == 0) {
       return false;
@@ -723,9 +1020,7 @@ public class Commands {
     }
 
     line = line.substring("sh".length()).trim();
-
-    // Support variable substitution. HIVE-6791.
-    // line = new VariableSubstitution().substitute(new HiveConf(BeeLine.class), line.trim());
+    line = substituteVariables(getHiveConf(), line.trim());
 
     try {
       ShellCmdExecutor executor = new ShellCmdExecutor(line, beeLine.getOutputStream(),
@@ -738,7 +1033,6 @@ public class Commands {
       return true;
     } catch (Exception e) {
       beeLine.error("Exception raised from Shell command " + e);
-      beeLine.error(e);
       return false;
     }
   }
@@ -760,33 +1054,7 @@ public class Commands {
 
     // use multiple lines for statements not terminated by ";"
     try {
-      //When using -e, console reader is not initialized and command is a single line
-      while (beeLine.getConsoleReader() != null && !(line.trim().endsWith(";"))
-        && beeLine.getOpts().isAllowMultiLineCommand()) {
-
-        if (!beeLine.getOpts().isSilent()) {
-          StringBuilder prompt = new StringBuilder(beeLine.getPrompt());
-          for (int i = 0; i < prompt.length() - 1; i++) {
-            if (prompt.charAt(i) != '>') {
-              prompt.setCharAt(i, i % 2 == 0 ? '.' : ' ');
-            }
-          }
-        }
-
-        String extra = null;
-        if (beeLine.getOpts().isSilent() && beeLine.getOpts().getScriptFile() != null) {
-          extra = beeLine.getConsoleReader().readLine(null, jline.console.ConsoleReader.NULL_MASK);
-        } else {
-          extra = beeLine.getConsoleReader().readLine(beeLine.getPrompt());
-        }
-
-        if (extra == null) { //it happens when using -f and the line of cmds does not end with ;
-          break;
-        }
-        if (!beeLine.isComment(extra)) {
-          line += "\n" + extra;
-        }
-      }
+      line = handleMultiLineCmd(line);
     } catch (Exception e) {
       beeLine.handleException(e);
     }
@@ -806,93 +1074,23 @@ public class Commands {
     for (int i = 0; i < cmds.length; i++) {
       String sql = cmds[i].trim();
       if (sql.length() != 0) {
-        if (beeLine.isComment(sql)) {
-          //skip this and rest cmds in the line
-          break;
-        }
-        if (sql.startsWith(BeeLine.COMMAND_PREFIX)) {
-          sql = sql.substring(1);
-        }
-
-        String prefix = call ? "call" : "sql";
-
-        if (sql.startsWith(prefix)) {
-          sql = sql.substring(prefix.length());
+        if (!beeLine.isBeeLine()) {
+          sql = cliToBeelineCmd(sql);
+          if (sql.equalsIgnoreCase("quit") || sql.equalsIgnoreCase("exit")) {
+            beeLine.setExit(true);
+            return true;
+          }
         }
 
-        // batch statements?
-        if (beeLine.getBatch() != null) {
-          beeLine.getBatch().add(sql);
+        // is source CMD
+        if (isSourceCMD(sql)) {
+          sourceFile(sql);
           continue;
         }
 
-        try {
-          Statement stmnt = null;
-          boolean hasResults;
-          Thread logThread = null;
-
-          try {
-            long start = System.currentTimeMillis();
-
-            if (call) {
-              stmnt = beeLine.getDatabaseConnection().getConnection().prepareCall(sql);
-              hasResults = ((CallableStatement) stmnt).execute();
-            } else {
-              stmnt = beeLine.createStatement();
-              if (beeLine.getOpts().isSilent()) {
-                hasResults = stmnt.execute(sql);
-              } else {
-                logThread = new Thread(createLogRunnable(stmnt));
-                logThread.setDaemon(true);
-                logThread.start();
-                hasResults = stmnt.execute(sql);
-                logThread.interrupt();
-                logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
-              }
-            }
-
-            beeLine.showWarnings();
-
-            if (hasResults) {
-              do {
-                ResultSet rs = stmnt.getResultSet();
-                try {
-                  int count = beeLine.print(rs);
-                  long end = System.currentTimeMillis();
-
-                  beeLine.info(beeLine.loc("rows-selected", count) + " "
-                      + beeLine.locElapsedTime(end - start));
-                } finally {
-                  if (logThread != null) {
-                    logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
-                    showRemainingLogsIfAny(stmnt);
-                    logThread = null;
-                  }
-                  rs.close();
-                }
-              } while (BeeLine.getMoreResults(stmnt));
-            } else {
-              int count = stmnt.getUpdateCount();
-              long end = System.currentTimeMillis();
-              beeLine.info(beeLine.loc("rows-affected", count)
-                  + " " + beeLine.locElapsedTime(end - start));
-            }
-          } finally {
-            if (logThread != null) {
-              if (!logThread.isInterrupted()) {
-                logThread.interrupt();
-              }
-              logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT);
-              showRemainingLogsIfAny(stmnt);
-            }
-            if (stmnt != null) {
-              stmnt.close();
-            }
-          }
-        } catch (Exception e) {
-          return beeLine.error(e);
+        if (!executeInternal(sql, call)) {
+          return false;
         }
-        beeLine.showWarnings();
       }
     }
     return true;

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index 6cbb030..ff8ab17 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -42,6 +42,10 @@ public class TestHiveCli {
 
   private final static String SOURCE_CONTEXT =
       "create table if not exists test.testSrcTbl(a string, b string);";
+  private final static String SOURCE_CONTEXT2 =
+      "create table if not exists test.testSrcTbl2(a string);";
+  private final static String SOURCE_CONTEXT3 =
+      "create table if not exists test.testSrcTbl3(a string);";
   final static String CMD =
       "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b "
           + "string);\n";
@@ -60,7 +64,7 @@ public class TestHiveCli {
         inputStream = IOUtils.toInputStream(input);
       }
       ret = cli.runWithArgs(args, inputStream);
-    } catch (IOException e) {
+    } catch (Throwable e) {
       LOG.error("Failed to execute command due to the error: " + e);
     } finally {
       if (retCode != ret) {
@@ -77,48 +81,81 @@ public class TestHiveCli {
     Assert.assertTrue(output.contains(keywords));
   }
 
-  @Test public void testInValidCmd() {
-    verifyCMD("!lss\n", "Failed to execute lss", errS, null, ERRNO_OK);
+  @Test
+  public void testInValidCmd() {
+    verifyCMD("!lss\n", "Unknown command: lss", errS, null, ERRNO_OK);
   }
 
-  @Test public void testHelp() {
+  @Test
+  public void testHelp() {
     verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS);
   }
 
-  @Test public void testInvalidDatabaseOptions() {
-    verifyCMD("\nshow tables\nquit\n", "Database does not exist: invalidDB", errS,
+  @Test
+  public void testInvalidDatabaseOptions() {
+    verifyCMD("\nshow tables;\nquit;\n", "Database does not exist: invalidDB", errS,
         new String[] { "--database", "invalidDB" }, ERRNO_OK);
   }
 
-  @Test public void testDatabaseOptions() {
+  @Test
+  public void testDatabaseOptions() {
     verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[] { "--database", "test" },
         ERRNO_OK);
   }
 
-  @Test public void testSourceCmd() {
+  @Test
+  public void testSourceCmd() {
     File f = generateTmpFile(SOURCE_CONTEXT);
-    verifyCMD("source " + f.getPath() + "\n" + "desc testSrcTbl\n" + "quit\n", "col_name", os,
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl;\nquit;\n", "col_name", os,
         new String[] { "--database", "test" }, ERRNO_OK);
+    f.delete();
   }
 
-  @Test public void testSqlFromCmd() {
+  @Test
+  public void testSourceCmd2() {
+    File f = generateTmpFile(SOURCE_CONTEXT3);
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl3;\nquit;\n", "col_name", os,
+        new String[] { "--database", "test" }, ERRNO_OK);
+    f.delete();
+  }
+
+  @Test
+  public void testSqlFromCmd() {
     verifyCMD(null, "", os, new String[] { "-e", "show databases;" }, ERRNO_OK);
   }
 
-  @Test public void testSqlFromCmdWithDBName() {
+  @Test
+  public void testSqlFromCmdWithDBName() {
     verifyCMD(null, "testTbl", os, new String[] { "-e", "show tables;", "--database", "test" },
         ERRNO_OK);
   }
 
-  @Test public void testInvalidOptions() {
+  @Test
+  public void testInvalidOptions() {
     verifyCMD(null, "The '-e' and '-f' options cannot be specified simultaneously", errS,
         new String[] { "-e", "show tables;", "-f", "path/to/file" }, ERRNO_ARGS);
   }
 
-  @Test public void testInvalidOptions2() {
+  @Test
+  public void testInvalidOptions2() {
     verifyCMD(null, "Unrecognized option: -k", errS, new String[] { "-k" }, ERRNO_ARGS);
   }
 
+  @Test
+  public void testVariables() {
+    verifyCMD("set system:xxx=5;\nset system:yyy=${system:xxx};\nset system:yyy;", "", os, null,
+        ERRNO_OK);
+  }
+
+  @Test
+  public void testVariablesForSource() {
+    File f = generateTmpFile(SOURCE_CONTEXT2);
+    verifyCMD(
+        "set hiveconf:zzz=" + f.getAbsolutePath() + ";\nsource ${hiveconf:zzz};\ndesc testSrcTbl2;",
+        "col_name", os, new String[] { "--database", "test" }, ERRNO_OK);
+    f.delete();
+  }
+
   private void redirectOutputStream() {
     // Setup output stream to redirect output to
     os = new ByteArrayOutputStream();
@@ -152,13 +189,15 @@ public class TestHiveCli {
     return file;
   }
 
-  @Before public void setup() {
+  @Before
+  public void setup() {
     cli = new HiveCli();
     redirectOutputStream();
     initFromFile();
   }
 
-  @After public void tearDown() {
+  @After
+  public void tearDown() {
     tmp.delete();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
----------------------------------------------------------------------
diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
index d62fd5c..4b52578 100644
--- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
+++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
@@ -61,7 +61,9 @@ import org.apache.hadoop.hive.common.cli.ShellCmdExecutor;
 import org.apache.hadoop.hive.common.io.CachingPrintStream;
 import org.apache.hadoop.hive.common.io.FetchConverter;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
 import org.apache.hadoop.hive.conf.Validator;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.ql.CommandNeedRetryException;
 import org.apache.hadoop.hive.ql.Driver;
@@ -69,7 +71,6 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
 import org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper;
 import org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.processors.CommandProcessor;
 import org.apache.hadoop.hive.ql.processors.CommandProcessorFactory;
 import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
@@ -127,7 +128,12 @@ public class CliDriver {
 
     } else if (tokens[0].equalsIgnoreCase("source")) {
       String cmd_1 = getFirstCmd(cmd_trimmed, tokens[0].length());
-      cmd_1 = new VariableSubstitution().substitute(ss.getConf(), cmd_1);
+      cmd_1 = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), cmd_1);
 
       File sourceFile = new File(cmd_1);
       if (! sourceFile.isFile()){
@@ -145,7 +151,12 @@ public class CliDriver {
     } else if (cmd_trimmed.startsWith("!")) {
 
       String shell_cmd = cmd_trimmed.substring(1);
-      shell_cmd = new VariableSubstitution().substitute(ss.getConf(), shell_cmd);
+      shell_cmd = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), shell_cmd);
 
       // shell_cmd = "/bin/bash -c \'" + shell_cmd + "\'";
       try {
@@ -671,7 +682,12 @@ public class CliDriver {
 
     // read prompt configuration and substitute variables.
     prompt = conf.getVar(HiveConf.ConfVars.CLIPROMPT);
-    prompt = new VariableSubstitution().substitute(conf, prompt);
+    prompt = new VariableSubstitution(new HiveVariableSource() {
+      @Override
+      public Map<String, String> getHiveVariable() {
+        return SessionState.get().getHiveVariables();
+      }
+    }).substitute(conf, prompt);
     prompt2 = spacesForString(prompt);
 
     SessionState.start(ss);

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/common/src/java/org/apache/hadoop/hive/conf/HiveVariableSource.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveVariableSource.java b/common/src/java/org/apache/hadoop/hive/conf/HiveVariableSource.java
new file mode 100644
index 0000000..86f7a9c
--- /dev/null
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveVariableSource.java
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.conf;
+
+import java.util.Map;
+
+public interface HiveVariableSource {
+  Map<String, String> getHiveVariable();
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/common/src/java/org/apache/hadoop/hive/conf/VariableSubstitution.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/VariableSubstitution.java b/common/src/java/org/apache/hadoop/hive/conf/VariableSubstitution.java
new file mode 100644
index 0000000..e1f53ba
--- /dev/null
+++ b/common/src/java/org/apache/hadoop/hive/conf/VariableSubstitution.java
@@ -0,0 +1,70 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.conf;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+
+import java.util.Map;
+
+public class VariableSubstitution extends SystemVariables {
+  private static final Log l4j = LogFactory.getLog(VariableSubstitution.class);
+
+  private HiveVariableSource hiveVariableSource;
+
+  public VariableSubstitution(HiveVariableSource hiveVariableSource) {
+    this.hiveVariableSource = hiveVariableSource;
+  }
+
+  /**
+   * The super method will handle with the case of substitutions for system variables,
+   * hive conf variables and env variables. In this method, it will retrieve the hive
+   * variables using hiveVariableSource.
+   *
+   * @param conf
+   * @param var
+   * @return
+   */
+  @Override
+  protected String getSubstitute(Configuration conf, String var) {
+    String val = super.getSubstitute(conf, var);
+    if (val == null && hiveVariableSource != null) {
+      Map<String, String> vars = hiveVariableSource.getHiveVariable();
+      if (var.startsWith(HIVEVAR_PREFIX)) {
+        val = vars.get(var.substring(HIVEVAR_PREFIX.length()));
+      } else {
+        val = vars.get(var);
+      }
+    }
+    return val;
+  }
+
+  public String substitute(HiveConf conf, String expr) {
+    if (expr == null) {
+      return expr;
+    }
+    if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVEVARIABLESUBSTITUTE)) {
+      l4j.debug("Substitution is on: " + expr);
+    } else {
+      return expr;
+    }
+    int depth = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVEVARIABLESUBSTITUTEDEPTH);
+    return substitute(conf, expr, depth);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/common/src/test/org/apache/hadoop/hive/conf/TestVariableSubstitution.java
----------------------------------------------------------------------
diff --git a/common/src/test/org/apache/hadoop/hive/conf/TestVariableSubstitution.java b/common/src/test/org/apache/hadoop/hive/conf/TestVariableSubstitution.java
new file mode 100644
index 0000000..faa07a7
--- /dev/null
+++ b/common/src/test/org/apache/hadoop/hive/conf/TestVariableSubstitution.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.conf;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestVariableSubstitution {
+  private static class LocalMySource {
+    final Map<String, String> map = new HashMap<>();
+
+    public void put(String k, String v) {
+      map.put(k, v);
+    }
+
+    public String get(String k) {
+      return map.get(k);
+    }
+  }
+
+  private static LocalMySource getMySource() {
+    return localSource.get();
+  }
+
+  private static ThreadLocal<LocalMySource> localSource = new ThreadLocal<LocalMySource>() {
+    @Override protected LocalMySource initialValue() {
+      return new LocalMySource();
+    }
+  };
+
+  @Test public void testVariableSource() throws InterruptedException {
+    final VariableSubstitution variableSubstitution =
+        new VariableSubstitution(new HiveVariableSource() {
+          @Override public Map<String, String> getHiveVariable() {
+            return TestVariableSubstitution.getMySource().map;
+          }
+        });
+
+    String v = variableSubstitution.substitute(new HiveConf(), "${a}");
+    Assert.assertEquals("${a}", v);
+    TestVariableSubstitution.getMySource().put("a", "b");
+    v = variableSubstitution.substitute(new HiveConf(), "${a}");
+    Assert.assertEquals("b", v);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
index 669e6be..140d6aa 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -40,6 +40,8 @@ import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.hive.common.ValidTxnList;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.MetaStoreUtils;
 import org.apache.hadoop.hive.metastore.api.Database;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
@@ -96,7 +98,6 @@ import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
 import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer;
 import org.apache.hadoop.hive.ql.parse.SemanticAnalyzerFactory;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
 import org.apache.hadoop.hive.ql.plan.HiveOperation;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
@@ -385,7 +386,12 @@ public class Driver implements CommandProcessor {
     SessionState.get().setupQueryCurrentTimestamp();
 
     try {
-      command = new VariableSubstitution().substitute(conf,command);
+      command = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(conf, command);
       ctx = new Context(conf);
       ctx.setTryCount(getTryCount());
       ctx.setCmd(command);

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
index a5f0a7f..da2a902 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
@@ -28,12 +28,13 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.ql.Context;
 import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.metadata.InvalidTableException;
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.serde.serdeConstants;
@@ -216,10 +217,10 @@ public class ColumnStatsSemanticAnalyzer extends SemanticAnalyzer {
       //for other usually not used types, just quote the value
       returnVal = "'" + partVal + "'";
     }
-    
+
     return returnVal;
   }
-  
+
   private String getColTypeOf (String partKey) throws SemanticException{
 
     for (FieldSchema fs : tbl.getPartitionKeys()) {
@@ -333,7 +334,12 @@ public class ColumnStatsSemanticAnalyzer extends SemanticAnalyzer {
     }
 
     rewrittenQuery = rewrittenQueryBuilder.toString();
-    rewrittenQuery = new VariableSubstitution().substitute(conf, rewrittenQuery);
+    rewrittenQuery = new VariableSubstitution(new HiveVariableSource() {
+      @Override
+      public Map<String, String> getHiveVariable() {
+        return SessionState.get().getHiveVariables();
+      }
+    }).substitute(conf, rewrittenQuery);
     return rewrittenQuery;
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java
deleted file mode 100644
index e8b1d96..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.parse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.hive.conf.SystemVariables;
-
-import java.util.Map;
-
-public class VariableSubstitution extends SystemVariables {
-
-  private static final Log l4j = LogFactory.getLog(VariableSubstitution.class);
-
-  @Override
-  protected String getSubstitute(Configuration conf, String var) {
-    String val = super.getSubstitute(conf, var);
-    if (val == null && SessionState.get() != null) {
-      Map<String,String> vars = SessionState.get().getHiveVariables();
-      if (var.startsWith(HIVEVAR_PREFIX)) {
-        val =  vars.get(var.substring(HIVEVAR_PREFIX.length()));
-      } else {
-        val = vars.get(var);
-      }
-    }
-    return val;
-  }
-
-  public String substitute(HiveConf conf, String expr) {
-    if (expr == null) {
-      return expr;
-    }
-    if (HiveConf.getBoolVar(conf, ConfVars.HIVEVARIABLESUBSTITUTE)) {
-      l4j.debug("Substitution is on: " + expr);
-    } else {
-      return expr;
-    }
-    int depth = HiveConf.getIntVar(conf, ConfVars.HIVEVARIABLESUBSTITUTEDEPTH);
-    return substitute(conf, expr, depth);
-  }
-}

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java
index 0558c53..d2ac993 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java
@@ -19,11 +19,13 @@
 package org.apache.hadoop.hive.ql.processors;
 
 import java.util.Arrays;
+import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveOperationType;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
@@ -45,7 +47,12 @@ public class AddResourceProcessor implements CommandProcessor {
   @Override
   public CommandProcessorResponse run(String command) {
     SessionState ss = SessionState.get();
-    command = new VariableSubstitution().substitute(ss.getConf(),command);
+    command = new VariableSubstitution(new HiveVariableSource() {
+      @Override
+      public Map<String, String> getHiveVariable() {
+        return SessionState.get().getHiveVariables();
+      }
+    }).substitute(ss.getConf(),command);
     String[] tokens = command.split("\\s+");
     SessionState.ResourceType t;
     if (tokens.length < 2

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/processors/CompileProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/CompileProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/CompileProcessor.java
index 25ce168..7b79f64 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/CompileProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/CompileProcessor.java
@@ -24,6 +24,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.Arrays;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -32,9 +33,10 @@ import org.apache.commons.compress.archivers.jar.JarArchiveOutputStream;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.ql.CommandNeedRetryException;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveOperationType;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
@@ -142,7 +144,12 @@ public class CompileProcessor implements CommandProcessor {
   @VisibleForTesting
   void parse(SessionState ss) throws CompileProcessorException {
     if (ss != null){
-      command = new VariableSubstitution().substitute(ss.getConf(), command);
+      command = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), command);
     }
     if (command == null || command.length() == 0) {
       throw new CompileProcessorException("Command was empty");

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/processors/DeleteResourceProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/DeleteResourceProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/DeleteResourceProcessor.java
index 9052c82..736fa9c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/DeleteResourceProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/DeleteResourceProcessor.java
@@ -19,11 +19,13 @@
 package org.apache.hadoop.hive.ql.processors;
 
 import java.util.Arrays;
+import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveOperationType;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
@@ -44,7 +46,12 @@ public class DeleteResourceProcessor implements CommandProcessor {
   @Override
   public CommandProcessorResponse run(String command) {
     SessionState ss = SessionState.get();
-    command = new VariableSubstitution().substitute(ss.getConf(),command);
+    command = new VariableSubstitution(new HiveVariableSource() {
+      @Override
+      public Map<String, String> getHiveVariable() {
+        return SessionState.get().getHiveVariables();
+      }
+    }).substitute(ss.getConf(), command);
     String[] tokens = command.split("\\s+");
 
     SessionState.ResourceType t;

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/processors/DfsProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/DfsProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/DfsProcessor.java
index cc0414d..c3d5f81 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/DfsProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/DfsProcessor.java
@@ -20,14 +20,16 @@ package org.apache.hadoop.hive.ql.processors;
 
 import java.io.PrintStream;
 import java.util.Arrays;
+import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FsShell;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.Schema;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveOperationType;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
@@ -65,7 +67,12 @@ public class DfsProcessor implements CommandProcessor {
 
     try {
       SessionState ss = SessionState.get();
-      command = new VariableSubstitution().substitute(ss.getConf(),command);
+      command = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), command);
 
       String[] tokens = command.split("\\s+");
       CommandProcessorResponse authErrResp =

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java
index d271d6d..e5f5f71 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java
@@ -30,10 +30,11 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.Schema;
 import org.apache.hadoop.hive.ql.metadata.Hive;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.session.SessionState;
 
 /**
@@ -121,17 +122,33 @@ public class SetProcessor implements CommandProcessor {
       return 1;
     } else if (varname.startsWith(SYSTEM_PREFIX)){
       String propName = varname.substring(SYSTEM_PREFIX.length());
-      System.getProperties().setProperty(propName, new VariableSubstitution().substitute(ss.getConf(),varvalue));
+      System.getProperties()
+          .setProperty(propName, new VariableSubstitution(new HiveVariableSource() {
+            @Override
+            public Map<String, String> getHiveVariable() {
+              return SessionState.get().getHiveVariables();
+            }
+          }).substitute(ss.getConf(), varvalue));
     } else if (varname.startsWith(HIVECONF_PREFIX)){
       String propName = varname.substring(HIVECONF_PREFIX.length());
       setConf(varname, propName, varvalue, false);
     } else if (varname.startsWith(HIVEVAR_PREFIX)) {
       String propName = varname.substring(HIVEVAR_PREFIX.length());
-      ss.getHiveVariables().put(propName, new VariableSubstitution().substitute(ss.getConf(),varvalue));
+      ss.getHiveVariables().put(propName, new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), varvalue));
     } else if (varname.startsWith(METACONF_PREFIX)) {
       String propName = varname.substring(METACONF_PREFIX.length());
       Hive hive = Hive.get(ss.getConf());
-      hive.setMetaConf(propName, new VariableSubstitution().substitute(ss.getConf(), varvalue));
+      hive.setMetaConf(propName, new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(ss.getConf(), varvalue));
     } else {
       setConf(varname, varname, varvalue, true);
       if (varname.equals(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED.toString())) {
@@ -145,7 +162,12 @@ public class SetProcessor implements CommandProcessor {
   private static void setConf(String varname, String key, String varvalue, boolean register)
         throws IllegalArgumentException {
     HiveConf conf = SessionState.get().getConf();
-    String value = new VariableSubstitution().substitute(conf, varvalue);
+    String value = new VariableSubstitution(new HiveVariableSource() {
+      @Override
+      public Map<String, String> getHiveVariable() {
+        return SessionState.get().getHiveVariables();
+      }
+    }).substitute(conf, varvalue);
     if (conf.getBoolVar(HiveConf.ConfVars.HIVECONFVALIDATION)) {
       HiveConf.ConfVars confVars = HiveConf.getConfVars(key);
       if (confVars != null) {

http://git-wip-us.apache.org/repos/asf/hive/blob/102b23b1/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index cc9df76..f4334e4 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -32,6 +32,8 @@ import java.util.concurrent.RejectedExecutionException;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveVariableSource;
+import org.apache.hadoop.hive.conf.VariableSubstitution;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.Schema;
 import org.apache.hadoop.hive.ql.CommandNeedRetryException;
@@ -39,7 +41,6 @@ import org.apache.hadoop.hive.ql.Driver;
 import org.apache.hadoop.hive.ql.exec.ExplainTask;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.metadata.Hive;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
 import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
 import org.apache.hadoop.hive.ql.session.OperationLog;
 import org.apache.hadoop.hive.ql.session.SessionState;
@@ -105,7 +106,12 @@ public class SQLOperation extends ExecuteStatementOperation {
       // For now, we disable the test attempts.
       driver.setTryCount(Integer.MAX_VALUE);
 
-      String subStatement = new VariableSubstitution().substitute(sqlOperationConf, statement);
+      String subStatement = new VariableSubstitution(new HiveVariableSource() {
+        @Override
+        public Map<String, String> getHiveVariable() {
+          return SessionState.get().getHiveVariables();
+        }
+      }).substitute(sqlOperationConf, statement);
       response = driver.compileAndRespond(subStatement);
       if (0 != response.getResponseCode()) {
         throw toSQLException("Error while compiling statement", response);


[22/33] hive git commit: HIVE-11640: Shell command doesn't work for new CLI[Beeline-cli branch](Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11640: Shell command doesn't work for new CLI[Beeline-cli branch](Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/b90a2ae5
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/b90a2ae5
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/b90a2ae5

Branch: refs/heads/master
Commit: b90a2ae5dfb3371bcf1a8ff5f683d8fdd5dbe0ee
Parents: 3d088de
Author: Ferdinand Xu <ch...@intel.com>
Authored: Mon Sep 7 23:36:29 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Mon Sep 7 23:36:29 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 82 ++++++++++++--------
 .../java/org/apache/hive/beeline/Commands.java  | 44 +++++------
 .../apache/hive/beeline/cli/TestHiveCli.java    | 32 ++++++--
 3 files changed, 95 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/b90a2ae5/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 1e4759b..11ff3f2 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -695,6 +695,7 @@ public class BeeLine implements Closeable {
     if (!commands.isEmpty()) {
       embeddedConnect();
       connectDBInEmbededMode();
+      updateOptsForCli();
       for (Iterator<String> i = commands.iterator(); i.hasNext(); ) {
         String command = i.next().toString();
         debug(loc("executing-command", command));
@@ -811,6 +812,14 @@ public class BeeLine implements Closeable {
     }
   }
 
+  private void updateOptsForCli() {
+    getOpts().updateBeeLineOptsFromConf();
+    getOpts().setShowHeader(false);
+    getOpts().setOutputFormat("dsv");
+    getOpts().setDelimiterForDSV(' ');
+    getOpts().setNullEmptyString(true);
+  }
+
   /**
    * Start accepting input from stdin, and dispatch it
    * to the appropriate {@link CommandHandler} until the
@@ -836,10 +845,7 @@ public class BeeLine implements Closeable {
           return code;
         }
         defaultConnect(false);
-        getOpts().updateBeeLineOptsFromConf();
-        getOpts().setShowHeader(false);
-        getOpts().setOutputFormat("dsv");
-        getOpts().setDelimiterForDSV(' ');
+        updateOptsForCli();
 
         processInitFiles(opts.getInitFiles());
       }
@@ -958,6 +964,7 @@ public class BeeLine implements Closeable {
 
         // trim line
         line = (line == null) ? null : line.trim();
+
         if (!dispatch(line) && exitOnError) {
           return ERRNO_OTHER;
         }
@@ -1059,8 +1066,33 @@ public class BeeLine implements Closeable {
     output(loc("cmd-usage"));
   }
 
-  private String[] tokenizeCmd(String cmd) {
-    return cmd.split("\\s+");
+  /**
+   * This method is used for executing commands beginning with !
+   * @param line
+   * @return
+   */
+  public boolean execCommandWithPrefix(String line) {
+    Map<String, CommandHandler> cmdMap = new TreeMap<String, CommandHandler>();
+    line = line.substring(1);
+    for (int i = 0; i < commandHandlers.length; i++) {
+      String match = commandHandlers[i].matches(line);
+      if (match != null) {
+        cmdMap.put(match, commandHandlers[i]);
+      }
+    }
+
+    if (cmdMap.size() == 0) {
+      return error(loc("unknown-command", line));
+    }
+    if (cmdMap.size() > 1) {
+      // any exact match?
+      CommandHandler handler = cmdMap.get(line);
+      if (handler == null) {
+        return error(loc("multiple-matches", cmdMap.keySet().toString()));
+      }
+      return handler.execute(line);
+    }
+    return cmdMap.values().iterator().next().execute(line);
   }
 
   /**
@@ -1096,35 +1128,19 @@ public class BeeLine implements Closeable {
       line = "!help";
     }
 
-    if (line.startsWith(COMMAND_PREFIX)) {
-      Map<String, CommandHandler> cmdMap = new TreeMap<String, CommandHandler>();
-      line = line.substring(1);
-      for (int i = 0; i < commandHandlers.length; i++) {
-        String match = commandHandlers[i].matches(line);
-        if (match != null) {
-          CommandHandler prev = cmdMap.put(match, commandHandlers[i]);
-          if (prev != null) {
-            return error(loc("multiple-matches",
-                Arrays.asList(prev.getName(), commandHandlers[i].getName())));
-          }
-        }
-      }
-
-      if (cmdMap.size() == 0) {
-        return error(loc("unknown-command", line));
-      }
-      if (cmdMap.size() > 1) {
-        // any exact match?
-        CommandHandler handler = cmdMap.get(line);
-        if (handler == null) {
-          return error(loc("multiple-matches", cmdMap.keySet().toString()));
-        }
-        return handler.execute(line);
+    if (isBeeLine) {
+      if (line.startsWith(COMMAND_PREFIX) && !line.contains(";")) {
+        // handle the case "!cmd" for beeline
+        return execCommandWithPrefix(line);
+      } else {
+        return commands.sql(line, getOpts().getEntireLineAsCommand());
       }
-      return cmdMap.values().iterator().next()
-          .execute(line);
     } else {
-      return commands.sql(line, getOpts().getEntireLineAsCommand());
+      if (line.toLowerCase().startsWith("!connect")) {
+        return execCommandWithPrefix(line);
+      } else {
+        return commands.sql(line, getOpts().getEntireLineAsCommand());
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/b90a2ae5/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index 5e5cfec..d16b4ec 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -824,7 +824,7 @@ public class Commands {
     if (cmd == null || cmd.isEmpty())
       return false;
     String[] tokens = tokenizeCmd(cmd);
-    return tokens[0].equalsIgnoreCase("!source");
+    return tokens[0].equalsIgnoreCase("source");
   }
 
   private boolean sourceFile(String cmd) {
@@ -866,6 +866,7 @@ public class Commands {
       }
       String[] cmds = lines.split(";");
       for (String c : cmds) {
+        c = c.trim();
         if (!executeInternal(c, false)) {
           return false;
         }
@@ -878,11 +879,10 @@ public class Commands {
     return true;
   }
 
-  private String cliToBeelineCmd(String cmd) {
+  public String cliToBeelineCmd(String cmd) {
     if (cmd == null)
       return null;
-    String[] tokens = tokenizeCmd(cmd);
-    if (tokens[0].equalsIgnoreCase("source")) {
+    if (cmd.toLowerCase().equals("quit") || cmd.toLowerCase().equals("exit")) {
       return BeeLine.COMMAND_PREFIX + cmd;
     } else if (cmd.startsWith("!")) {
       String shell_cmd = cmd.substring(1);
@@ -896,6 +896,10 @@ public class Commands {
   // Return false only occurred error when execution the sql and the sql should follow the rules
   // of beeline.
   private boolean executeInternal(String sql, boolean call) {
+    if (!beeLine.isBeeLine()) {
+      sql = cliToBeelineCmd(sql);
+    }
+
     if (sql == null || sql.length() == 0) {
       return true;
     }
@@ -905,8 +909,13 @@ public class Commands {
       return true;
     }
 
+    // is source CMD
+    if (isSourceCMD(sql)) {
+      return sourceFile(sql);
+    }
+
     if (sql.startsWith(BeeLine.COMMAND_PREFIX)) {
-      sql = sql.substring(1);
+      return beeLine.execCommandWithPrefix(sql);
     }
 
     String prefix = call ? "call" : "sql";
@@ -921,6 +930,10 @@ public class Commands {
       return true;
     }
 
+    if (!(beeLine.assertConnection())) {
+      return false;
+    }
+
     ClientHook hook = null;
     if (!beeLine.isBeeLine()) {
       hook = ClientCommandHookFactory.get().getHook(sql);
@@ -1096,10 +1109,6 @@ public class Commands {
       beeLine.handleException(e);
     }
 
-    if (!(beeLine.assertConnection())) {
-      return false;
-    }
-
     line = line.trim();
     List<String> cmdList = new ArrayList<String>();
     if (entireLineAsCommand) {
@@ -1120,20 +1129,6 @@ public class Commands {
     for (int i = 0; i < cmdList.size(); i++) {
       String sql = cmdList.get(i).trim();
       if (sql.length() != 0) {
-        if (!beeLine.isBeeLine()) {
-          sql = cliToBeelineCmd(sql);
-          if (sql.equalsIgnoreCase("quit") || sql.equalsIgnoreCase("exit")) {
-            beeLine.setExit(true);
-            return true;
-          }
-        }
-
-        // is source CMD
-        if (isSourceCMD(sql)) {
-          sourceFile(sql);
-          continue;
-        }
-
         if (!executeInternal(sql, call)) {
           return false;
         }
@@ -1205,6 +1200,9 @@ public class Commands {
     return true;
   }
 
+  public boolean exit(String line) {
+    return quit(line);
+  }
 
   /**
    * Close all connections.

http://git-wip-us.apache.org/repos/asf/hive/blob/b90a2ae5/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index e06d2ea..953ba5f 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -46,6 +46,7 @@ public class TestHiveCli {
       "create table if not exists test.testSrcTbl2(sc2 string);";
   private final static String SOURCE_CONTEXT3 =
       "create table if not exists test.testSrcTbl3(sc3 string);";
+  private final static String SOURCE_CONTEXT4 = "show tables;!ls;show tables;\nquit;";
   final static String CMD =
       "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b "
           + "string);\n";
@@ -90,19 +91,23 @@ public class TestHiveCli {
     String output = os.toString();
     LOG.debug(output);
     if (contains) {
-      Assert.assertTrue(
-          "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
+      Assert.assertTrue("The expected keyword \"" + keywords + "\" occur in the output: " + output,
           output.contains(keywords));
     } else {
       Assert.assertFalse(
-          "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
-          output.contains(keywords));
+          "The expected keyword \"" + keywords + "\" should be excluded occurred in the output: "
+              + output, output.contains(keywords));
     }
   }
 
   @Test
   public void testInValidCmd() {
-    verifyCMD("!lss\n", "Unknown command: lss", errS, null, ERRNO_OK, true);
+    verifyCMD("!lss\n", "Failed to execute lss", errS, null, ERRNO_OK, true);
+  }
+
+  @Test
+  public void testCmd() {
+    verifyCMD("show tables;!ls;show tables;\n", "src", os, null, ERRNO_OK, true);
   }
 
   @Test
@@ -152,6 +157,14 @@ public class TestHiveCli {
   }
 
   @Test
+  public void testSourceCmd3() {
+    File f = generateTmpFile(SOURCE_CONTEXT4);
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl4;\nquit;\n", "src", os,
+        new String[] { "--database", "test" }, ERRNO_OK, true);
+    f.delete();
+  }
+
+  @Test
   public void testSqlFromCmd() {
     verifyCMD(null, "", os, new String[] { "-e", "show databases;" }, ERRNO_OK, true);
   }
@@ -192,8 +205,7 @@ public class TestHiveCli {
 
   @Test
   public void testErrOutput() {
-    verifyCMD(
-        "show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
+    verifyCMD("show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
         "cannot recognize input near 'lss' '<EOF>' '<EOF>'", errS, null, ERRNO_OK, true);
   }
 
@@ -224,6 +236,12 @@ public class TestHiveCli {
         "hive (invalidDB)>", os, null, ERRNO_OK, false);
   }
 
+  @Test
+  public void testNoErrorDB() {
+    verifyCMD(null, "Error: Method not supported (state=,code=0)", errS, new String[] { "-e", "show tables;" },
+        ERRNO_OK, false);
+  }
+
   private void redirectOutputStream() {
     // Setup output stream to redirect output to
     os = new ByteArrayOutputStream();


[03/33] hive git commit: HIVE-10623: Implement hive cli options using beeline functionality (Ferdinand via Xuefu)

Posted by xu...@apache.org.
HIVE-10623: Implement hive cli options using beeline functionality (Ferdinand via Xuefu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/03366392
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/03366392
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/03366392

Branch: refs/heads/master
Commit: 03366392c6f17ae7688ad1646046af4c5b5b6792
Parents: 753b2b3
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Thu May 14 21:33:44 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Thu May 14 21:33:44 2015 -0700

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 140 ++++++++++++++++-
 .../hive/beeline/cli/CliOptionsProcessor.java   | 104 +++++++++++++
 .../org/apache/hive/beeline/cli/HiveCli.java    |  41 +++++
 .../apache/hive/beeline/cli/TestHiveCli.java    | 153 +++++++++++++++++++
 beeline/src/test/resources/hive-site.xml        |  37 +++++
 5 files changed, 468 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/03366392/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 0da15f6..4a82635 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -88,6 +88,8 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.hadoop.io.IOUtils;
+import org.apache.hive.beeline.cli.CliOptionsProcessor;
+import org.apache.hive.jdbc.Utils;
 
 /**
  * A console SQL shell with command completion.
@@ -126,8 +128,10 @@ public class BeeLine implements Closeable {
   private ConsoleReader consoleReader;
   private List<String> batch = null;
   private final Reflector reflector;
+  private String dbName = null;
 
   private History history;
+  private boolean isBeeLine = true;
 
   private static final Options options = new Options();
 
@@ -491,10 +495,14 @@ public class BeeLine implements Closeable {
 
 
   public BeeLine() {
+    this(true);
+  }
+
+  public BeeLine(boolean isBeeLine) {
     beeLineCommandCompleter = new BeeLineCommandCompleter(BeeLineCommandCompleter.getCompleters
         (this));
     reflector = new Reflector(this);
-
+    this.isBeeLine = isBeeLine;
     // attempt to dynamically load signal handler
     /* TODO disable signal handler
     try {
@@ -508,7 +516,6 @@ public class BeeLine implements Closeable {
     */
   }
 
-
   DatabaseConnection getDatabaseConnection() {
     return getDatabaseConnections().current();
   }
@@ -633,7 +640,63 @@ public class BeeLine implements Closeable {
         super.processOption(arg, iter);
       }
     }
+  }
+
+  int initArgsFromCliVars(String[] args) {
+    List<String> commands = Collections.emptyList();
+
+    CliOptionsProcessor optionsProcessor = new CliOptionsProcessor();
+    if (!optionsProcessor.process(args)) {
+      return 1;
+    }
+    CommandLine commandLine = optionsProcessor.getCommandLine();
+
+
+    Properties confProps = commandLine.getOptionProperties("hiveconf");
+    for (String propKey : confProps.stringPropertyNames()) {
+      getOpts().getHiveConfVariables().put(propKey, confProps.getProperty(propKey));
+    }
+
+    Properties hiveVars = commandLine.getOptionProperties("define");
+    for (String propKey : hiveVars.stringPropertyNames()) {
+      getOpts().getHiveConfVariables().put(propKey, hiveVars.getProperty(propKey));
+    }
+
+    Properties hiveVars2 = commandLine.getOptionProperties("hivevar");
+    for (String propKey : hiveVars2.stringPropertyNames()) {
+      getOpts().getHiveConfVariables().put(propKey, hiveVars2.getProperty(propKey));
+    }
+
+    getOpts().setScriptFile(commandLine.getOptionValue("f"));
+
+    dbName = commandLine.getOptionValue("database");
+    getOpts().setVerbose(Boolean.valueOf(commandLine.getOptionValue("verbose")));
+    getOpts().setSilent(Boolean.valueOf(commandLine.getOptionValue("slient")));
+
+    int code = 0;
+    if (commandLine.getOptionValues("e") != null) {
+      commands = Arrays.asList(commandLine.getOptionValues("e"));
+    }
 
+    if (!commands.isEmpty() && getOpts().getScriptFile() != null) {
+      System.err.println("The '-e' and '-f' options cannot be specified simultaneously");
+      optionsProcessor.printCliUsage();
+      return 1;
+    }
+
+    if (!commands.isEmpty()) {
+      embeddedConnect();
+      connectDBInEmbededMode();
+      for (Iterator<String> i = commands.iterator(); i.hasNext(); ) {
+        String command = i.next().toString();
+        debug(loc("executing-command", command));
+        if (!dispatch(command)) {
+          code++;
+        }
+      }
+      exit = true; // execute and exit
+    }
+    return code;
   }
 
   int initArgs(String[] args) {
@@ -687,7 +750,6 @@ public class BeeLine implements Closeable {
       commands = Arrays.asList(cl.getOptionValues('e'));
     }
 
-
     // TODO: temporary disable this for easier debugging
     /*
     if (url == null) {
@@ -755,9 +817,15 @@ public class BeeLine implements Closeable {
     }
 
     try {
-      int code = initArgs(args);
-      if (code != 0) {
-        return code;
+      if (isBeeLine) {
+        int code = initArgs(args);
+        if (code != 0) {
+          return code;
+        }
+      } else {
+        int code = initArgsFromCliVars(args);
+        if (code != 0)
+          return code;
       }
 
       if (getOpts().getScriptFile() != null) {
@@ -788,6 +856,33 @@ public class BeeLine implements Closeable {
     return ERRNO_OK;
   }
 
+  private int embeddedConnect() {
+    if (!dispatch("!connect " + Utils.URL_PREFIX + " '' ''")) {
+      return ERRNO_OTHER;
+    } else {
+      return ERRNO_OK;
+    }
+  }
+
+  private int connectDBInEmbededMode() {
+    if (dbName != null && !dbName.isEmpty()) {
+      if (!dispatch("use " + dbName + ";")) {
+        return ERRNO_OTHER;
+      }
+    }
+    return ERRNO_OK;
+  }
+
+  public int defaultConnect(boolean exitOnError) {
+    if (embeddedConnect() != ERRNO_OK && exitOnError) {
+      return ERRNO_OTHER;
+    }
+    if (connectDBInEmbededMode() != ERRNO_OK && exitOnError) {
+      return ERRNO_OTHER;
+    }
+    return ERRNO_OK;
+  }
+
   private int executeFile(String fileName) {
     FileInputStream initStream = null;
     try {
@@ -805,13 +900,20 @@ public class BeeLine implements Closeable {
 
   private int execute(ConsoleReader reader, boolean exitOnError) {
     String line;
+    if (!isBeeLine) {
+      if (defaultConnect(exitOnError) != ERRNO_OK && exitOnError) {
+        return ERRNO_OTHER;
+      }
+    }
     while (!exit) {
       try {
         // Execute one instruction; terminate on executing a script if there is an error
         // in silent mode, prevent the query and prompt being echoed back to terminal
         line = (getOpts().isSilent() && getOpts().getScriptFile() != null) ?
                  reader.readLine(null, ConsoleReader.NULL_MASK) : reader.readLine(getPrompt());
-
+        if (!isBeeLine) {
+          line = cliToBeelineCmd(line);
+        }
         if (!dispatch(line) && exitOnError) {
           return ERRNO_OTHER;
         }
@@ -914,6 +1016,30 @@ public class BeeLine implements Closeable {
     output(loc("cmd-usage"));
   }
 
+  private String[] tokenizeCmd(String cmd) {
+    return cmd.split("\\s+");
+  }
+
+  public String cliToBeelineCmd(String cmd) {
+    if (cmd == null)
+      return null;
+    String cmd_trimmed = cmd.trim();
+    String[] tokens = tokenizeCmd(cmd_trimmed);
+
+    if (cmd_trimmed.equalsIgnoreCase("quit") || cmd_trimmed.equalsIgnoreCase("exit")) {
+      return null;
+    } else if (tokens[0].equalsIgnoreCase("source")) {
+      //TODO
+      return cmd;
+    } else if (cmd_trimmed.startsWith("!")) {
+      String shell_cmd = cmd_trimmed.substring(1);
+      return "!sh " + shell_cmd;
+    } else { // local mode
+      // command like dfs
+      return cmd;
+    }
+  }
+
 
   /**
    * Dispatch the specified line to the appropriate {@link CommandHandler}.

http://git-wip-us.apache.org/repos/asf/hive/blob/03366392/beeline/src/java/org/apache/hive/beeline/cli/CliOptionsProcessor.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/cli/CliOptionsProcessor.java b/beeline/src/java/org/apache/hive/beeline/cli/CliOptionsProcessor.java
new file mode 100644
index 0000000..61c5ab6
--- /dev/null
+++ b/beeline/src/java/org/apache/hive/beeline/cli/CliOptionsProcessor.java
@@ -0,0 +1,104 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline.cli;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+
+/**
+ * This class is used for parsing the options of Hive Cli
+ */
+public class CliOptionsProcessor {
+  private final Options options = new Options();
+  private org.apache.commons.cli.CommandLine commandLine;
+
+  public CliOptionsProcessor() {
+    // -database database
+    options.addOption(OptionBuilder.hasArg().withArgName("databasename").withLongOpt("database")
+        .withDescription("Specify the database to use").create());
+
+    // -e 'quoted-query-string'
+    options.addOption(OptionBuilder.hasArg().withArgName("quoted-query-string").withDescription
+        ("SQL from command line").create('e'));
+
+    // -f <query-file>
+    options.addOption(OptionBuilder.hasArg().withArgName("filename").withDescription("SQL from " +
+        "files").create('f'));
+
+    // -i <init-query-file>
+    options.addOption(OptionBuilder.hasArg().withArgName("filename").withDescription
+        ("Initialization SQL file").create('i'));
+
+    // -hiveconf x=y
+    options.addOption(OptionBuilder.withValueSeparator().hasArgs(2).withArgName("property=value")
+        .withLongOpt("hiveconf").withDescription("Use value for given property").create());
+
+    // Substitution option -d, --define
+    options.addOption(OptionBuilder.withValueSeparator().hasArgs(2).withArgName("key=value")
+        .withLongOpt("define").withDescription("Variable subsitution to apply to hive commands. e" +
+            ".g. -d A=B or --define A=B").create('d'));
+
+    // Substitution option --hivevar
+    options.addOption(OptionBuilder.withValueSeparator().hasArgs(2).withArgName("key=value")
+        .withLongOpt("hivevar").withDescription("Variable subsitution to apply to hive commands. " +
+            "e.g. --hivevar A=B").create());
+
+    // [-S|--silent]
+    options.addOption(new Option("S", "silent", false, "Silent mode in interactive shell"));
+
+    // [-v|--verbose]
+    options.addOption(new Option("v", "verbose", false, "Verbose mode (echo executed SQL to the "
+        + "console)"));
+
+    // [-H|--help]
+    options.addOption(new Option("H", "help", false, "Print help information"));
+  }
+
+  public boolean process(String []argv){
+    try {
+      commandLine = new GnuParser().parse(options, argv);
+
+      if(commandLine.hasOption("help")){
+        printCliUsage();
+        return false;
+      }
+    } catch (ParseException e) {
+      System.err.println(e.getMessage());
+      printCliUsage();
+      return false;
+    }
+    return true;
+  }
+
+  public void printCliUsage() {
+    new HelpFormatter().printHelp("hive", options);
+  }
+
+  public CommandLine getCommandLine() {
+    return commandLine;
+  }
+
+  public void setCommandLine(CommandLine commandLine) {
+    this.commandLine = commandLine;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/03366392/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java b/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
new file mode 100644
index 0000000..3e0da77
--- /dev/null
+++ b/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline.cli;
+
+import org.apache.hive.beeline.BeeLine;
+import org.apache.hive.jdbc.Utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class HiveCli {
+  private BeeLine beeLine;
+
+  public static void main(String[] args) throws IOException {
+    int status = new HiveCli().runWithArgs(args, null);
+    System.exit(status);
+  }
+
+  public int runWithArgs(String[] cmd, InputStream inputStream) throws IOException {
+    beeLine = new BeeLine(false);
+    return beeLine.begin(cmd, inputStream);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/03366392/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
new file mode 100644
index 0000000..cc0b598
--- /dev/null
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -0,0 +1,153 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline.cli;
+
+import junit.framework.Assert;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+public class TestHiveCli {
+  private static final Log LOG = LogFactory.getLog(TestHiveCli.class.getName());
+
+  final static String CMD = "create database if not exists test;\ncreate table if not exists test" +
+      ".testTbl(a " +
+      "" + "string, b string);\n";
+  private HiveCli cli;
+  private OutputStream os;
+  private PrintStream ps;
+  private OutputStream errS;
+  private PrintStream errPs;
+  private File tmp = null;
+
+  private void executeCMD(String[] args, String input, int retCode) {
+    InputStream inputStream = null;
+    int ret = 0;
+    try {
+      if (input != null) {
+        inputStream = IOUtils.toInputStream(input);
+      }
+      ret = cli.runWithArgs(args, inputStream);
+    } catch (IOException e) {
+      LOG.error("Failed to execute command due to the error: " + e);
+    } finally {
+      if (retCode != ret) {
+        LOG.error("Failed due to the error:" + errS.toString());
+        Assert.fail("Supported return code is " + retCode + " while the actual is " + ret);
+      }
+    }
+  }
+
+  private void verifyCMD(String CMD, String keywords, OutputStream os, String[] options, int
+      retCode) {
+    executeCMD(options, CMD, retCode);
+    String output = os.toString();
+    Assert.assertTrue(output.contains(keywords));
+  }
+
+  @Test
+  public void testInValidCmd() {
+    verifyCMD("!lss\n", "Failed to execute lss", errS, null, 0);
+  }
+
+  @Test
+  public void testHelp() {
+    verifyCMD(null, "usage: hive", os, new String[]{"-H"}, 1);
+  }
+
+  @Test
+  public void testInvalidDatabaseOptions() {
+    verifyCMD("\nshow tables\nquit\n", "Database does not exist: invalidDB", errS, new
+        String[]{"--database", "invalidDB"}, 0);
+  }
+
+  @Test
+  public void testDatabaseOptions() {
+    verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[]{"--database", "test"}, 0);
+  }
+
+  @Test
+  public void testSqlFromCmd() {
+    verifyCMD(null, "", os, new String[]{"-e", "show databases;"}, 0);
+  }
+
+  @Test
+  public void testSqlFromCmdWithDBName() {
+    verifyCMD(null, "testTbl", os, new String[]{"-e", "show tables;", "--database", "test"}, 0);
+  }
+
+  @Test
+  public void testInvalidOptions() {
+    verifyCMD(null, "The '-e' and '-f' options cannot be specified simultaneously", errS, new
+        String[]{"-e", "show tables;", "-f", "path/to/file"}, 1);
+  }
+
+  @Test
+  public void testInvalidOptions2() {
+    verifyCMD(null, "Unrecognized option: -k", errS, new String[]{"-k"}, 1);
+  }
+
+  private void redirectOutputStream() {
+    // Setup output stream to redirect output to
+    os = new ByteArrayOutputStream();
+    ps = new PrintStream(os);
+    errS = new ByteArrayOutputStream();
+    errPs = new PrintStream(errS);
+    System.setOut(ps);
+    System.setErr(errPs);
+  }
+
+  private void initFileFromFile() {
+    BufferedWriter bw = null;
+    try {
+      // create a tmp file
+      tmp = File.createTempFile("test", ".sql");
+      bw = new BufferedWriter(new FileWriter(tmp));
+      bw.write(CMD);
+    } catch (IOException e) {
+      LOG.error("Failed to write tmp file due to the exception: " + e);
+    } finally {
+      IOUtils.closeQuietly(bw);
+    }
+    executeCMD(new String[]{"-f", "\"" + tmp.getAbsolutePath() + "\""}, null, 0);
+  }
+
+  @Before
+  public void setup() {
+    cli = new HiveCli();
+    redirectOutputStream();
+    initFileFromFile();
+  }
+
+  @After
+  public void tearDown() {
+    tmp.delete();
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/03366392/beeline/src/test/resources/hive-site.xml
----------------------------------------------------------------------
diff --git a/beeline/src/test/resources/hive-site.xml b/beeline/src/test/resources/hive-site.xml
new file mode 100644
index 0000000..d2df03c
--- /dev/null
+++ b/beeline/src/test/resources/hive-site.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<configuration>
+  <property>
+    <name>hive.in.test</name>
+    <value>true</value>
+    <description>Internal marker for test. Used for masking env-dependent values</description>
+  </property>
+  <property>
+    <name>javax.jdo.option.ConnectionURL</name>
+    <value>jdbc:derby:;databaseName=${test.tmp.dir}/metastore_db;create=true</value>
+    <description>JDBC connect string for a JDBC metastore</description>
+  </property>
+  <property>
+    <!--  this should eventually be deprecated since the metastore should supply this -->
+    <name>hive.metastore.warehouse.dir</name>
+    <value>${test.tmp.dir}/warehouse</value>
+    <description></description>
+  </property>
+</configuration>


[33/33] hive git commit: Merge branch 'beeline-cli'

Posted by xu...@apache.org.
Merge branch 'beeline-cli'


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/e570e4f0
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e570e4f0
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e570e4f0

Branch: refs/heads/master
Commit: e570e4f0c6c1105c2c0ce9ed9b5811f4cf102750
Parents: 02121a8 6b3e82d
Author: Ferdinand Xu <ch...@intel.com>
Authored: Sun Sep 27 21:04:38 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Sun Sep 27 21:04:38 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 300 +++++++++---
 .../org/apache/hive/beeline/BeeLineOpts.java    |  43 +-
 .../hive/beeline/ClientCommandHookFactory.java  |  85 ++++
 .../org/apache/hive/beeline/ClientHook.java     |  33 ++
 .../java/org/apache/hive/beeline/Commands.java  | 486 ++++++++++++++-----
 .../hive/beeline/cli/CliOptionsProcessor.java   | 104 ++++
 .../org/apache/hive/beeline/cli/HiveCli.java    |  37 ++
 .../beeline/TestClientCommandHookFactory.java   |  32 ++
 .../apache/hive/beeline/cli/TestHiveCli.java    | 289 +++++++++++
 beeline/src/test/resources/hive-site.xml        |  37 ++
 bin/beeline                                     |   5 +
 bin/ext/cli.cmd                                 |  39 +-
 bin/ext/cli.sh                                  |  35 +-
 bin/ext/util/execHiveCmd.sh                     |   6 +-
 .../org/apache/hadoop/hive/cli/CliDriver.java   |  24 +-
 .../hadoop/hive/conf/HiveVariableSource.java    |  24 +
 .../hadoop/hive/conf/VariableSubstitution.java  |  70 +++
 .../hive/conf/TestVariableSubstitution.java     |  63 +++
 .../java/org/apache/hadoop/hive/ql/Driver.java  |  10 +-
 .../formatting/MetaDataPrettyFormatUtils.java   |  24 +-
 .../ql/parse/ColumnStatsSemanticAnalyzer.java   |  14 +-
 .../hive/ql/parse/VariableSubstitution.java     |  60 ---
 .../ql/processors/AddResourceProcessor.java     |  11 +-
 .../hive/ql/processors/CompileProcessor.java    |  11 +-
 .../ql/processors/DeleteResourceProcessor.java  |  11 +-
 .../hadoop/hive/ql/processors/DfsProcessor.java |  11 +-
 .../hadoop/hive/ql/processors/SetProcessor.java |  32 +-
 .../hadoop/hive/ql/session/SessionState.java    |  21 +
 .../clientpositive/describe_pretty.q.out        | 366 +++++++-------
 .../cli/operation/HiveCommandOperation.java     |  18 +-
 .../service/cli/operation/SQLOperation.java     |  14 +-
 31 files changed, 1828 insertions(+), 487 deletions(-)
----------------------------------------------------------------------



[19/33] hive git commit: HIVE-11579: Invoke the set command will close standard error output[beeline-cli](Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11579: Invoke the set command will close standard error output[beeline-cli](Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/80f6184d
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/80f6184d
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/80f6184d

Branch: refs/heads/master
Commit: 80f6184d301d94b5c203f45d0d849ea4bea054fb
Parents: e28043f
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Aug 19 21:12:00 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Aug 19 21:12:00 2015 -0400

----------------------------------------------------------------------
 .../org/apache/hive/beeline/BeeLineOpts.java    |  2 +-
 .../apache/hive/beeline/cli/TestHiveCli.java    | 12 ++++++++---
 .../hadoop/hive/ql/session/SessionState.java    | 21 ++++++++++++++++++++
 .../cli/operation/HiveCommandOperation.java     | 18 +++++++++--------
 .../service/cli/operation/SQLOperation.java     |  4 ++++
 5 files changed, 45 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index d9f726d..72e9037 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -228,7 +228,7 @@ class BeeLineOpts implements Completer {
   public void updateBeeLineOptsFromConf() {
     if (!beeLine.isBeeLine()) {
       if (conf == null) {
-        conf = beeLine.getCommands().getHiveConf(true);
+        conf = beeLine.getCommands().getHiveConf(false);
       }
       setForce(HiveConf.getBoolVar(conf, HiveConf.ConfVars.CLIIGNOREERRORS));
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index c465eac..c7eaa8e 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -107,7 +107,7 @@ public class TestHiveCli {
 
   @Test
   public void testDatabaseOptions() {
-    verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[] { "--database", "test" },
+    verifyCMD("\nshow tables;\nquit;", "testtbl", os, new String[] { "--database", "test" },
         ERRNO_OK);
   }
 
@@ -134,7 +134,7 @@ public class TestHiveCli {
 
   @Test
   public void testSqlFromCmdWithDBName() {
-    verifyCMD(null, "testTbl", os, new String[] { "-e", "show tables;", "--database", "test" },
+    verifyCMD(null, "testtbl", os, new String[] { "-e", "show tables;", "--database", "test" },
         ERRNO_OK);
   }
 
@@ -164,6 +164,12 @@ public class TestHiveCli {
     f.delete();
   }
 
+  @Test
+  public void testErrOutput() {
+    verifyCMD("show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
+        "cannot recognize input near 'lss' '<EOF>' '<EOF>'", errS, null, ERRNO_OK);
+  }
+
   private void redirectOutputStream() {
     // Setup output stream to redirect output to
     os = new ByteArrayOutputStream();
@@ -200,8 +206,8 @@ public class TestHiveCli {
   @Before
   public void setup() {
     cli = new HiveCli();
-    redirectOutputStream();
     initFromFile();
+    redirectOutputStream();
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
index 49d64db..13ca87d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
@@ -161,6 +161,11 @@ public class SessionState {
   protected File tmpOutputFile;
 
   /**
+   * Temporary file name used to store error output of executing non-Hive commands (e.g., set, dfs)
+   */
+  protected File tmpErrOutputFile;
+
+  /**
    * type of the command.
    */
   private HiveOperation commandType;
@@ -305,6 +310,14 @@ public class SessionState {
     tmpOutputFile = f;
   }
 
+  public File getTmpErrOutputFile() {
+    return tmpErrOutputFile;
+  }
+
+  public void setTmpErrOutputFile(File tmpErrOutputFile) {
+    this.tmpErrOutputFile = tmpErrOutputFile;
+  }
+
   public boolean getIsSilent() {
     if(conf != null) {
       return conf.getBoolVar(HiveConf.ConfVars.HIVESESSIONSILENT);
@@ -525,6 +538,14 @@ public class SessionState {
         }
       }
 
+      // Set temp file containing error output to be sent to client
+      if (startSs.getTmpErrOutputFile() == null) {
+        try {
+          startSs.setTmpErrOutputFile(createTempFile(startSs.getConf()));
+        } catch (IOException e) {
+          throw new RuntimeException(e);
+        }
+      }
     } catch (Exception e) {
       // Catch-all due to some exec time dependencies on session state
       // that would cause ClassNoFoundException otherwise

http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
index bcc66cf..1d1e995 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java
@@ -66,13 +66,14 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
 
   private void setupSessionIO(SessionState sessionState) {
     try {
-      LOG.info("Putting temp output to file " + sessionState.getTmpOutputFile().toString());
+      LOG.info("Putting temp output to file " + sessionState.getTmpOutputFile().toString()
+          + " and error output to file " + sessionState.getTmpErrOutputFile().toString());
       sessionState.in = null; // hive server's session input stream is not used
-      // open a per-session file in auto-flush mode for writing temp results
-      sessionState.out = new PrintStream(new FileOutputStream(sessionState.getTmpOutputFile()), true, "UTF-8");
-      // TODO: for hadoop jobs, progress is printed out to session.err,
-      // we should find a way to feed back job progress to client
-      sessionState.err = new PrintStream(System.err, true, "UTF-8");
+      // open a per-session file in auto-flush mode for writing temp results and tmp error output
+      sessionState.out =
+          new PrintStream(new FileOutputStream(sessionState.getTmpOutputFile()), true, "UTF-8");
+      sessionState.err =
+          new PrintStream(new FileOutputStream(sessionState.getTmpErrOutputFile()), true, "UTF-8");
     } catch (IOException e) {
       LOG.error("Error in creating temp output file ", e);
       try {
@@ -90,8 +91,7 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
 
 
   private void tearDownSessionIO() {
-    IOUtils.cleanup(LOG, parentSession.getSessionState().out);
-    IOUtils.cleanup(LOG, parentSession.getSessionState().err);
+    IOUtils.cleanup(LOG, parentSession.getSessionState().out, parentSession.getSessionState().err);
   }
 
   @Override
@@ -202,6 +202,8 @@ public class HiveCommandOperation extends ExecuteStatementOperation {
     SessionState sessionState = getParentSession().getSessionState();
     File tmp = sessionState.getTmpOutputFile();
     tmp.delete();
+    tmp = sessionState.getTmpErrOutputFile();
+    tmp.delete();
   }
 
   private void resetResultReader() {

http://git-wip-us.apache.org/repos/asf/hive/blob/80f6184d/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index f4334e4..175348b 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -296,6 +296,10 @@ public class SQLOperation extends ExecuteStatementOperation {
     if (ss.getTmpOutputFile() != null) {
       ss.getTmpOutputFile().delete();
     }
+
+    if (ss.getTmpErrOutputFile() != null) {
+      ss.getTmpErrOutputFile().delete();
+    }
   }
 
   @Override


[28/33] hive git commit: HIVE-10824: Need to update start script changes in .cmd files(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-10824: Need to update start script changes in .cmd files(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fdf6bd0b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fdf6bd0b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fdf6bd0b

Branch: refs/heads/master
Commit: fdf6bd0b5800db7649c91422aa4ece8f52be1245
Parents: 4a91efc
Author: Ferdinand Xu <ch...@intel.com>
Authored: Thu Sep 17 21:29:32 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 17 21:29:32 2015 -0400

----------------------------------------------------------------------
 bin/ext/cli.cmd | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/fdf6bd0b/bin/ext/cli.cmd
----------------------------------------------------------------------
diff --git a/bin/ext/cli.cmd b/bin/ext/cli.cmd
index 9e85691..3a96d03 100644
--- a/bin/ext/cli.cmd
+++ b/bin/ext/cli.cmd
@@ -14,20 +14,41 @@
 @rem See the License for the specific language governing permissions and
 @rem limitations under the License.
 
-set CLASS=org.apache.hadoop.hive.cli.CliDriver
-pushd %HIVE_LIB%
-for /f %%a IN ('dir /b hive-cli-*.jar') do (
-	set JAR=%HIVE_LIB%\%%a
-)
-popd
-
 if [%1]==[cli_help] goto :cli_help
 
 :cli
+	call :update_cli
 	call %HIVE_BIN_PATH%\ext\util\execHiveCmd.cmd %CLASS%
 goto :EOF
 
 :cli_help
+	call :update_cli
 	set HIVEARGS=--help
 	call :cli
 goto :EOF
+
+:update_cli
+	if /I "%USE_DEPRECATED_CLI%" == "true" (
+		call :old_cli
+	) else if (
+		call :new_cli
+	)
+goto :EOF
+
+:old_cli
+	set CLASS=org.apache.hadoop.hive.cli.CliDriver
+	pushd %HIVE_LIB%
+	for /f %%a IN ('dir /b hive-cli-*.jar') do (
+		set JAR=%HIVE_LIB%\%%a
+	)
+	popd
+goto :EOF
+
+:new_cli
+	set CLASS=org.apache.hive.beeline.cli.HiveCli
+	pushd %HIVE_LIB%
+	for /f %%a IN ('dir /b hive-beeline-*.jar') do (
+		set JAR=%HIVE_LIB%\%%a
+	)
+	popd
+goto :EOF
\ No newline at end of file


[11/33] hive git commit: HIVE-11203: Beeline force option doesn't force execution when errors occurred in a script.(Ferdinand, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11203: Beeline force option doesn't force execution when errors occurred in a script.(Ferdinand, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f589e2c0
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f589e2c0
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f589e2c0

Branch: refs/heads/master
Commit: f589e2c03426aa9857030d7a9d787af9fb2a1b12
Parents: 102b23b
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Jul 8 20:58:22 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Jul 8 20:59:53 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/f589e2c0/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 1d468eb..c4dbcd4 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -889,7 +889,7 @@ public class BeeLine implements Closeable {
     FileInputStream initStream = null;
     try {
       initStream = new FileInputStream(fileName);
-      return execute(getConsoleReader(initStream), true);
+      return execute(getConsoleReader(initStream), !getOpts().getForce());
     } catch (Throwable t) {
       handleException(t);
       return ERRNO_OTHER;


[23/33] hive git commit: HIVE-11769: Merge master to beeline-cli branch 09/09/2015

Posted by xu...@apache.org.
HIVE-11769: Merge master to beeline-cli branch 09/09/2015


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fc53e5d7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fc53e5d7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fc53e5d7

Branch: refs/heads/master
Commit: fc53e5d7edfed6dbdaeb43fb6b541ff36fb9a47b
Parents: b90a2ae d51c62a
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Sep 9 03:02:24 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Sep 9 03:02:24 2015 -0400

----------------------------------------------------------------------
 accumulo-handler/pom.xml                        |     4 -
 .../apache/hadoop/hive/ant/GenVectorCode.java   |   105 +
 .../java/org/apache/hive/beeline/BeeLine.java   |    13 +-
 .../org/apache/hive/beeline/BeeLineOpts.java    |    21 +-
 .../apache/hive/beeline/DatabaseConnection.java |     9 +
 .../org/apache/hive/beeline/HiveSchemaTool.java |    14 +-
 beeline/src/main/resources/BeeLine.properties   |     2 +
 .../src/main/resources/beeline-log4j.properties |    24 -
 beeline/src/main/resources/beeline-log4j2.xml   |    40 +
 bin/ext/beeline.sh                              |     2 +-
 bin/hive                                        |     3 +
 .../hadoop/hive/cli/TestOptionsProcessor.java   |     1 -
 common/pom.xml                                  |    27 +-
 .../apache/hadoop/hive/common/JavaUtils.java    |    11 +-
 .../org/apache/hadoop/hive/common/LogUtils.java |    18 +-
 .../hadoop/hive/common/ValidReadTxnList.java    |     2 +-
 .../hadoop/hive/common/type/HiveDecimal.java    |   306 -
 .../org/apache/hadoop/hive/conf/HiveConf.java   |   112 +-
 common/src/main/resources/hive-log4j.properties |    88 -
 common/src/main/resources/hive-log4j2.xml       |   111 +
 .../hadoop/hive/conf/TestHiveLogging.java       |     8 +-
 .../resources/hive-exec-log4j-test.properties   |    59 -
 .../test/resources/hive-exec-log4j2-test.xml    |    86 +
 .../test/resources/hive-log4j-test.properties   |    71 -
 common/src/test/resources/hive-log4j2-test.xml  |    95 +
 data/conf/hive-log4j-old.properties             |    82 -
 data/conf/hive-log4j.properties                 |    97 -
 data/conf/hive-log4j2.xml                       |   144 +
 data/conf/hive-site.xml                         |     6 -
 data/conf/spark/log4j.properties                |    24 -
 data/conf/spark/log4j2.xml                      |    74 +
 data/conf/tez/hive-site.xml                     |     9 +
 docs/xdocs/language_manual/cli.xml              |     2 +-
 errata.txt                                      |    10 +
 .../hadoop/hive/hbase/ColumnMappings.java       |     5 +
 .../apache/hadoop/hive/hbase/HBaseSerDe.java    |    19 +-
 .../hadoop/hive/hbase/HBaseSerDeParameters.java |     8 +-
 .../hadoop/hive/hbase/HBaseStorageHandler.java  |    13 +-
 .../hive/hbase/HiveHBaseInputFormatUtil.java    |    50 +-
 .../hadoop/hive/hbase/LazyHBaseCellMap.java     |    19 +-
 .../apache/hadoop/hive/hbase/LazyHBaseRow.java  |     5 +-
 .../hadoop/hive/hbase/LazyHBaseCellMapTest.java |    72 +
 .../positive/hbase_binary_map_queries_prefix.q  |    15 +-
 .../queries/positive/hbase_null_first_col.q     |    22 +
 .../hbase_binary_map_queries_prefix.q.out       |    40 +
 .../results/positive/hbase_null_first_col.q.out |   109 +
 .../test/results/positive/hbase_timestamp.q.out |     8 +-
 hcatalog/bin/hcat_server.sh                     |     2 +-
 hcatalog/bin/templeton.cmd                      |     4 +-
 .../mapreduce/DefaultOutputFormatContainer.java |     7 +-
 ...namicPartitionFileRecordWriterContainer.java |     3 +-
 .../mapreduce/FileOutputFormatContainer.java    |     3 +-
 .../hive/hcatalog/mapreduce/PartInfo.java       |    32 +-
 .../hive/hcatalog/mapreduce/SpecialCases.java   |     8 +-
 .../mapreduce/TestHCatMultiOutputFormat.java    |     6 +-
 hcatalog/scripts/hcat_server_start.sh           |     2 +-
 .../content/xdocs/configuration.xml             |     2 +-
 .../src/documentation/content/xdocs/install.xml |     2 +-
 .../deployers/config/hive/hive-log4j.properties |    88 -
 .../deployers/config/hive/hive-log4j2.xml       |   111 +
 .../deployers/config/hive/hive-site.mysql.xml   |    22 +
 .../templeton/deployers/start_hive_services.sh  |     2 +-
 .../hive/hcatalog/streaming/mutate/package.html |    31 +-
 .../mutate/worker/CreatePartitionHelper.java    |    83 -
 .../mutate/worker/MetaStorePartitionHelper.java |   102 +
 .../mutate/worker/MutatorCoordinator.java       |    21 +-
 .../worker/MutatorCoordinatorBuilder.java       |    41 +-
 .../mutate/worker/PartitionHelper.java          |    17 +
 .../mutate/worker/WarehousePartitionHelper.java |    69 +
 .../hive/hcatalog/streaming/TestStreaming.java  |    54 +-
 .../worker/TestMetaStorePartitionHelper.java    |   112 +
 .../mutate/worker/TestMutatorCoordinator.java   |    40 +-
 .../worker/TestWarehousePartitionHelper.java    |    57 +
 .../webhcat/svr/src/main/bin/webhcat_server.sh  |     4 +-
 .../src/main/config/webhcat-log4j.properties    |    45 -
 .../svr/src/main/config/webhcat-log4j2.xml      |    75 +
 .../antlr4/org/apache/hive/hplsql/Hplsql.g4     |   275 +-
 .../java/org/apache/hive/hplsql/Column.java     |    65 +
 .../main/java/org/apache/hive/hplsql/Conn.java  |    16 +-
 .../java/org/apache/hive/hplsql/Converter.java  |    41 +-
 .../main/java/org/apache/hive/hplsql/Exec.java  |   300 +-
 .../java/org/apache/hive/hplsql/Expression.java |    79 +-
 .../main/java/org/apache/hive/hplsql/Meta.java  |   216 +
 .../main/java/org/apache/hive/hplsql/Query.java |    71 +
 .../main/java/org/apache/hive/hplsql/Row.java   |    97 +
 .../java/org/apache/hive/hplsql/Select.java     |    63 +-
 .../java/org/apache/hive/hplsql/Signal.java     |     2 +-
 .../main/java/org/apache/hive/hplsql/Stmt.java  |   235 +-
 .../main/java/org/apache/hive/hplsql/Utils.java |     7 +
 .../main/java/org/apache/hive/hplsql/Var.java   |    85 +-
 .../apache/hive/hplsql/functions/Function.java  |    74 +-
 .../hive/hplsql/functions/FunctionDatetime.java |    14 +-
 .../hive/hplsql/functions/FunctionMisc.java     |    22 +-
 .../hive/hplsql/functions/FunctionOra.java      |    31 +-
 .../hive/hplsql/functions/FunctionString.java   |    46 +-
 hplsql/src/main/resources/hplsql-site.xml       |    95 +
 .../org/apache/hive/hplsql/TestHplsqlLocal.java |    34 +-
 .../apache/hive/hplsql/TestHplsqlOffline.java   |    76 +
 .../test/queries/db/create_procedure_mssql.sql  |    52 +
 .../db/create_procedure_return_cursor.sql       |    53 +
 .../db/create_procedure_return_cursor2.sql      |    59 +
 .../src/test/queries/db/cursor_attributes.sql   |    60 +
 hplsql/src/test/queries/db/map_object.sql       |     9 +
 .../src/test/queries/db/rowtype_attribute.sql   |    22 +
 hplsql/src/test/queries/db/select_into.sql      |    17 +
 .../src/test/queries/db/set_current_schema.sql  |     6 +
 hplsql/src/test/queries/db/sys_refcursor.sql    |    65 +
 hplsql/src/test/queries/db/type_attribute.sql   |     8 +
 hplsql/src/test/queries/db/use.sql              |     2 +
 .../local/create_procedure_no_params.sql        |    19 +
 hplsql/src/test/queries/local/exception2.sql    |    10 -
 hplsql/src/test/queries/local/exception3.sql    |     5 -
 hplsql/src/test/queries/local/exception4.sql    |     7 -
 hplsql/src/test/queries/local/exception5.sql    |    10 -
 .../queries/local/exception_divide_by_zero.sql  |    11 +
 .../test/queries/offline/create_table_mssql.sql |    43 +
 .../test/queries/offline/create_table_ora.sql   |    53 +
 .../results/db/create_procedure_mssql.out.txt   |    45 +
 .../db/create_procedure_return_cursor.out.txt   |   135 +
 .../db/create_procedure_return_cursor2.out.txt  |   139 +
 .../test/results/db/cursor_attributes.out.txt   |    33 +
 hplsql/src/test/results/db/map_object.out.txt   |    17 +
 .../test/results/db/rowtype_attribute.out.txt   |    42 +
 hplsql/src/test/results/db/select_into.out.txt  |    19 +
 .../test/results/db/set_current_schema.out.txt  |    12 +
 .../src/test/results/db/sys_refcursor.out.txt   |    36 +
 .../src/test/results/db/type_attribute.out.txt  |    15 +
 hplsql/src/test/results/db/use.out.txt          |     4 +
 .../test/results/local/create_function.out.txt  |     4 +-
 .../local/create_procedure_no_params.out.txt    |    26 +
 hplsql/src/test/results/local/declare.out.txt   |     4 +-
 .../local/exception_divide_by_zero.out.txt      |     8 +
 .../results/offline/create_table_mssql.out.txt  |    24 +
 .../results/offline/create_table_ora.out.txt    |    42 +
 .../vectorization/VectorizationBench.java       |    93 +
 .../hive/metastore/TestHiveMetaStore.java       |   153 +-
 .../org/apache/hive/jdbc/TestJdbcDriver2.java   |    16 +
 .../TestOperationLoggingAPIWithMr.java          |     2 -
 .../TestOperationLoggingAPIWithTez.java         |     2 -
 .../operation/TestOperationLoggingLayout.java   |   134 +
 itests/pom.xml                                  |     2 +-
 itests/qtest-spark/pom.xml                      |    24 +
 itests/qtest/pom.xml                            |    28 +-
 .../test/resources/testconfiguration.properties |    54 +-
 .../org/apache/hadoop/hive/ql/QTestUtil.java    |    62 +-
 jdbc/pom.xml                                    |     1 +
 .../org/apache/hive/jdbc/HiveConnection.java    |    34 +-
 .../apache/hive/jdbc/HivePreparedStatement.java |     2 +-
 .../org/apache/hive/jdbc/HiveStatement.java     |     2 +-
 jdbc/src/java/org/apache/hive/jdbc/Utils.java   |   113 +-
 .../hive/jdbc/ZooKeeperHiveClientHelper.java    |   104 +-
 metastore/if/hive_metastore.thrift              |     5 +
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.cpp  |  5586 ++-
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.h    |  7942 ++--
 .../ThriftHiveMetastore_server.skeleton.cpp     |     5 +
 .../thrift/gen-cpp/hive_metastore_constants.cpp |     2 +-
 .../thrift/gen-cpp/hive_metastore_constants.h   |     2 +-
 .../gen/thrift/gen-cpp/hive_metastore_types.cpp |  6204 ++-
 .../gen/thrift/gen-cpp/hive_metastore_types.h   |  2666 +-
 .../hive/metastore/api/AbortTxnRequest.java     |    24 +-
 .../metastore/api/AddDynamicPartitions.java     |    69 +-
 .../metastore/api/AddPartitionsRequest.java     |    80 +-
 .../hive/metastore/api/AddPartitionsResult.java |    48 +-
 .../hadoop/hive/metastore/api/AggrStats.java    |    54 +-
 .../metastore/api/AlreadyExistsException.java   |    24 +-
 .../metastore/api/BinaryColumnStatsData.java    |    40 +-
 .../metastore/api/BooleanColumnStatsData.java   |    40 +-
 .../hive/metastore/api/CheckLockRequest.java    |    24 +-
 .../hive/metastore/api/ColumnStatistics.java    |    54 +-
 .../metastore/api/ColumnStatisticsData.java     |    20 +-
 .../metastore/api/ColumnStatisticsDesc.java     |    58 +-
 .../hive/metastore/api/ColumnStatisticsObj.java |    40 +-
 .../hive/metastore/api/CommitTxnRequest.java    |    24 +-
 .../hive/metastore/api/CompactionRequest.java   |    62 +-
 .../hive/metastore/api/CompactionType.java      |     2 +-
 .../api/ConfigValSecurityException.java         |    24 +-
 .../api/CurrentNotificationEventId.java         |    24 +-
 .../hadoop/hive/metastore/api/Database.java     |   115 +-
 .../apache/hadoop/hive/metastore/api/Date.java  |    24 +-
 .../hive/metastore/api/DateColumnStatsData.java |    50 +-
 .../hadoop/hive/metastore/api/Decimal.java      |    41 +-
 .../metastore/api/DecimalColumnStatsData.java   |    50 +-
 .../metastore/api/DoubleColumnStatsData.java    |    50 +-
 .../hive/metastore/api/DropPartitionsExpr.java  |    43 +-
 .../metastore/api/DropPartitionsRequest.java    |    82 +-
 .../metastore/api/DropPartitionsResult.java     |    48 +-
 .../hive/metastore/api/EnvironmentContext.java  |    61 +-
 .../hive/metastore/api/EventRequestType.java    |     2 +-
 .../hadoop/hive/metastore/api/FieldSchema.java  |    58 +-
 .../hive/metastore/api/FireEventRequest.java    |    79 +-
 .../metastore/api/FireEventRequestData.java     |    20 +-
 .../hive/metastore/api/FireEventResponse.java   |    16 +-
 .../hadoop/hive/metastore/api/Function.java     |   110 +-
 .../hadoop/hive/metastore/api/FunctionType.java |     2 +-
 .../metastore/api/GetAllFunctionsResponse.java  |   447 +
 .../metastore/api/GetOpenTxnsInfoResponse.java  |    54 +-
 .../hive/metastore/api/GetOpenTxnsResponse.java |    53 +-
 .../api/GetPrincipalsInRoleRequest.java         |    24 +-
 .../api/GetPrincipalsInRoleResponse.java        |    46 +-
 .../api/GetRoleGrantsForPrincipalRequest.java   |    36 +-
 .../api/GetRoleGrantsForPrincipalResponse.java  |    46 +-
 .../api/GrantRevokePrivilegeRequest.java        |    46 +-
 .../api/GrantRevokePrivilegeResponse.java       |    26 +-
 .../metastore/api/GrantRevokeRoleRequest.java   |    86 +-
 .../metastore/api/GrantRevokeRoleResponse.java  |    26 +-
 .../hive/metastore/api/GrantRevokeType.java     |     2 +-
 .../hive/metastore/api/HeartbeatRequest.java    |    34 +-
 .../metastore/api/HeartbeatTxnRangeRequest.java |    32 +-
 .../api/HeartbeatTxnRangeResponse.java          |    74 +-
 .../hive/metastore/api/HiveObjectPrivilege.java |    52 +-
 .../hive/metastore/api/HiveObjectRef.java       |    81 +-
 .../hive/metastore/api/HiveObjectType.java      |     2 +-
 .../apache/hadoop/hive/metastore/api/Index.java |   133 +-
 .../api/IndexAlreadyExistsException.java        |    24 +-
 .../metastore/api/InsertEventRequestData.java   |    45 +-
 .../metastore/api/InvalidInputException.java    |    24 +-
 .../metastore/api/InvalidObjectException.java   |    24 +-
 .../api/InvalidOperationException.java          |    24 +-
 .../api/InvalidPartitionException.java          |    24 +-
 .../hive/metastore/api/LockComponent.java       |    66 +-
 .../hadoop/hive/metastore/api/LockLevel.java    |     2 +-
 .../hadoop/hive/metastore/api/LockRequest.java  |    72 +-
 .../hadoop/hive/metastore/api/LockResponse.java |    36 +-
 .../hadoop/hive/metastore/api/LockState.java    |     2 +-
 .../hadoop/hive/metastore/api/LockType.java     |     2 +-
 .../hive/metastore/api/LongColumnStatsData.java |    50 +-
 .../hive/metastore/api/MetaException.java       |    24 +-
 .../hive/metastore/api/NoSuchLockException.java |    24 +-
 .../metastore/api/NoSuchObjectException.java    |    24 +-
 .../hive/metastore/api/NoSuchTxnException.java  |    24 +-
 .../hive/metastore/api/NotificationEvent.java   |    66 +-
 .../metastore/api/NotificationEventRequest.java |    34 +-
 .../api/NotificationEventResponse.java          |    46 +-
 .../hive/metastore/api/OpenTxnRequest.java      |    40 +-
 .../hive/metastore/api/OpenTxnsResponse.java    |    45 +-
 .../apache/hadoop/hive/metastore/api/Order.java |    32 +-
 .../hadoop/hive/metastore/api/Partition.java    |   156 +-
 .../hive/metastore/api/PartitionEventType.java  |     2 +-
 .../api/PartitionListComposingSpec.java         |    46 +-
 .../hive/metastore/api/PartitionSpec.java       |    58 +-
 .../api/PartitionSpecWithSharedSD.java          |    54 +-
 .../hive/metastore/api/PartitionWithoutSD.java  |   124 +-
 .../metastore/api/PartitionsByExprRequest.java  |    67 +-
 .../metastore/api/PartitionsByExprResult.java   |    54 +-
 .../metastore/api/PartitionsStatsRequest.java   |    90 +-
 .../metastore/api/PartitionsStatsResult.java    |    72 +-
 .../metastore/api/PrincipalPrivilegeSet.java    |   184 +-
 .../hive/metastore/api/PrincipalType.java       |     2 +-
 .../hadoop/hive/metastore/api/PrivilegeBag.java |    46 +-
 .../hive/metastore/api/PrivilegeGrantInfo.java  |    60 +-
 .../hive/metastore/api/RequestPartsSpec.java    |    56 +-
 .../hadoop/hive/metastore/api/ResourceType.java |     2 +-
 .../hadoop/hive/metastore/api/ResourceUri.java  |    36 +-
 .../apache/hadoop/hive/metastore/api/Role.java  |    40 +-
 .../hive/metastore/api/RolePrincipalGrant.java  |    80 +-
 .../hadoop/hive/metastore/api/Schema.java       |    91 +-
 .../hadoop/hive/metastore/api/SerDeInfo.java    |    93 +-
 .../api/SetPartitionsStatsRequest.java          |    46 +-
 .../hive/metastore/api/ShowCompactRequest.java  |    16 +-
 .../hive/metastore/api/ShowCompactResponse.java |    46 +-
 .../api/ShowCompactResponseElement.java         |    86 +-
 .../hive/metastore/api/ShowLocksRequest.java    |    16 +-
 .../hive/metastore/api/ShowLocksResponse.java   |    46 +-
 .../metastore/api/ShowLocksResponseElement.java |   114 +-
 .../hadoop/hive/metastore/api/SkewedInfo.java   |   147 +-
 .../hive/metastore/api/StorageDescriptor.java   |   242 +-
 .../metastore/api/StringColumnStatsData.java    |    48 +-
 .../apache/hadoop/hive/metastore/api/Table.java |   189 +-
 .../hive/metastore/api/TableStatsRequest.java   |    61 +-
 .../hive/metastore/api/TableStatsResult.java    |    46 +-
 .../hive/metastore/api/ThriftHiveMetastore.java | 33417 +++++++++++------
 .../hive/metastore/api/TxnAbortedException.java |    24 +-
 .../hadoop/hive/metastore/api/TxnInfo.java      |    52 +-
 .../hive/metastore/api/TxnOpenException.java    |    24 +-
 .../hadoop/hive/metastore/api/TxnState.java     |     2 +-
 .../apache/hadoop/hive/metastore/api/Type.java  |    72 +-
 .../hive/metastore/api/UnknownDBException.java  |    24 +-
 .../api/UnknownPartitionException.java          |    24 +-
 .../metastore/api/UnknownTableException.java    |    24 +-
 .../hive/metastore/api/UnlockRequest.java       |    24 +-
 .../hadoop/hive/metastore/api/Version.java      |    32 +-
 .../metastore/api/hive_metastoreConstants.java  |     7 +-
 .../gen-php/metastore/ThriftHiveMetastore.php   |  4593 ++-
 .../src/gen/thrift/gen-php/metastore/Types.php  |  1184 +-
 .../hive_metastore/ThriftHiveMetastore-remote   |   616 +-
 .../hive_metastore/ThriftHiveMetastore.py       |  4601 ++-
 .../thrift/gen-py/hive_metastore/constants.py   |     2 +-
 .../gen/thrift/gen-py/hive_metastore/ttypes.py  |   856 +-
 .../thrift/gen-rb/hive_metastore_constants.rb   |     2 +-
 .../gen/thrift/gen-rb/hive_metastore_types.rb   |    18 +-
 .../gen/thrift/gen-rb/thrift_hive_metastore.rb  |    62 +-
 .../hadoop/hive/metastore/HiveAlterHandler.java |     2 +-
 .../hadoop/hive/metastore/HiveMetaStore.java    |   106 +-
 .../hive/metastore/HiveMetaStoreClient.java     |     7 +
 .../hive/metastore/HouseKeeperService.java      |    39 +
 .../hadoop/hive/metastore/IMetaStoreClient.java |     8 +-
 .../hive/metastore/MetaStoreDirectSql.java      |    69 +-
 .../hadoop/hive/metastore/MetaStoreUtils.java   |    17 +-
 .../hadoop/hive/metastore/ObjectStore.java      |    35 +-
 .../apache/hadoop/hive/metastore/RawStore.java  |     7 +
 .../hive/metastore/RetryingMetaStoreClient.java |    32 +-
 .../hadoop/hive/metastore/txn/TxnHandler.java   |   185 +-
 .../metastore/txn/ValidCompactorTxnList.java    |     2 +-
 .../DummyRawStoreControlledCommit.java          |     7 +
 .../DummyRawStoreForJdoConnection.java          |     6 +
 .../metastore/txn/TestCompactionTxnHandler.java |    40 +-
 .../hive/metastore/txn/TestTxnHandler.java      |    73 +-
 packaging/src/main/assembly/bin.xml             |    17 +-
 pom.xml                                         |    54 +-
 ql/if/queryplan.thrift                          |     1 +
 ql/pom.xml                                      |    24 +-
 .../gen/thrift/gen-cpp/queryplan_constants.cpp  |     2 +-
 ql/src/gen/thrift/gen-cpp/queryplan_constants.h |     2 +-
 ql/src/gen/thrift/gen-cpp/queryplan_types.cpp   |   796 +-
 ql/src/gen/thrift/gen-cpp/queryplan_types.h     |   294 +-
 .../hadoop/hive/ql/plan/api/Adjacency.java      |    65 +-
 .../hadoop/hive/ql/plan/api/AdjacencyType.java  |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Graph.java   |    87 +-
 .../hadoop/hive/ql/plan/api/NodeType.java       |     2 +-
 .../hadoop/hive/ql/plan/api/Operator.java       |   142 +-
 .../hadoop/hive/ql/plan/api/OperatorType.java   |     7 +-
 .../apache/hadoop/hive/ql/plan/api/Query.java   |   176 +-
 .../hadoop/hive/ql/plan/api/QueryPlan.java      |    62 +-
 .../apache/hadoop/hive/ql/plan/api/Stage.java   |   172 +-
 .../hadoop/hive/ql/plan/api/StageType.java      |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Task.java    |   182 +-
 .../hadoop/hive/ql/plan/api/TaskType.java       |     2 +-
 ql/src/gen/thrift/gen-php/Types.php             |   119 +-
 ql/src/gen/thrift/gen-py/queryplan/constants.py |     2 +-
 ql/src/gen/thrift/gen-py/queryplan/ttypes.py    |    87 +-
 ql/src/gen/thrift/gen-rb/queryplan_constants.rb |     2 +-
 ql/src/gen/thrift/gen-rb/queryplan_types.rb     |     7 +-
 ...tringGroupColumnCompareStringGroupColumn.txt |   112 +-
 ...gGroupColumnCompareStringGroupScalarBase.txt |    12 +-
 ...gGroupScalarCompareStringGroupColumnBase.txt |    12 +-
 ...tringGroupColumnCompareStringGroupColumn.txt |   112 +-
 ...gGroupColumnCompareStringGroupScalarBase.txt |    12 +-
 ...gGroupScalarCompareStringGroupColumnBase.txt |    12 +-
 .../UDAFTemplates/VectorUDAFMinMaxString.txt    |     3 +-
 .../java/org/apache/hadoop/hive/ql/Context.java |     1 -
 .../java/org/apache/hadoop/hive/ql/Driver.java  |   222 +-
 .../org/apache/hadoop/hive/ql/ErrorMsg.java     |    13 +-
 .../org/apache/hadoop/hive/ql/QueryPlan.java    |    18 +-
 .../apache/hadoop/hive/ql/exec/ExplainTask.java |     7 +-
 .../hadoop/hive/ql/exec/FetchOperator.java      |     5 +-
 .../hadoop/hive/ql/exec/FileSinkOperator.java   |     2 +-
 .../hadoop/hive/ql/exec/FunctionRegistry.java   |    66 +-
 .../hadoop/hive/ql/exec/FunctionTask.java       |     2 +-
 .../hive/ql/exec/HashTableSinkOperator.java     |     6 +-
 .../apache/hadoop/hive/ql/exec/JoinUtil.java    |    87 +-
 .../hadoop/hive/ql/exec/KeyWrapperFactory.java  |    18 +-
 .../hadoop/hive/ql/exec/MapJoinOperator.java    |    61 +-
 .../apache/hadoop/hive/ql/exec/MoveTask.java    |     4 +-
 .../apache/hadoop/hive/ql/exec/Operator.java    |    31 +-
 .../hadoop/hive/ql/exec/OperatorFactory.java    |    11 +
 .../hadoop/hive/ql/exec/ScriptOperator.java     |    85 +-
 .../ql/exec/SparkHashTableSinkOperator.java     |    17 +-
 .../apache/hadoop/hive/ql/exec/Utilities.java   |    38 +-
 .../hadoop/hive/ql/exec/mr/ExecDriver.java      |    30 +-
 .../hive/ql/exec/mr/HadoopJobExecHelper.java    |    20 +-
 .../persistence/HybridHashTableContainer.java   |    33 +
 .../persistence/MapJoinBytesTableContainer.java |     5 +
 .../exec/persistence/MapJoinTableContainer.java |     5 +
 .../persistence/MapJoinTableContainerSerDe.java |    63 +-
 .../hive/ql/exec/spark/HashTableLoader.java     |    26 +-
 .../ql/exec/spark/HiveSparkClientFactory.java   |    10 +-
 .../hive/ql/exec/spark/KryoSerializer.java      |     4 +
 .../ql/exec/spark/RemoteHiveSparkClient.java    |    57 +-
 .../exec/spark/SparkDynamicPartitionPruner.java |   268 +
 .../hadoop/hive/ql/exec/spark/SparkPlan.java    |     3 -
 .../hive/ql/exec/spark/SparkPlanGenerator.java  |    15 +-
 .../ql/exec/spark/SparkReduceRecordHandler.java |     2 -
 .../hadoop/hive/ql/exec/spark/SparkTask.java    |     1 +
 .../hive/ql/exec/spark/SparkUtilities.java      |    56 +
 .../spark/status/impl/LocalSparkJobStatus.java  |     2 +-
 .../spark/status/impl/RemoteSparkJobStatus.java |     2 +-
 .../hive/ql/exec/tez/KeyValuesAdapter.java      |    47 +
 .../hive/ql/exec/tez/KeyValuesFromKeyValue.java |    90 +
 .../ql/exec/tez/KeyValuesFromKeyValues.java     |    48 +
 .../hive/ql/exec/tez/ReduceRecordProcessor.java |    11 +-
 .../hive/ql/exec/tez/ReduceRecordSource.java    |    15 +-
 .../hive/ql/exec/tez/TezSessionState.java       |     2 +
 .../apache/hadoop/hive/ql/exec/tez/TezTask.java |    10 +-
 .../hive/ql/exec/vector/BytesColumnVector.java  |   333 -
 .../hive/ql/exec/vector/ColumnVector.java       |   170 -
 .../ql/exec/vector/DecimalColumnVector.java     |   113 -
 .../hive/ql/exec/vector/DoubleColumnVector.java |   149 -
 .../hive/ql/exec/vector/LongColumnVector.java   |   193 -
 .../ql/exec/vector/VectorHashKeyWrapper.java    |     2 +-
 .../ql/exec/vector/VectorMapJoinOperator.java   |     1 -
 .../ql/exec/vector/VectorSelectOperator.java    |     3 -
 .../VectorSparkHashTableSinkOperator.java       |   104 +
 ...VectorSparkPartitionPruningSinkOperator.java |    99 +
 .../ql/exec/vector/VectorizationContext.java    |    56 +-
 .../hive/ql/exec/vector/VectorizedRowBatch.java |   206 -
 .../BRoundWithNumDigitsDoubleToDouble.java      |    42 +
 .../expressions/CastStringGroupToString.java    |    40 +
 .../ql/exec/vector/expressions/ColAndCol.java   |    34 +-
 .../ql/exec/vector/expressions/ColOrCol.java    |    42 +-
 .../exec/vector/expressions/CuckooSetBytes.java |     2 +-
 .../ql/exec/vector/expressions/DecimalUtil.java |    18 +
 .../vector/expressions/FilterExprAndExpr.java   |     8 +-
 .../vector/expressions/FilterExprOrExpr.java    |   140 +-
 ...FuncBRoundWithNumDigitsDecimalToDecimal.java |    40 +
 .../FuncRoundWithNumDigitsDecimalToDecimal.java |    14 +-
 .../ql/exec/vector/expressions/MathExpr.java    |    22 +
 .../hive/ql/exec/vector/expressions/NotCol.java |    14 +-
 .../ql/exec/vector/expressions/StringExpr.java  |    51 +
 .../mapjoin/VectorMapJoinCommonOperator.java    |     1 +
 ...VectorMapJoinInnerBigOnlyStringOperator.java |     4 +-
 .../VectorMapJoinInnerStringOperator.java       |     4 +-
 .../VectorMapJoinLeftSemiStringOperator.java    |     4 +-
 .../VectorMapJoinOuterStringOperator.java       |     4 +-
 .../fast/VectorMapJoinFastHashTable.java        |     5 +
 .../fast/VectorMapJoinFastTableContainer.java   |     5 +
 .../hashtable/VectorMapJoinHashTable.java       |     4 +
 .../VectorMapJoinOptimizedHashTable.java        |     4 +
 .../hadoop/hive/ql/hooks/LineageInfo.java       |     9 +-
 .../hadoop/hive/ql/hooks/LineageLogger.java     |    48 +-
 .../hive/ql/hooks/PostExecOrcFileDump.java      |   120 +
 .../ql/hooks/PostExecTezSummaryPrinter.java     |    72 +
 .../org/apache/hadoop/hive/ql/io/AcidUtils.java |   183 +-
 .../hive/ql/io/CombineHiveInputFormat.java      |    98 +-
 .../hadoop/hive/ql/io/HiveInputFormat.java      |    46 +-
 .../apache/hadoop/hive/ql/io/orc/FileDump.java  |    52 +-
 .../hadoop/hive/ql/io/orc/MemoryManager.java    |     4 +-
 .../apache/hadoop/hive/ql/io/orc/OrcConf.java   |   191 +
 .../apache/hadoop/hive/ql/io/orc/OrcFile.java   |   161 +-
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java   |   306 +-
 .../hadoop/hive/ql/io/orc/OrcOutputFormat.java  |    67 +-
 .../hive/ql/io/orc/OrcRawRecordMerger.java      |    20 +-
 .../apache/hadoop/hive/ql/io/orc/OrcSerde.java  |     6 +-
 .../apache/hadoop/hive/ql/io/orc/OrcSplit.java  |    25 +-
 .../apache/hadoop/hive/ql/io/orc/Reader.java    |    47 +-
 .../hadoop/hive/ql/io/orc/ReaderImpl.java       |   260 +-
 .../hadoop/hive/ql/io/orc/RecordReaderImpl.java |    83 +-
 .../hive/ql/io/orc/TreeReaderFactory.java       |    30 +-
 .../hadoop/hive/ql/io/orc/WriterImpl.java       |    27 +-
 .../hive/ql/io/parquet/LeafFilterFactory.java   |    43 +-
 .../parquet/read/DataWritableReadSupport.java   |    10 +-
 .../read/ParquetFilterPredicateConverter.java   |   145 +
 .../read/ParquetRecordReaderWrapper.java        |   125 +-
 .../ql/io/rcfile/stats/PartialScanTask.java     |    20 +-
 .../hive/ql/io/sarg/ConvertAstToSearchArg.java  |   436 +
 .../hive/ql/io/sarg/SearchArgumentFactory.java  |    56 -
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |  1027 -
 .../hadoop/hive/ql/lib/DefaultGraphWalker.java  |    84 +-
 .../hadoop/hive/ql/lib/ForwardWalker.java       |    35 +-
 .../hadoop/hive/ql/lib/LevelOrderWalker.java    |   153 +
 .../hadoop/hive/ql/lib/PreOrderOnceWalker.java  |    44 +
 .../hadoop/hive/ql/lib/PreOrderWalker.java      |     2 +-
 .../hadoop/hive/ql/lib/RuleExactMatch.java      |    21 +-
 .../apache/hadoop/hive/ql/lib/RuleRegExp.java   |   197 +-
 .../hadoop/hive/ql/lockmgr/DbLockManager.java   |    12 +-
 .../hadoop/hive/ql/lockmgr/DbTxnManager.java    |    71 +-
 .../hadoop/hive/ql/lockmgr/DummyTxnManager.java |     8 +
 .../hadoop/hive/ql/lockmgr/HiveTxnManager.java  |    21 +
 .../hive/ql/lockmgr/HiveTxnManagerImpl.java     |    10 +
 .../hadoop/hive/ql/lockmgr/LockException.java   |     8 +-
 .../hadoop/hive/ql/log/HiveEventCounter.java    |   135 +
 .../apache/hadoop/hive/ql/log/NullAppender.java |    63 +
 .../ql/log/PidDailyRollingFileAppender.java     |    33 -
 .../hive/ql/log/PidFilePatternConverter.java    |    62 +
 .../apache/hadoop/hive/ql/metadata/Hive.java    |   153 +-
 .../hadoop/hive/ql/metadata/HiveException.java  |     3 +
 .../hadoop/hive/ql/metadata/Partition.java      |     2 +-
 .../ql/metadata/SessionHiveMetaStoreClient.java |     2 +-
 .../hadoop/hive/ql/metadata/TableIterable.java  |   104 +
 .../hadoop/hive/ql/optimizer/ColumnPruner.java  |    12 +-
 .../hive/ql/optimizer/ColumnPrunerProcCtx.java  |    95 +-
 .../ql/optimizer/ColumnPrunerProcFactory.java   |    42 +-
 .../hive/ql/optimizer/ConstantPropagate.java    |    12 +-
 .../optimizer/ConstantPropagateProcFactory.java |   311 +-
 .../hive/ql/optimizer/ConvertJoinMapJoin.java   |   213 +-
 .../DynamicPartitionPruningOptimization.java    |    44 +-
 .../hive/ql/optimizer/GenMapRedUtils.java       |    20 +-
 .../hive/ql/optimizer/GroupByOptimizer.java     |    58 +-
 .../ql/optimizer/IdentityProjectRemover.java    |    15 +
 .../hadoop/hive/ql/optimizer/IndexUtils.java    |    13 +-
 .../hive/ql/optimizer/MapJoinProcessor.java     |    44 +-
 .../ql/optimizer/OperatorComparatorFactory.java |   552 +
 .../hadoop/hive/ql/optimizer/Optimizer.java     |    15 +-
 .../hive/ql/optimizer/PointLookupOptimizer.java |   378 +
 .../hadoop/hive/ql/optimizer/PrunerUtils.java   |    14 +-
 .../ql/optimizer/ReduceSinkMapJoinProc.java     |    84 +-
 .../hive/ql/optimizer/SimpleFetchOptimizer.java |     5 +-
 .../SparkRemoveDynamicPruningBySize.java        |    73 +
 .../ql/optimizer/calcite/HiveRelOptUtil.java    |    23 -
 .../calcite/reloperators/HiveFilter.java        |     2 +-
 .../calcite/reloperators/HiveSort.java          |    29 +-
 .../rules/HiveJoinProjectTransposeRule.java     |    53 +-
 .../calcite/rules/HiveJoinToMultiJoinRule.java  |    82 +-
 .../calcite/translator/ExprNodeConverter.java   |    60 +-
 .../calcite/translator/HiveOpConverter.java     |   104 +-
 .../calcite/translator/JoinTypeCheckCtx.java    |     2 +-
 .../translator/PlanModifierForASTConv.java      |     2 +-
 .../translator/PlanModifierForReturnPath.java   |     6 +-
 .../calcite/translator/TypeConverter.java       |    13 +-
 .../correlation/AbstractCorrelationProcCtx.java |     7 +
 .../correlation/CorrelationUtilities.java       |    11 +-
 .../correlation/ReduceSinkDeDuplication.java    |     6 +-
 .../ql/optimizer/index/RewriteCanApplyCtx.java  |     8 +-
 .../ql/optimizer/lineage/ExprProcFactory.java   |     9 +-
 .../hive/ql/optimizer/lineage/Generator.java    |     4 +-
 .../hive/ql/optimizer/lineage/LineageCtx.java   |    34 +-
 .../ql/optimizer/lineage/OpProcFactory.java     |    10 +-
 .../annotation/AnnotateWithOpTraits.java        |     6 +-
 .../ql/optimizer/pcr/PcrExprProcFactory.java    |   154 +-
 .../BucketingSortingInferenceOptimizer.java     |     8 +-
 .../physical/GenSparkSkewJoinProcessor.java     |    14 +-
 .../physical/NullScanTaskDispatcher.java        |     6 +-
 .../hive/ql/optimizer/physical/Vectorizer.java  |    40 +-
 .../hive/ql/optimizer/ppr/OpProcFactory.java    |     3 +-
 .../hive/ql/optimizer/ppr/PartitionPruner.java  |    69 +-
 .../spark/CombineEquivalentWorkResolver.java    |   292 +
 .../spark/SparkPartitionPruningSinkDesc.java    |   100 +
 .../spark/SparkReduceSinkMapJoinProc.java       |     2 +-
 .../annotation/AnnotateWithStatistics.java      |     6 +-
 .../stats/annotation/StatsRulesProcFactory.java |    49 +-
 .../ql/optimizer/unionproc/UnionProcessor.java  |    10 +-
 .../apache/hadoop/hive/ql/parse/ASTNode.java    |   139 +-
 .../hive/ql/parse/BaseSemanticAnalyzer.java     |    13 +
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |    49 +-
 .../ql/parse/ColumnStatsSemanticAnalyzer.java   |     6 +-
 .../hive/ql/parse/DDLSemanticAnalyzer.java      |    11 +
 .../hive/ql/parse/ExplainSemanticAnalyzer.java  |     2 +-
 .../hadoop/hive/ql/parse/GenMapRedWalker.java   |     2 +-
 .../hadoop/hive/ql/parse/GenTezProcContext.java |    12 +
 .../hadoop/hive/ql/parse/GenTezUtils.java       |    23 +-
 .../apache/hadoop/hive/ql/parse/GenTezWork.java |    81 +-
 .../hadoop/hive/ql/parse/GenTezWorkWalker.java  |     2 +-
 .../org/apache/hadoop/hive/ql/parse/HiveLexer.g |    11 +
 .../apache/hadoop/hive/ql/parse/HiveParser.g    |    70 +
 .../hadoop/hive/ql/parse/IdentifiersParser.g    |    75 +-
 .../hadoop/hive/ql/parse/LeadLagInfo.java       |     4 +-
 .../hive/ql/parse/LoadSemanticAnalyzer.java     |    38 +-
 .../apache/hadoop/hive/ql/parse/ParseUtils.java |    53 +-
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |   111 +-
 .../hive/ql/parse/SemanticAnalyzerFactory.java  |    12 +
 .../apache/hadoop/hive/ql/parse/TezWalker.java  |     2 +-
 .../hadoop/hive/ql/parse/TypeCheckCtx.java      |    15 +-
 .../hive/ql/parse/TypeCheckProcFactory.java     |    46 +-
 .../ql/parse/spark/GenSparkProcContext.java     |    14 +-
 .../hive/ql/parse/spark/GenSparkUtils.java      |   111 +-
 .../hive/ql/parse/spark/GenSparkWorkWalker.java |     2 +-
 .../parse/spark/OptimizeSparkProcContext.java   |    16 +-
 .../hive/ql/parse/spark/SparkCompiler.java      |   180 +-
 .../SparkPartitionPruningSinkOperator.java      |   142 +
 .../hive/ql/parse/spark/SplitOpTreeForDPP.java  |   151 +
 .../apache/hadoop/hive/ql/plan/BaseWork.java    |     2 +-
 .../hive/ql/plan/CommonMergeJoinDesc.java       |     4 +
 .../apache/hadoop/hive/ql/plan/ExplainWork.java |    19 +-
 .../hive/ql/plan/ExprNodeConstantDesc.java      |    29 +-
 .../hadoop/hive/ql/plan/ExprNodeDesc.java       |    23 +-
 .../hadoop/hive/ql/plan/ExprNodeDescUtils.java  |   115 +
 .../apache/hadoop/hive/ql/plan/FilterDesc.java  |    14 +-
 .../hadoop/hive/ql/plan/HiveOperation.java      |    32 +-
 .../hadoop/hive/ql/plan/JoinCondDesc.java       |    14 +
 .../apache/hadoop/hive/ql/plan/JoinDesc.java    |     4 +
 .../apache/hadoop/hive/ql/plan/MapJoinDesc.java |    11 +
 .../org/apache/hadoop/hive/ql/plan/MapWork.java |    20 +-
 .../hadoop/hive/ql/plan/PartitionDesc.java      |    39 +-
 .../apache/hadoop/hive/ql/plan/PlanUtils.java   |     9 +-
 .../hadoop/hive/ql/plan/ReduceSinkDesc.java     |     1 +
 .../apache/hadoop/hive/ql/plan/ReduceWork.java  |     2 +-
 .../hive/ql/plan/SparkHashTableSinkDesc.java    |    11 +
 .../hadoop/hive/ql/plan/TableScanDesc.java      |     6 +-
 .../hadoop/hive/ql/ppd/ExprWalkerInfo.java      |   136 +-
 .../hive/ql/ppd/ExprWalkerProcFactory.java      |   107 +-
 .../hadoop/hive/ql/ppd/OpProcFactory.java       |    11 +-
 .../ql/ppd/PredicateTransitivePropagate.java    |     4 +-
 .../hive/ql/ppd/SyntheticJoinPredicate.java     |    18 +-
 .../ql/processors/CommandProcessorResponse.java |    21 +-
 .../hadoop/hive/ql/processors/HiveCommand.java  |     3 +
 .../hadoop/hive/ql/processors/SetProcessor.java |     4 +
 .../authorization/plugin/HiveOperationType.java |     5 +
 .../plugin/sqlstd/Operation2Privilege.java      |    11 +
 .../hadoop/hive/ql/session/SessionState.java    |    44 +-
 .../apache/hadoop/hive/ql/stats/StatsUtils.java |    54 +-
 .../hive/ql/txn/AcidHouseKeeperService.java     |   104 +
 .../hive/ql/txn/compactor/CompactorMR.java      |    19 +-
 .../hadoop/hive/ql/txn/compactor/Initiator.java |    10 +-
 .../hadoop/hive/ql/txn/compactor/Worker.java    |     2 +-
 .../hive/ql/udf/generic/GenericUDAFStd.java     |     2 +
 .../ql/udf/generic/GenericUDAFVariance.java     |     2 +
 .../hadoop/hive/ql/udf/generic/GenericUDF.java  |    14 +-
 .../hive/ql/udf/generic/GenericUDFAesBase.java  |   205 +
 .../ql/udf/generic/GenericUDFAesDecrypt.java    |    50 +
 .../ql/udf/generic/GenericUDFAesEncrypt.java    |    50 +
 .../hive/ql/udf/generic/GenericUDFBRound.java   |    68 +
 .../ql/udf/generic/GenericUDFBaseNumeric.java   |     4 +-
 .../hive/ql/udf/generic/GenericUDFBasePad.java  |     8 +-
 .../hive/ql/udf/generic/GenericUDFBridge.java   |     8 +-
 .../hive/ql/udf/generic/GenericUDFIn.java       |    14 +-
 .../hive/ql/udf/generic/GenericUDFMapKeys.java  |     6 +-
 .../hive/ql/udf/generic/GenericUDFNvl.java      |     2 +-
 .../hive/ql/udf/generic/GenericUDFOPAnd.java    |    63 +-
 .../hive/ql/udf/generic/GenericUDFOPEqual.java  |     4 +
 .../generic/GenericUDFOPEqualOrGreaterThan.java |     4 +
 .../generic/GenericUDFOPEqualOrLessThan.java    |     4 +
 .../ql/udf/generic/GenericUDFOPGreaterThan.java |     4 +
 .../ql/udf/generic/GenericUDFOPLessThan.java    |     4 +
 .../ql/udf/generic/GenericUDFOPNotEqual.java    |     5 +
 .../ql/udf/generic/GenericUDFOPNotNull.java     |     4 +
 .../hive/ql/udf/generic/GenericUDFOPNull.java   |     4 +
 .../hive/ql/udf/generic/GenericUDFOPOr.java     |    63 +-
 .../ql/udf/generic/GenericUDFParamUtils.java    |     8 +-
 .../hive/ql/udf/generic/GenericUDFRound.java    |    41 +-
 .../hive/ql/udf/generic/GenericUDFStruct.java   |    25 +-
 .../hadoop/hive/ql/udf/generic/RoundUtils.java  |    14 +
 .../main/resources/hive-exec-log4j.properties   |    77 -
 ql/src/main/resources/hive-exec-log4j2.xml      |   110 +
 ql/src/main/resources/tez-container-log4j2.xml  |    49 +
 .../apache/hadoop/hive/ql/TestTxnCommands.java  |   494 +
 .../apache/hadoop/hive/ql/TestTxnCommands2.java |   126 +-
 .../hadoop/hive/ql/exec/TestOperators.java      |    16 +
 .../exec/vector/TestVectorizationContext.java   |    93 +
 .../exec/vector/TestVectorizedRowBatchCtx.java  |     6 +-
 .../TestVectorLogicalExpressions.java           |   282 +
 .../apache/hadoop/hive/ql/io/TestAcidUtils.java |    27 +-
 .../hive/ql/io/orc/TestInputOutputFormat.java   |   137 +-
 .../hadoop/hive/ql/io/orc/TestOrcFile.java      |    11 +-
 .../hive/ql/io/orc/TestRecordReaderImpl.java    |    69 +-
 .../hive/ql/io/orc/TestVectorizedORCReader.java |    75 +-
 .../parquet/TestParquetRecordReaderWrapper.java |   173 +
 .../read/TestParquetFilterPredicate.java        |    72 +
 .../ql/io/sarg/TestConvertAstToSearchArg.java   |  2884 ++
 .../hive/ql/io/sarg/TestSearchArgumentImpl.java |  2891 +-
 .../hadoop/hive/ql/lib/TestRuleRegExp.java      |   118 +
 .../hive/ql/lockmgr/TestDbTxnManager.java       |    74 +-
 .../hive/ql/lockmgr/TestDbTxnManager2.java      |     2 +-
 .../hadoop/hive/ql/log/TestLog4j2Appenders.java |    95 +
 .../hadoop/hive/ql/metadata/StringAppender.java |   128 +
 .../hadoop/hive/ql/metadata/TestHive.java       |    50 +-
 .../TestSQL11ReservedKeyWordsNegative.java      |    32 +-
 .../TestSQL11ReservedKeyWordsPositive.java      |    23 +-
 .../parse/TestUpdateDeleteSemanticAnalyzer.java |    34 +-
 .../positive/TestTransactionStatement.java      |   102 +
 .../hive/ql/session/TestSessionState.java       |     2 +-
 .../udf/generic/TestGenericUDFAesDecrypt.java   |   233 +
 .../udf/generic/TestGenericUDFAesEncrypt.java   |   228 +
 .../ql/udf/generic/TestGenericUDFBRound.java    |   202 +
 .../clientnegative/alter_table_wrong_location.q |     4 +
 .../queries/clientnegative/ctas_noemptyfolder.q |    10 +
 .../queries/clientnegative/load_orc_negative3.q |     6 +
 .../clientnegative/mismatch_columns_insertion.q |     4 +
 .../queries/clientnegative/nvl_mismatch_type.q  |    20 +
 .../annotate_stats_deep_filters.q               |    67 +
 .../clientpositive/authorization_1_sql_std.q    |     4 +
 .../clientpositive/cast_tinyint_to_double.q     |     7 +
 ql/src/test/queries/clientpositive/cbo_rp_gby.q |    24 +
 .../queries/clientpositive/cbo_rp_gby_empty.q   |    30 +
 .../test/queries/clientpositive/cbo_rp_insert.q |    17 +
 .../test/queries/clientpositive/cbo_rp_join.q   |    65 +
 .../test/queries/clientpositive/cbo_rp_limit.q  |    16 +
 .../clientpositive/cbo_rp_outer_join_ppr.q      |    40 +
 .../queries/clientpositive/cbo_rp_semijoin.q    |    17 +
 .../clientpositive/cbo_rp_simple_select.q       |    56 +
 .../test/queries/clientpositive/cbo_rp_stats.q  |    10 +
 .../queries/clientpositive/cbo_rp_subq_exists.q |    67 +
 .../queries/clientpositive/cbo_rp_subq_in.q     |    56 +
 .../queries/clientpositive/cbo_rp_subq_not_in.q |    81 +
 .../queries/clientpositive/cbo_rp_udf_udaf.q    |    20 +
 .../test/queries/clientpositive/cbo_rp_union.q  |    14 +
 .../test/queries/clientpositive/cbo_rp_views.q  |    46 +
 .../queries/clientpositive/cbo_rp_windowing.q   |    21 +
 .../queries/clientpositive/cbo_rp_windowing_2.q |   439 +
 ql/src/test/queries/clientpositive/char_udf1.q  |     9 +-
 .../clientpositive/columnstats_quoting.q        |     8 +
 .../queries/clientpositive/compustat_avro.q     |     8 +-
 .../test/queries/clientpositive/create_like.q   |    12 +
 .../queries/clientpositive/dynamic_rdd_cache.q  |   111 +
 .../queries/clientpositive/flatten_and_or.q     |    19 +
 .../queries/clientpositive/folder_predicate.q   |    32 +
 ql/src/test/queries/clientpositive/groupby13.q  |    16 +
 .../queries/clientpositive/groupby1_map_nomap.q |     2 +
 ql/src/test/queries/clientpositive/groupby5.q   |     2 +
 ql/src/test/queries/clientpositive/groupby6.q   |     2 +
 .../clientpositive/groupby_grouping_id2.q       |     2 +
 .../clientpositive/groupby_ppr_multi_distinct.q |     2 +
 ql/src/test/queries/clientpositive/having2.q    |    27 +
 .../clientpositive/insertoverwrite_bucket.q     |    28 +
 ql/src/test/queries/clientpositive/keyword_2.q  |    14 +
 ql/src/test/queries/clientpositive/lineage3.q   |    22 +-
 .../clientpositive/load_dyn_part14_win.q        |    18 +-
 .../test/queries/clientpositive/load_orc_part.q |     4 +
 .../queries/clientpositive/macro_duplicate.q    |    10 +
 .../queries/clientpositive/multi_column_in.q    |    71 +
 .../test/queries/clientpositive/orc_file_dump.q |    57 +
 .../test/queries/clientpositive/orc_ppd_basic.q |   177 +
 .../clientpositive/parquet_ppd_boolean.q        |    35 +
 .../queries/clientpositive/parquet_ppd_char.q   |    76 +
 .../queries/clientpositive/parquet_ppd_date.q   |   101 +
 .../clientpositive/parquet_ppd_decimal.q        |   163 +
 .../clientpositive/parquet_ppd_partition.q      |     9 +
 .../clientpositive/parquet_ppd_timestamp.q      |    98 +
 .../clientpositive/parquet_ppd_varchar.q        |    76 +
 .../clientpositive/parquet_predicate_pushdown.q |   292 +
 .../test/queries/clientpositive/pointlookup.q   |    59 +
 .../test/queries/clientpositive/pointlookup2.q  |    51 +
 .../test/queries/clientpositive/pointlookup3.q  |    41 +
 .../queries/clientpositive/ptfgroupbyjoin.q     |    61 +
 .../queries/clientpositive/selectDistinctStar.q |     2 +
 .../clientpositive/smb_join_partition_key.q     |    35 +
 .../spark_dynamic_partition_pruning.q           |   180 +
 .../spark_dynamic_partition_pruning_2.q         |   118 +
 ...spark_vectorized_dynamic_partition_pruning.q |   192 +
 .../test/queries/clientpositive/stats_ppr_all.q |    24 +
 ql/src/test/queries/clientpositive/structin.q   |    23 +
 .../clientpositive/tez_dynpart_hashjoin_1.q     |   101 +
 .../clientpositive/tez_dynpart_hashjoin_2.q     |    83 +
 .../tez_vector_dynpart_hashjoin_1.q             |   102 +
 .../tez_vector_dynpart_hashjoin_2.q             |    84 +
 .../queries/clientpositive/udf_aes_decrypt.q    |    21 +
 .../queries/clientpositive/udf_aes_encrypt.q    |    21 +
 ql/src/test/queries/clientpositive/udf_bround.q |    44 +
 .../clientpositive/udf_from_utc_timestamp.q     |    30 +-
 .../queries/clientpositive/udf_percentile.q     |     2 +
 .../clientpositive/udf_to_utc_timestamp.q       |    30 +-
 .../clientpositive/unionall_unbalancedppd.q     |   195 +
 .../test/queries/clientpositive/varchar_udf1.q  |     6 +-
 .../test/queries/clientpositive/vector_acid3.q  |    17 +
 .../vector_aggregate_without_gby.q              |    14 +
 .../test/queries/clientpositive/vector_bround.q |    14 +
 .../clientpositive/vector_cast_constant.q       |     4 +-
 .../queries/clientpositive/vectorized_casts.q   |     6 +
 .../alter_table_wrong_location.q.out            |     9 +
 .../clientnegative/char_pad_convert_fail0.q.out |     2 +-
 .../clientnegative/char_pad_convert_fail1.q.out |     2 +-
 .../clientnegative/char_pad_convert_fail3.q.out |     2 +-
 .../clientnegative/ctas_noemptyfolder.q.out     |    19 +
 .../clientnegative/exchange_partition.q.out     |     2 +-
 .../clientnegative/load_orc_negative3.q.out     |    25 +
 .../mismatch_columns_insertion.q.out            |     9 +
 .../clientnegative/nvl_mismatch_type.q.out      |    43 +
 .../groupby2_map_skew_multi_distinct.q.out      |     9 +
 .../spark/groupby2_multi_distinct.q.out         |     9 +
 .../groupby3_map_skew_multi_distinct.q.out      |     9 +
 .../spark/groupby3_multi_distinct.q.out         |     9 +
 .../spark/groupby_grouping_sets7.q.out          |     9 +
 .../annotate_stats_deep_filters.q.out           |   244 +
 .../clientpositive/annotate_stats_filter.q.out  |    10 +-
 .../authorization_1_sql_std.q.out               |    11 +
 .../clientpositive/cast_tinyint_to_double.q.out |    38 +
 .../results/clientpositive/cbo_rp_gby.q.out     |   124 +
 .../clientpositive/cbo_rp_gby_empty.q.out       |    77 +
 .../results/clientpositive/cbo_rp_insert.q.out  |    89 +
 .../results/clientpositive/cbo_rp_join.q.out    | 15028 ++++++++
 .../results/clientpositive/cbo_rp_join0.q.out   |     4 +-
 .../results/clientpositive/cbo_rp_limit.q.out   |    90 +
 .../cbo_rp_outer_join_ppr.q.java1.7.out         |   855 +
 .../clientpositive/cbo_rp_semijoin.q.out        |   440 +
 .../clientpositive/cbo_rp_simple_select.q.out   |   755 +
 .../results/clientpositive/cbo_rp_stats.q.out   |    14 +
 .../clientpositive/cbo_rp_subq_exists.q.out     |   297 +
 .../results/clientpositive/cbo_rp_subq_in.q.out |   151 +
 .../clientpositive/cbo_rp_subq_not_in.q.out     |   365 +
 .../clientpositive/cbo_rp_udf_udaf.q.out        |   125 +
 .../results/clientpositive/cbo_rp_union.q.out   |   920 +
 .../results/clientpositive/cbo_rp_views.q.out   |   237 +
 .../clientpositive/cbo_rp_windowing.q.out       |   293 +
 .../clientpositive/cbo_rp_windowing_2.q.out     |  2338 ++
 .../clientpositive/char_udf1.q.java1.7.out      |    22 +-
 .../clientpositive/columnstats_quoting.q.out    |   114 +
 .../results/clientpositive/compustat_avro.q.out |     8 +-
 .../clientpositive/constprog_partitioner.q.out  |    30 +-
 .../clientpositive/convert_enum_to_string.q.out |     9 +-
 .../clientpositive/correlationoptimizer10.q.out |    48 +-
 .../clientpositive/correlationoptimizer5.q.out  |     6 +-
 .../results/clientpositive/create_like.q.out    |    66 +
 .../results/clientpositive/decimal_udf.q.out    |    18 +-
 .../clientpositive/dynamic_rdd_cache.q.out      |  1428 +
 .../clientpositive/exchange_partition.q.out     |     4 +-
 .../clientpositive/exchange_partition2.q.out    |     4 +-
 .../clientpositive/exchange_partition3.q.out    |     4 +-
 .../clientpositive/filter_cond_pushdown.q.out   |    32 +-
 .../clientpositive/filter_join_breaktask.q.out  |    12 +-
 .../results/clientpositive/flatten_and_or.q.out |    66 +
 .../test/results/clientpositive/fold_when.q.out |    16 +-
 .../clientpositive/folder_predicate.q.out       |   368 +
 .../test/results/clientpositive/groupby13.q.out |    86 +
 .../clientpositive/groupby1_map_nomap.q.out     |     8 +-
 .../test/results/clientpositive/groupby5.q.out  |     8 +-
 .../test/results/clientpositive/groupby6.q.out  |     8 +-
 .../clientpositive/groupby_duplicate_key.q.out  |    16 +-
 .../clientpositive/groupby_grouping_id2.q.out   |    28 +-
 .../groupby_multi_single_reducer2.q.out         |     2 +-
 .../groupby_multi_single_reducer3.q.out         |    12 +-
 .../groupby_ppr_multi_distinct.q.out            |     8 +-
 .../clientpositive/groupby_sort_1_23.q.out      |    56 +-
 .../clientpositive/groupby_sort_skew_1_23.q.out |    56 +-
 .../test/results/clientpositive/having2.q.out   |   353 +
 .../clientpositive/infer_const_type.q.out       |     7 +-
 .../clientpositive/input_testxpath2.q.out       |     2 +-
 .../clientpositive/input_testxpath4.q.out       |     2 +-
 .../clientpositive/insertoverwrite_bucket.q.out |   104 +
 ql/src/test/results/clientpositive/join32.q.out |     2 +-
 .../clientpositive/join32_lessSize.q.out        |     6 +-
 ql/src/test/results/clientpositive/join33.q.out |     2 +-
 .../join_cond_pushdown_unqual4.q.out            |     2 +-
 .../test/results/clientpositive/keyword_2.q.out |    51 +
 .../test/results/clientpositive/lineage2.q.out  |  2296 +-
 .../test/results/clientpositive/lineage3.q.out  |  2290 +-
 .../list_bucket_query_oneskew_3.q.out           |     6 +-
 .../clientpositive/load_dyn_part14_win.q.out    |   167 +-
 .../results/clientpositive/load_orc_part.q.out  |    18 +
 .../clientpositive/macro_duplicate.q.out        |    56 +
 .../clientpositive/multi_column_in.q.out        |   410 +
 .../results/clientpositive/multi_insert.q.out   |     8 +-
 .../clientpositive/multi_insert_gby.q.out       |     2 +-
 .../multi_insert_lateral_view.q.out             |     4 +-
 ...i_insert_move_tasks_share_dependencies.q.out |   360 +-
 .../test/results/clientpositive/null_cast.q.out |     6 +-
 .../results/clientpositive/orc_file_dump.q.out  |   447 +
 .../clientpositive/orc_predicate_pushdown.q.out |    36 +-
 .../clientpositive/parquet_ppd_boolean.q.out    |   200 +
 .../clientpositive/parquet_ppd_char.q.out       |   220 +
 .../clientpositive/parquet_ppd_date.q.out       |   301 +
 .../clientpositive/parquet_ppd_decimal.q.out    |   490 +
 .../clientpositive/parquet_ppd_partition.q.out  |    47 +
 .../clientpositive/parquet_ppd_timestamp.q.out  |   292 +
 .../clientpositive/parquet_ppd_varchar.q.out    |   220 +
 .../parquet_predicate_pushdown.q.out            |  1270 +
 .../results/clientpositive/pointlookup.q.out    |   198 +
 .../results/clientpositive/pointlookup2.q.out   |  1647 +
 .../results/clientpositive/pointlookup3.q.out   |  1394 +
 .../results/clientpositive/ppd_gby_join.q.out   |     4 +-
 .../test/results/clientpositive/ppd_join.q.out  |     4 +-
 .../test/results/clientpositive/ppd_join2.q.out |    22 +-
 .../test/results/clientpositive/ppd_join3.q.out |    52 +-
 .../clientpositive/ppd_outer_join4.q.out        |     2 +-
 ql/src/test/results/clientpositive/ptf.q.out    |    27 +-
 .../results/clientpositive/ptfgroupbyjoin.q.out |   519 +
 .../clientpositive/rand_partitionpruner3.q.out  |    12 +-
 .../clientpositive/selectDistinctStar.q.out     |     8 +-
 .../clientpositive/select_unquote_not.q.out     |     8 +-
 .../results/clientpositive/show_functions.q.out |     3 +
 .../clientpositive/smb_join_partition_key.q.out |   128 +
 .../clientpositive/spark/auto_join18.q.out      |    24 +-
 .../clientpositive/spark/auto_join30.q.out      |    51 +-
 .../clientpositive/spark/auto_join32.q.out      |    24 +-
 .../spark/auto_smb_mapjoin_14.q.out             |    30 +-
 .../spark/auto_sortmerge_join_10.q.out          |    23 +-
 .../results/clientpositive/spark/bucket2.q.out  |     3 -
 .../results/clientpositive/spark/bucket3.q.out  |     3 -
 .../results/clientpositive/spark/bucket4.q.out  |     3 -
 .../spark/column_access_stats.q.out             |     4 -
 .../spark/constprog_partitioner.q.out           |    30 +-
 .../spark/dynamic_rdd_cache.q.out               |  1073 +
 .../spark/filter_join_breaktask.q.out           |    12 +-
 .../clientpositive/spark/groupby10.q.out        |    32 +-
 .../clientpositive/spark/groupby1_map.q.out     |   412 +
 .../spark/groupby1_map_nomap.q.out              |   412 +
 .../spark/groupby1_map_skew.q.out               |   427 +
 .../clientpositive/spark/groupby1_noskew.q.out  |   406 +
 .../clientpositive/spark/groupby2_map.q.out     |   118 +
 .../spark/groupby2_map_multi_distinct.q.out     |   232 +
 .../spark/groupby2_map_skew.q.out               |   129 +
 .../clientpositive/spark/groupby2_noskew.q.out  |   111 +
 .../spark/groupby2_noskew_multi_distinct.q.out  |   114 +
 .../clientpositive/spark/groupby4_map.q.out     |    93 +
 .../spark/groupby4_map_skew.q.out               |    93 +
 .../clientpositive/spark/groupby4_noskew.q.out  |   104 +
 .../results/clientpositive/spark/groupby5.q.out |   433 +
 .../clientpositive/spark/groupby5_map.q.out     |    95 +
 .../spark/groupby5_map_skew.q.out               |    95 +
 .../clientpositive/spark/groupby5_noskew.q.out  |   418 +
 .../results/clientpositive/spark/groupby6.q.out |   117 +
 .../clientpositive/spark/groupby6_map.q.out     |   109 +
 .../spark/groupby6_map_skew.q.out               |   122 +
 .../clientpositive/spark/groupby6_noskew.q.out  |   104 +
 .../clientpositive/spark/groupby7_map.q.out     |    23 +-
 .../spark/groupby7_map_skew.q.out               |    38 +-
 .../clientpositive/spark/groupby7_noskew.q.out  |    17 +-
 .../groupby7_noskew_multi_single_reducer.q.out  |    18 +-
 .../results/clientpositive/spark/groupby8.q.out |    62 +-
 .../spark/groupby8_map_skew.q.out               |    37 +-
 .../spark/groupby_grouping_id2.q.out            |   234 +
 .../spark/groupby_multi_single_reducer2.q.out   |     2 +-
 .../spark/groupby_multi_single_reducer3.q.out   |    12 +-
 .../clientpositive/spark/groupby_position.q.out |    37 +-
 .../spark/groupby_ppr_multi_distinct.q.out      |   350 +
 .../spark/groupby_resolution.q.out              |   796 +
 .../spark/groupby_sort_1_23.q.out               |    90 +-
 .../spark/groupby_sort_skew_1_23.q.out          |    90 +-
 .../clientpositive/spark/insert_into3.q.out     |    33 +-
 .../results/clientpositive/spark/join18.q.out   |    24 +-
 .../results/clientpositive/spark/join22.q.out   |    19 +-
 .../results/clientpositive/spark/join32.q.out   |     2 +-
 .../clientpositive/spark/join32_lessSize.q.out  |     6 +-
 .../results/clientpositive/spark/join33.q.out   |     2 +-
 .../spark/join_cond_pushdown_unqual4.q.out      |     2 +-
 .../spark/limit_partition_metadataonly.q.out    |     2 -
 .../clientpositive/spark/limit_pushdown.q.out   |    31 +-
 .../spark/list_bucket_dml_2.q.java1.7.out       |     3 -
 .../clientpositive/spark/load_dyn_part14.q.out  |    30 +-
 .../clientpositive/spark/multi_insert.q.out     |     8 +-
 .../clientpositive/spark/multi_insert_gby.q.out |     2 +-
 .../spark/multi_insert_lateral_view.q.out       |     4 +-
 ...i_insert_move_tasks_share_dependencies.q.out |   536 +-
 .../clientpositive/spark/nullgroup.q.out        |   265 +
 .../clientpositive/spark/nullgroup2.q.out       |   300 +
 .../clientpositive/spark/nullgroup4.q.out       |   292 +
 .../spark/nullgroup4_multi_distinct.q.out       |   133 +
 .../spark/optimize_nullscan.q.out               |     3 -
 .../test/results/clientpositive/spark/pcr.q.out |     6 -
 .../clientpositive/spark/ppd_gby_join.q.out     |     4 +-
 .../results/clientpositive/spark/ppd_join.q.out |     4 +-
 .../clientpositive/spark/ppd_join2.q.out        |    22 +-
 .../clientpositive/spark/ppd_join3.q.out        |    52 +-
 .../clientpositive/spark/ppd_outer_join4.q.out  |     2 +-
 .../test/results/clientpositive/spark/ptf.q.out |    17 +-
 .../results/clientpositive/spark/sample3.q.out  |     3 -
 .../results/clientpositive/spark/sample9.q.out  |     3 -
 .../clientpositive/spark/skewjoinopt11.q.out    |    60 +-
 .../clientpositive/spark/skewjoinopt9.q.out     |    20 +-
 .../clientpositive/spark/smb_mapjoin_11.q.out   |     6 -
 .../spark/spark_dynamic_partition_pruning.q.out |  5573 +++
 .../spark_dynamic_partition_pruning_2.q.out     |  1015 +
 ...k_vectorized_dynamic_partition_pruning.q.out |  5822 +++
 .../clientpositive/spark/subquery_exists.q.out  |    12 +-
 .../clientpositive/spark/subquery_in.q.out      |    36 +-
 .../spark/subquery_multiinsert.q.java1.7.out    |    16 +-
 .../clientpositive/spark/temp_table_gb1.q.out   |    67 +
 .../clientpositive/spark/udaf_collect_set.q.out |   212 +
 .../clientpositive/spark/udf_example_add.q.out  |     3 -
 .../clientpositive/spark/udf_in_file.q.out      |     3 -
 .../results/clientpositive/spark/udf_max.q.out  |    62 +
 .../results/clientpositive/spark/udf_min.q.out  |    62 +
 .../clientpositive/spark/udf_percentile.q.out   |   450 +
 .../results/clientpositive/spark/union10.q.out  |    36 +-
 .../results/clientpositive/spark/union11.q.out  |    38 +-
 .../results/clientpositive/spark/union15.q.out  |    23 +-
 .../results/clientpositive/spark/union16.q.out  |   450 +-
 .../results/clientpositive/spark/union2.q.out   |    36 +-
 .../results/clientpositive/spark/union20.q.out  |    18 +-
 .../results/clientpositive/spark/union25.q.out  |    21 +-
 .../results/clientpositive/spark/union28.q.out  |    21 +-
 .../results/clientpositive/spark/union3.q.out   |    45 +-
 .../results/clientpositive/spark/union30.q.out  |    21 +-
 .../results/clientpositive/spark/union4.q.out   |    18 +-
 .../results/clientpositive/spark/union5.q.out   |    20 +-
 .../results/clientpositive/spark/union9.q.out   |    54 +-
 .../clientpositive/spark/union_remove_1.q.out   |    23 +-
 .../clientpositive/spark/union_remove_15.q.out  |    23 +-
 .../clientpositive/spark/union_remove_16.q.out  |    23 +-
 .../clientpositive/spark/union_remove_18.q.out  |    23 +-
 .../clientpositive/spark/union_remove_19.q.out  |    75 +-
 .../clientpositive/spark/union_remove_20.q.out  |    23 +-
 .../clientpositive/spark/union_remove_21.q.out  |    21 +-
 .../clientpositive/spark/union_remove_22.q.out  |    46 +-
 .../clientpositive/spark/union_remove_24.q.out  |    23 +-
 .../clientpositive/spark/union_remove_25.q.out  |    59 +-
 .../clientpositive/spark/union_remove_4.q.out   |    23 +-
 .../clientpositive/spark/union_remove_6.q.out   |    23 +-
 .../spark/union_remove_6_subq.q.out             |    84 +-
 .../clientpositive/spark/union_remove_7.q.out   |    23 +-
 .../clientpositive/spark/union_top_level.q.out  |    59 +-
 .../clientpositive/spark/union_view.q.out       |    33 +-
 .../spark/vector_cast_constant.q.java1.7.out    |    41 +-
 .../spark/vector_count_distinct.q.out           |    31 +-
 .../spark/vector_decimal_mapjoin.q.out          |     1 +
 .../clientpositive/spark/vector_elt.q.out       |     7 -
 .../spark/vector_left_outer_join.q.out          |     2 +
 .../spark/vector_mapjoin_reduce.q.out           |    23 +-
 .../spark/vector_string_concat.q.out            |     3 -
 .../clientpositive/spark/vectorization_0.q.out  |     2 +-
 .../clientpositive/spark/vectorization_13.q.out |     4 +-
 .../clientpositive/spark/vectorization_15.q.out |     2 +-
 .../clientpositive/spark/vectorization_17.q.out |    12 +-
 .../spark/vectorization_decimal_date.q.out      |     4 -
 .../spark/vectorization_div0.q.out              |     3 -
 .../spark/vectorization_short_regress.q.out     |    40 +-
 .../clientpositive/spark/vectorized_case.q.out  |     5 +-
 .../spark/vectorized_mapjoin.q.out              |     1 +
 .../spark/vectorized_math_funcs.q.out           |     3 -
 .../spark/vectorized_nested_mapjoin.q.out       |     2 +
 .../clientpositive/spark/vectorized_ptf.q.out   |    21 +-
 .../spark/vectorized_string_funcs.q.out         |     3 -
 .../results/clientpositive/stats_ppr_all.q.out  |   284 +
 .../test/results/clientpositive/structin.q.out  |   110 +
 .../clientpositive/subquery_exists.q.out        |    12 +-
 .../results/clientpositive/subquery_in.q.out    |    36 +-
 .../clientpositive/subquery_in_having.q.out     |    50 +-
 .../subquery_multiinsert.q.java1.7.out          |    16 +-
 .../subquery_unqualcolumnrefs.q.out             |    26 +-
 .../results/clientpositive/subquery_views.q.out |    40 +-
 .../clientpositive/tez/explainuser_1.q.out      |   346 +-
 .../clientpositive/tez/explainuser_2.q.out      |    12 +-
 .../tez/filter_join_breaktask.q.out             |    12 +-
 .../clientpositive/tez/orc_ppd_basic.q.out      |   701 +
 .../test/results/clientpositive/tez/ptf.q.out   |    15 +-
 .../clientpositive/tez/selectDistinctStar.q.out |     8 +-
 .../clientpositive/tez/subquery_exists.q.out    |    12 +-
 .../clientpositive/tez/subquery_in.q.out        |    36 +-
 .../tez/tez_dynpart_hashjoin_1.q.out            |   791 +
 .../tez/tez_dynpart_hashjoin_2.q.out            |   564 +
 .../tez/tez_vector_dynpart_hashjoin_1.q.out     |   804 +
 .../tez/tez_vector_dynpart_hashjoin_2.q.out     |   570 +
 .../results/clientpositive/tez/union2.q.out     |    28 +-
 .../results/clientpositive/tez/union9.q.out     |    40 +-
 .../clientpositive/tez/vector_acid3.q.out       |    31 +
 .../tez/vector_cast_constant.q.java1.7.out      |    21 +-
 .../tez/vector_char_mapjoin1.q.out              |     1 +
 .../clientpositive/tez/vector_decimal_udf.q.out |    24 +-
 .../clientpositive/tez/vector_inner_join.q.out  |    14 +-
 .../tez/vector_mapjoin_reduce.q.out             |    24 +-
 .../tez/vector_mr_diff_schema_alias.q.out       |     2 +-
 .../tez/vector_null_projection.q.out            |     4 +
 .../tez/vector_varchar_mapjoin1.q.out           |     1 +
 .../clientpositive/tez/vectorization_0.q.out    |     2 +-
 .../clientpositive/tez/vectorization_13.q.out   |     4 +-
 .../clientpositive/tez/vectorization_15.q.out   |     2 +-
 .../clientpositive/tez/vectorization_17.q.out   |    12 +-
 .../clientpositive/tez/vectorization_7.q.out    |     4 +-
 .../clientpositive/tez/vectorization_8.q.out    |     4 +-
 .../tez/vectorization_short_regress.q.out       |    40 +-
 .../clientpositive/tez/vectorized_case.q.out    |     2 +-
 .../clientpositive/tez/vectorized_casts.q.out   |    99 +-
 .../clientpositive/tez/vectorized_ptf.q.out     |    19 +-
 .../clientpositive/udf_aes_decrypt.q.out        |    79 +
 .../clientpositive/udf_aes_encrypt.q.out        |    79 +
 .../results/clientpositive/udf_bround.q.out     |   119 +
 .../clientpositive/udf_from_utc_timestamp.q.out |    66 +-
 .../results/clientpositive/udf_inline.q.out     |     8 +-
 .../clientpositive/udf_isnull_isnotnull.q.out   |     2 +-
 ql/src/test/results/clientpositive/udf_or.q.out |     4 +-
 .../results/clientpositive/udf_percentile.q.out |   104 +-
 .../test/results/clientpositive/udf_size.q.out  |     2 +-
 .../results/clientpositive/udf_struct.q.out     |     2 +-
 .../clientpositive/udf_to_utc_timestamp.q.out   |    66 +-
 .../test/results/clientpositive/udf_union.q.out |     2 +-
 .../test/results/clientpositive/union16.q.out   |   354 +-
 ql/src/test/results/clientpositive/union2.q.out |    32 +-
 ql/src/test/results/clientpositive/union9.q.out |    46 +-
 .../clientpositive/union_remove_6_subq.q.out    |    34 +-
 .../results/clientpositive/union_view.q.out     |    24 +
 .../clientpositive/unionall_unbalancedppd.q.out |   657 +
 .../clientpositive/varchar_udf1.q.java1.7.out   |    12 +-
 .../results/clientpositive/vector_acid3.q.out   |    31 +
 .../vector_aggregate_without_gby.q.out          |    96 +
 .../results/clientpositive/vector_bround.q.out  |    86 +
 .../vector_cast_constant.q.java1.7.out          |    32 +-
 .../clientpositive/vector_char_mapjoin1.q.out   |     1 +
 .../clientpositive/vector_decimal_udf.q.out     |    24 +-
 .../clientpositive/vector_inner_join.q.out      |    12 +-
 .../clientpositive/vector_mapjoin_reduce.q.out  |    26 +-
 .../vector_mr_diff_schema_alias.q.out           |     2 +-
 .../clientpositive/vector_null_projection.q.out |     4 +
 .../vector_varchar_mapjoin1.q.out               |     1 +
 .../clientpositive/vectorization_0.q.out        |     2 +-
 .../clientpositive/vectorization_13.q.out       |     4 +-
 .../clientpositive/vectorization_15.q.out       |     2 +-
 .../clientpositive/vectorization_17.q.out       |    12 +-
 .../clientpositive/vectorization_7.q.out        |     4 +-
 .../clientpositive/vectorization_8.q.out        |     4 +-
 .../vectorization_short_regress.q.out           |    40 +-
 .../clientpositive/vectorized_case.q.out        |     2 +-
 .../clientpositive/vectorized_casts.q.out       |    66 +-
 .../results/clientpositive/vectorized_ptf.q.out |    67 +-
 .../gen/thrift/gen-cpp/complex_constants.cpp    |     2 +-
 .../src/gen/thrift/gen-cpp/complex_constants.h  |     2 +-
 serde/src/gen/thrift/gen-cpp/complex_types.cpp  |   442 +-
 serde/src/gen/thrift/gen-cpp/complex_types.h    |   174 +-
 .../gen/thrift/gen-cpp/megastruct_constants.cpp |     2 +-
 .../gen/thrift/gen-cpp/megastruct_constants.h   |     2 +-
 .../src/gen/thrift/gen-cpp/megastruct_types.cpp |   585 +-
 serde/src/gen/thrift/gen-cpp/megastruct_types.h |   175 +-
 .../src/gen/thrift/gen-cpp/serde_constants.cpp  |     2 +-
 serde/src/gen/thrift/gen-cpp/serde_constants.h  |     2 +-
 serde/src/gen/thrift/gen-cpp/serde_types.cpp    |     5 +-
 serde/src/gen/thrift/gen-cpp/serde_types.h      |     5 +-
 .../gen/thrift/gen-cpp/testthrift_constants.cpp |     2 +-
 .../gen/thrift/gen-cpp/testthrift_constants.h   |     2 +-
 .../src/gen/thrift/gen-cpp/testthrift_types.cpp |    95 +-
 serde/src/gen/thrift/gen-cpp/testthrift_types.h |    45 +-
 .../hadoop/hive/serde/serdeConstants.java       |     7 +-
 .../hadoop/hive/serde/test/InnerStruct.java     |    24 +-
 .../hadoop/hive/serde/test/ThriftTestObj.java   |    62 +-
 .../hadoop/hive/serde2/thrift/test/Complex.java |   279 +-
 .../hive/serde2/thrift/test/IntString.java      |    40 +-
 .../hive/serde2/thrift/test/MegaStruct.java     |   521 +-
 .../hive/serde2/thrift/test/MiniStruct.java     |    38 +-
 .../hadoop/hive/serde2/thrift/test/MyEnum.java  |     2 +-
 .../hive/serde2/thrift/test/PropValueUnion.java |    60 +-
 .../hive/serde2/thrift/test/SetIntString.java   |    54 +-
 serde/src/gen/thrift/gen-php/Types.php          |    15 +-
 .../org/apache/hadoop/hive/serde/Types.php      |   373 +-
 .../src/gen/thrift/gen-py/complex/constants.py  |     2 +-
 serde/src/gen/thrift/gen-py/complex/ttypes.py   |    50 +-
 .../gen/thrift/gen-py/megastruct/constants.py   |     2 +-
 .../src/gen/thrift/gen-py/megastruct/ttypes.py  |    44 +-
 .../org_apache_hadoop_hive_serde/constants.py   |     2 +-
 .../org_apache_hadoop_hive_serde/ttypes.py      |     2 +-
 .../gen/thrift/gen-py/testthrift/constants.py   |     2 +-
 .../src/gen/thrift/gen-py/testthrift/ttypes.py  |    14 +-
 .../src/gen/thrift/gen-rb/complex_constants.rb  |     2 +-
 serde/src/gen/thrift/gen-rb/complex_types.rb    |     2 +-
 .../gen/thrift/gen-rb/megastruct_constants.rb   |     2 +-
 serde/src/gen/thrift/gen-rb/megastruct_types.rb |     2 +-
 serde/src/gen/thrift/gen-rb/serde_constants.rb  |     2 +-
 serde/src/gen/thrift/gen-rb/serde_types.rb      |     2 +-
 .../gen/thrift/gen-rb/testthrift_constants.rb   |     2 +-
 serde/src/gen/thrift/gen-rb/testthrift_types.rb |     2 +-
 .../hadoop/hive/ql/io/sarg/ExpressionTree.java  |   157 -
 .../hadoop/hive/ql/io/sarg/PredicateLeaf.java   |    87 -
 .../hadoop/hive/ql/io/sarg/SearchArgument.java  |   278 -
 .../apache/hadoop/hive/serde2/SerDeUtils.java   |    14 +-
 .../apache/hadoop/hive/serde2/WriteBuffers.java |     2 +-
 .../serde2/avro/AvroLazyObjectInspector.java    |    19 +-
 .../hadoop/hive/serde2/avro/InstanceCache.java  |    26 +-
 .../hadoop/hive/serde2/io/DateWritable.java     |    14 -
 .../hive/serde2/io/HiveDecimalWritable.java     |   185 -
 .../hive/serde2/lazy/LazyHiveDecimal.java       |     3 +-
 .../lazy/fast/LazySimpleDeserializeRead.java    |    16 +-
 .../hive/serde2/lazybinary/LazyBinaryDate.java  |     4 +-
 .../lazybinary/LazyBinaryHiveDecimal.java       |     2 +-
 .../hive/serde2/lazybinary/LazyBinarySerDe.java |    37 +-
 .../fast/LazyBinaryDeserializeRead.java         |     6 +-
 .../fast/LazyBinarySerializeWrite.java          |     5 +-
 .../ObjectInspectorConverters.java              |    31 +-
 .../objectinspector/ObjectInspectorFactory.java |    68 +-
 .../objectinspector/ObjectInspectorUtils.java   |    19 +
 .../ReflectionStructObjectInspector.java        |    60 +-
 .../SettableUnionObjectInspector.java           |     4 +-
 .../StandardConstantStructObjectInspector.java  |    51 +
 .../StandardStructObjectInspector.java          |     7 +-
 .../StandardUnionObjectInspector.java           |     4 +-
 .../ThriftUnionObjectInspector.java             |    44 +-
 .../hive/serde2/typeinfo/HiveDecimalUtils.java  |    35 +-
 .../hive/serde2/typeinfo/TypeInfoUtils.java     |     2 +-
 .../avro/TestAvroLazyObjectInspector.java       |    59 +
 .../hive/serde2/avro/TestInstanceCache.java     |    40 +-
 .../TestObjectInspectorConverters.java          |    89 +-
 .../TestReflectionObjectInspectors.java         |    71 +-
 .../TestThriftObjectInspectors.java             |    10 +-
 service/src/gen/thrift/gen-cpp/TCLIService.cpp  |   458 +-
 service/src/gen/thrift/gen-cpp/TCLIService.h    |   821 +-
 .../thrift/gen-cpp/TCLIService_constants.cpp    |     2 +-
 .../gen/thrift/gen-cpp/TCLIService_constants.h  |     2 +-
 .../gen/thrift/gen-cpp/TCLIService_types.cpp    |  3250 +-
 .../src/gen/thrift/gen-cpp/TCLIService_types.h  |  1482 +-
 service/src/gen/thrift/gen-cpp/ThriftHive.cpp   |   286 +-
 service/src/gen/thrift/gen-cpp/ThriftHive.h     |   389 +-
 .../thrift/gen-cpp/hive_service_constants.cpp   |     2 +-
 .../gen/thrift/gen-cpp/hive_service_constants.h |     2 +-
 .../gen/thrift/gen-cpp/hive_service_types.cpp   |   110 +-
 .../src/gen/thrift/gen-cpp/hive_service_types.h |    75 +-
 .../hadoop/hive/service/HiveClusterStatus.java  |    68 +-
 .../hive/service/HiveServerException.java       |    40 +-
 .../hadoop/hive/service/JobTrackerState.java    |     2 +-
 .../apache/hadoop/hive/service/ThriftHive.java  |   914 +-
 .../service/cli/thrift/TArrayTypeEntry.java     |    24 +-
 .../hive/service/cli/thrift/TBinaryColumn.java  |    64 +-
 .../hive/service/cli/thrift/TBoolColumn.java    |    62 +-
 .../hive/service/cli/thrift/TBoolValue.java     |    26 +-
 .../hive/service/cli/thrift/TByteColumn.java    |    62 +-
 .../hive/service/cli/thrift/TByteValue.java     |    26 +-
 .../hive/service/cli/thrift/TCLIService.java    |  1734 +-
 .../cli/thrift/TCLIServiceConstants.java        |     7 +-
 .../cli/thrift/TCancelDelegationTokenReq.java   |    32 +-
 .../cli/thrift/TCancelDelegationTokenResp.java  |    24 +-
 .../service/cli/thrift/TCancelOperationReq.java |    24 +-
 .../cli/thrift/TCancelOperationResp.java        |    24 +-
 .../service/cli/thrift/TCloseOperationReq.java  |    24 +-
 .../service/cli/thrift/TCloseOperationResp.java |    24 +-
 .../service/cli/thrift/TCloseSessionReq.java    |    24 +-
 .../service/cli/thrift/TCloseSessionResp.java   |    24 +-
 .../apache/hive/service/cli/thrift/TColumn.java |    20 +-
 .../hive/service/cli/thrift/TColumnDesc.java    |    50 +-
 .../hive/service/cli/thrift/TColumnValue.java   |    20 +-
 .../hive/service/cli/thrift/TDoubleColumn.java  |    62 +-
 .../hive/service/cli/thrift/TDoubleValue.java   |    26 +-
 .../cli/thrift/TExecuteStatementReq.java        |    87 +-
 .../cli/thrift/TExecuteStatementResp.java       |    34 +-
 .../service/cli/thrift/TFetchOrientation.java   |     2 +-
 .../service/cli/thrift/TFetchResultsReq.java    |    54 +-
 .../service/cli/thrift/TFetchResultsResp.java   |    42 +-
 .../service/cli/thrift/TGetCatalogsReq.java     |    24 +-
 .../service/cli/thrift/TGetCatalogsResp.java    |    34 +-
 .../hive/service/cli/thrift/TGetColumnsReq.java |    58 +-
 .../service/cli/thrift/TGetColumnsResp.java     |    34 +-
 .../cli/thrift/TGetDelegationTokenReq.java      |    40 +-
 .../cli/thrift/TGetDelegationTokenResp.java     |    34 +-
 .../service/cli/thrift/TGetFunctionsReq.java    |    50 +-
 .../service/cli/thrift/TGetFunctionsResp.java   |    34 +-
 .../hive/service/cli/thrift/TGetInfoReq.java    |    36 +-
 .../hive/service/cli/thrift/TGetInfoResp.java   |    32 +-
 .../hive/service/cli/thrift/TGetInfoType.java   |     2 +-
 .../hive/service/cli/thrift/TGetInfoValue.java  |    20 +-
 .../cli/thrift/TGetOperationStatusReq.java      |    24 +-
 .../cli/thrift/TGetOperationStatusResp.java     |    62 +-
 .../cli/thrift/TGetResultSetMetadataReq.java    |    24 +-
 .../cli/thrift/TGetResultSetMetadataResp.java   |    34 +-
 .../hive/service/cli/thrift/TGetSchemasReq.java |    42 +-
 .../service/cli/thrift/TGetSchemasResp.java     |    34 +-
 .../service/cli/thrift/TGetTableTypesReq.java   |    24 +-
 .../service/cli/thrift/TGetTableTypesResp.java  |    34 +-
 .../hive/service/cli/thrift/TGetTablesReq.java  |    79 +-
 .../hive/service/cli/thrift/TGetTablesResp.java |    34 +-
 .../service/cli/thrift/TGetTypeInfoReq.java     |    24 +-
 .../service/cli/thrift/TGetTypeInfoResp.java    |    34 +-
 .../service/cli/thrift/THandleIdentifier.java   |    50 +-
 .../hive/service/cli/thrift/TI16Column.java     |    62 +-
 .../hive/service/cli/thrift/TI16Value.java      |    26 +-
 .../hive/service/cli/thrift/TI32Column.java     |    62 +-
 .../hive/service/cli/thrift/TI32Value.java      |    26 +-
 .../hive/service/cli/thrift/TI64Column.java     |    62 +-
 .../hive/service/cli/thrift/TI64Value.java      |    26 +-
 .../hive/service/cli/thrift/TMapTypeEntry.java  |    32 +-
 .../service/cli/thrift/TOpenSessionReq.java     |    91 +-
 .../service/cli/thrift/TOpenSessionResp.java    |    91 +-
 .../service/cli/thrift/TOperationHandle.java    |    54 +-
 .../service/cli/thrift/TOperationState.java     |     2 +-
 .../hive/service/cli/thrift/TOperationType.java |     2 +-
 .../service/cli/thrift/TPrimitiveTypeEntry.java |    38 +-
 .../service/cli/thrift/TProtocolVersion.java    |     2 +-
 .../cli/thrift/TRenewDelegationTokenReq.java    |    32 +-
 .../cli/thrift/TRenewDelegationTokenResp.java   |    24 +-
 .../apache/hive/service/cli/thrift/TRow.java    |    46 +-
 .../apache/hive/service/cli/thrift/TRowSet.java |    86 +-
 .../hive/service/cli/thrift/TSessionHandle.java |    24 +-
 .../apache/hive/service/cli/thrift/TStatus.java |    83 +-
 .../hive/service/cli/thrift/TStatusCode.java    |     2 +-
 .../hive/service/cli/thrift/TStringColumn.java  |    62 +-
 .../hive/service/cli/thrift/TStringValue.java   |    26 +-
 .../service/cli/thrift/TStructTypeEntry.java    |    50 +-
 .../hive/service/cli/thrift/TTableSchema.java   |    46 +-
 .../hive/service/cli/thrift/TTypeDesc.java      |    46 +-
 .../hive/service/cli/thrift/TTypeEntry.java     |    20 +-
 .../apache/hive/service/cli/thrift/TTypeId.java |     2 +-
 .../service/cli/thrift/TTypeQualifierValue.java |    20 +-
 .../service/cli/thrift/TTypeQualifiers.java     |    54 +-
 .../service/cli/thrift/TUnionTypeEntry.java     |    50 +-
 .../cli/thrift/TUserDefinedTypeEntry.java       |    24 +-
 service/src/gen/thrift/gen-php/TCLIService.php  |   269 +-
 service/src/gen/thrift/gen-php/ThriftHive.php   |   125 +-
 service/src/gen/thrift/gen-php/Types.php        |    30 +-
 .../gen-py/TCLIService/TCLIService-remote       |   102 +-
 .../thrift/gen-py/TCLIService/TCLIService.py    |   439 +-
 .../gen/thrift/gen-py/TCLIService/constants.py  |     2 +-
 .../src/gen/thrift/gen-py/TCLIService/ttypes.py |   478 +-
 .../gen-py/hive_service/ThriftHive-remote       |  1021 +-
 .../thrift/gen-py/hive_service/ThriftHive.py    |   266 +-
 .../gen/thrift/gen-py/hive_service/constants.py |     2 +-
 .../gen/thrift/gen-py/hive_service/ttypes.py    |    19 +-
 .../gen/thrift/gen-rb/hive_service_constants.rb |     2 +-
 .../src/gen/thrift/gen-rb/hive_service_types.rb |     2 +-
 .../src/gen/thrift/gen-rb/t_c_l_i_service.rb    |     2 +-
 .../thrift/gen-rb/t_c_l_i_service_constants.rb  |     2 +-
 .../gen/thrift/gen-rb/t_c_l_i_service_types.rb  |     2 +-
 service/src/gen/thrift/gen-rb/thrift_hive.rb    |     2 +-
 .../hive/service/cli/CLIServiceUtils.java       |     7 -
 .../cli/operation/GetColumnsOperation.java      |    10 +-
 .../cli/operation/GetTablesOperation.java       |     7 +-
 .../cli/operation/LogDivertAppender.java        |   223 +-
 .../service/cli/operation/OperationManager.java |    17 +-
 .../service/cli/session/SessionManager.java     |    42 +-
 .../apache/hive/service/server/HiveServer2.java |    74 +-
 .../session/TestPluggableHiveSessionImpl.java   |    55 +
 shims/0.20S/pom.xml                             |     8 +-
 .../hadoop/hive/shims/Hadoop20SShims.java       |    46 +-
 shims/0.23/pom.xml                              |    21 +-
 .../apache/hadoop/hive/shims/Hadoop23Shims.java |   145 +-
 shims/common/pom.xml                            |    17 +-
 .../apache/hadoop/hive/shims/HadoopShims.java   |    37 +
 .../hadoop/hive/shims/HadoopShimsSecure.java    |    32 +
 .../hadoop/hive/shims/HiveEventCounter.java     |   102 -
 spark-client/pom.xml                            |     5 +
 .../hive/spark/client/SparkClientImpl.java      |    24 +-
 .../hive/spark/client/SparkClientUtilities.java |    13 +-
 .../hive/spark/client/TestSparkClient.java      |     4 +-
 .../src/test/resources/log4j.properties         |    23 -
 spark-client/src/test/resources/log4j2.xml      |    39 +
 storage-api/pom.xml                             |    78 +
 .../hadoop/hive/common/type/HiveDecimal.java    |   313 +
 .../hive/ql/exec/vector/BytesColumnVector.java  |   322 +
 .../hive/ql/exec/vector/ColumnVector.java       |   173 +
 .../ql/exec/vector/DecimalColumnVector.java     |   106 +
 .../hive/ql/exec/vector/DoubleColumnVector.java |   143 +
 .../hive/ql/exec/vector/LongColumnVector.java   |   189 +
 .../hive/ql/exec/vector/VectorizedRowBatch.java |   186 +
 .../hadoop/hive/ql/io/sarg/ExpressionTree.java  |   156 +
 .../hadoop/hive/ql/io/sarg/PredicateLeaf.java   |   103 +
 .../hadoop/hive/ql/io/sarg/SearchArgument.java  |   287 +
 .../hive/ql/io/sarg/SearchArgumentFactory.java  |    28 +
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |   687 +
 .../hive/serde2/io/HiveDecimalWritable.java     |   174 +
 testutils/ptest2/pom.xml                        |    32 +-
 .../ptest2/src/main/resources/log4j.properties  |    37 -
 testutils/ptest2/src/main/resources/log4j2.xml  |    80 +
 1291 files changed, 156107 insertions(+), 50140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --cc beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index b6f244b,3388391..8e1d11b
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@@ -79,10 -78,9 +79,11 @@@ class BeeLineOpts implements Completer 
    int timeout = -1;
    private String isolation = DEFAULT_ISOLATION_LEVEL;
    private String outputFormat = "table";
 +  // This configuration is used only for client side configuration.
 +  private HiveConf conf;
    private boolean trimScripts = true;
    private boolean allowMultiLineCommand = true;
+   private boolean showConnectedUrl = false;
  
    //This can be set for old behavior of nulls printed as empty strings
    private boolean nullEmptyString = false;

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/jdbc/src/java/org/apache/hive/jdbc/Utils.java
----------------------------------------------------------------------
diff --cc jdbc/src/java/org/apache/hive/jdbc/Utils.java
index 0e4693b,d8368a4..e4df7f4
--- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
@@@ -37,8 -36,8 +36,8 @@@ import org.apache.hive.service.cli.thri
  import org.apache.http.client.CookieStore;
  import org.apache.http.cookie.Cookie;
  
 -class Utils {
 +public class Utils {
-   public static final Log LOG = LogFactory.getLog(Utils.class.getName());
+   static final Log LOG = LogFactory.getLog(Utils.class.getName());
    /**
      * The required prefix for the connection URL.
      */

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
diff --cc ql/src/java/org/apache/hadoop/hive/ql/Driver.java
index a381f73,4030075..9ee6023
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@@ -388,12 -387,10 +388,15 @@@ public class Driver implements CommandP
      SessionState.get().setupQueryCurrentTimestamp();
  
      try {
+       // Initialize the transaction manager.  This must be done before analyze is called.
+       SessionState.get().initTxnMgr(conf);
 -
 -      command = new VariableSubstitution().substitute(conf, command);
++      
 +      command = new VariableSubstitution(new HiveVariableSource() {
 +        @Override
 +        public Map<String, String> getHiveVariable() {
 +          return SessionState.get().getHiveVariables();
 +        }
 +      }).substitute(conf, command);
        ctx = new Context(conf);
        ctx.setTryCount(getTryCount());
        ctx.setCmd(command);

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/fc53e5d7/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------


[32/33] hive git commit: HIVE-11958: Merge branch 'master' into beeline-cli

Posted by xu...@apache.org.
HIVE-11958: Merge branch 'master' into beeline-cli


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6b3e82d3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6b3e82d3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6b3e82d3

Branch: refs/heads/master
Commit: 6b3e82d39c159f11829007fbbeff2fdf1216bb78
Parents: 046c5eb 41a12cb
Author: Ferdinand Xu <ch...@intel.com>
Authored: Thu Sep 24 21:29:17 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 24 21:34:20 2015 -0400

----------------------------------------------------------------------
 NOTICE                                          |     3 +
 .../apache/hadoop/hive/ant/GenVectorCode.java   |    31 -
 .../apache/hadoop/hive/ant/QTestGenTask.java    |    11 +
 beeline/src/main/resources/beeline-log4j2.xml   |     5 +-
 bin/beeline                                     |     5 +
 bin/ext/hbaseimport.cmd                         |    35 +
 bin/ext/hbaseimport.sh                          |    27 +
 bin/ext/hbaseschematool.sh                      |    27 +
 bin/hive                                        |     2 +-
 .../apache/hadoop/hive/common/ObjectPair.java   |     5 +
 .../hadoop/hive/common/jsonexplain/tez/Op.java  |     8 +-
 .../hive/common/jsonexplain/tez/Stage.java      |    14 +-
 .../common/jsonexplain/tez/TezJsonParser.java   |    17 +-
 .../org/apache/hadoop/hive/conf/HiveConf.java   |   113 +-
 .../apache/hadoop/hive/ql/log/PerfLogger.java   |   196 +
 .../apache/hive/common/util/BloomFilter.java    |    20 +-
 common/src/main/resources/hive-log4j2.xml       |     5 +-
 .../test/resources/hive-exec-log4j2-test.xml    |     5 +-
 common/src/test/resources/hive-log4j2-test.xml  |     5 +-
 data/conf/hive-log4j2.xml                       |     5 +-
 data/conf/tez/hive-site.xml                     |    10 +
 data/files/dynpartdata1.txt                     |     5 +
 data/files/dynpartdata2.txt                     |     6 +
 .../HiveHBaseTableSnapshotInputFormat.java      |    21 +-
 .../queries/positive/hbase_handler_snapshot.q   |     4 +
 .../positive/hbase_handler_snapshot.q.out       |    22 +
 .../deployers/config/hive/hive-log4j2.xml       |     5 +-
 .../svr/src/main/config/webhcat-log4j2.xml      |     5 +-
 .../antlr4/org/apache/hive/hplsql/Hplsql.g4     |    70 +-
 .../main/java/org/apache/hive/hplsql/Cmp.java   |   314 +
 .../java/org/apache/hive/hplsql/Column.java     |    29 +-
 .../main/java/org/apache/hive/hplsql/Conn.java  |    21 +
 .../main/java/org/apache/hive/hplsql/Copy.java  |    50 +-
 .../main/java/org/apache/hive/hplsql/Exec.java  |    66 +-
 .../java/org/apache/hive/hplsql/Expression.java |    33 +-
 .../main/java/org/apache/hive/hplsql/File.java  |    18 +-
 .../main/java/org/apache/hive/hplsql/Meta.java  |    28 +-
 .../main/java/org/apache/hive/hplsql/Query.java |    18 +
 .../java/org/apache/hive/hplsql/Select.java     |    23 +-
 .../main/java/org/apache/hive/hplsql/Stmt.java  |     8 +-
 .../main/java/org/apache/hive/hplsql/Var.java   |   110 +-
 .../apache/hive/hplsql/functions/Function.java  |     6 +-
 .../hive/hplsql/functions/FunctionMisc.java     |   121 +
 .../org/apache/hive/hplsql/TestHplsqlLocal.java |    18 +
 .../apache/hive/hplsql/TestHplsqlOffline.java   |     5 +
 hplsql/src/test/queries/db/cmp_row_count.sql    |     4 +
 hplsql/src/test/queries/db/cmp_sum.sql          |     3 +
 hplsql/src/test/queries/db/copy_to_file.sql     |     2 +
 hplsql/src/test/queries/db/copy_to_hdfs.sql     |     2 +
 hplsql/src/test/queries/db/copy_to_table.sql    |     2 +
 hplsql/src/test/queries/db/part_count.sql       |    17 +
 hplsql/src/test/queries/db/part_count_by.sql    |     4 +
 hplsql/src/test/queries/db/schema.sql           |    32 +
 hplsql/src/test/queries/db/select_into.sql      |    20 +-
 hplsql/src/test/queries/db/select_into2.sql     |    17 +
 .../test/queries/local/create_procedure2.sql    |    16 +
 hplsql/src/test/queries/local/if2.sql           |     5 +
 hplsql/src/test/queries/local/include.sql       |     2 +
 hplsql/src/test/queries/local/include_file.sql  |     1 +
 hplsql/src/test/queries/local/mult_div.sql      |     8 +
 hplsql/src/test/queries/offline/select_db2.sql  |     5 +
 .../src/test/results/db/cmp_row_count.out.txt   |    12 +
 hplsql/src/test/results/db/cmp_sum.out.txt      |   320 +
 hplsql/src/test/results/db/copy_to_file.out.txt |     6 +
 hplsql/src/test/results/db/copy_to_hdfs.out.txt |     4 +
 .../src/test/results/db/copy_to_table.out.txt   |     2 +
 hplsql/src/test/results/db/part_count.out.txt   |    15 +
 .../src/test/results/db/part_count_by.out.txt   |    13 +
 hplsql/src/test/results/db/select_into.out.txt  |    58 +-
 hplsql/src/test/results/db/select_into2.out.txt |    19 +
 .../results/local/create_procedure2.out.txt     |    10 +
 hplsql/src/test/results/local/if2.out.txt       |     4 +
 hplsql/src/test/results/local/include.out.txt   |     8 +
 hplsql/src/test/results/local/mult_div.out.txt  |     7 +
 .../src/test/results/offline/select_db2.out.txt |     6 +
 .../benchmark/serde/LazySimpleSerDeBench.java   |   453 +
 .../vectorization/VectorizationBench.java       |    32 +-
 .../hive/thrift/TestHadoop20SAuthBridge.java    |   420 -
 .../hive/thrift/TestHadoopAuthBridge23.java     |   423 +
 itests/hive-unit/pom.xml                        |    35 +
 .../hadoop/hive/metastore/TestAdminUser.java    |     4 +-
 .../hive/metastore/TestHiveMetaStore.java       |     3 +
 .../metastore/hbase/HBaseIntegrationTests.java  |   117 +
 .../TestHBaseAggrStatsCacheIntegration.java     |   691 +
 .../hive/metastore/hbase/TestHBaseImport.java   |   650 +
 .../metastore/hbase/TestHBaseMetastoreSql.java  |   223 +
 .../hbase/TestHBaseStoreIntegration.java        |  1794 +
 .../hbase/TestStorageDescriptorSharing.java     |   191 +
 .../hive/ql/security/FolderPermissionBase.java  |    17 +-
 .../org/apache/hive/jdbc/TestJdbcDriver2.java   |    80 +-
 itests/qtest/pom.xml                            |    10 +-
 .../test/resources/testconfiguration.properties |     4 +
 itests/util/pom.xml                             |    32 +
 .../metastore/hbase/HBaseStoreTestUtil.java     |    45 +
 .../org/apache/hadoop/hive/ql/QTestUtil.java    |    50 +-
 .../apache/hive/jdbc/HivePreparedStatement.java |     4 +-
 .../hive/jdbc/ZooKeeperHiveClientHelper.java    |    34 +-
 metastore/if/hive_metastore.thrift              |    54 +
 metastore/pom.xml                               |    82 +
 .../oracle/hive-schema-0.13.0.oracle.sql        |    10 +-
 .../oracle/hive-schema-0.14.0.oracle.sql        |    10 +-
 .../oracle/hive-txn-schema-0.13.0.oracle.sql    |    10 +-
 .../oracle/hive-txn-schema-0.14.0.oracle.sql    |    10 +-
 .../metastore/hbase/HbaseMetastoreProto.java    | 34901 +++++++++++++++++
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.cpp  |  6919 ++--
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.h    |   664 +
 .../ThriftHiveMetastore_server.skeleton.cpp     |    25 +
 .../gen/thrift/gen-cpp/hive_metastore_types.cpp |  1294 +-
 .../gen/thrift/gen-cpp/hive_metastore_types.h   |   371 +
 .../hive/metastore/api/AbortTxnRequest.java     |     2 +-
 .../metastore/api/AddDynamicPartitions.java     |     2 +-
 .../metastore/api/AddPartitionsRequest.java     |     2 +-
 .../hive/metastore/api/AddPartitionsResult.java |     2 +-
 .../hadoop/hive/metastore/api/AggrStats.java    |     2 +-
 .../metastore/api/AlreadyExistsException.java   |     2 +-
 .../metastore/api/BinaryColumnStatsData.java    |     2 +-
 .../metastore/api/BooleanColumnStatsData.java   |     2 +-
 .../hive/metastore/api/CheckLockRequest.java    |     2 +-
 .../metastore/api/ClearFileMetadataRequest.java |   438 +
 .../metastore/api/ClearFileMetadataResult.java  |   283 +
 .../hive/metastore/api/ColumnStatistics.java    |     2 +-
 .../metastore/api/ColumnStatisticsDesc.java     |     2 +-
 .../hive/metastore/api/ColumnStatisticsObj.java |     2 +-
 .../hive/metastore/api/CommitTxnRequest.java    |     2 +-
 .../hive/metastore/api/CompactionRequest.java   |     2 +-
 .../api/ConfigValSecurityException.java         |     2 +-
 .../api/CurrentNotificationEventId.java         |     2 +-
 .../hadoop/hive/metastore/api/Database.java     |     2 +-
 .../apache/hadoop/hive/metastore/api/Date.java  |     2 +-
 .../hive/metastore/api/DateColumnStatsData.java |     2 +-
 .../hadoop/hive/metastore/api/Decimal.java      |     2 +-
 .../metastore/api/DecimalColumnStatsData.java   |     2 +-
 .../metastore/api/DoubleColumnStatsData.java    |     2 +-
 .../hive/metastore/api/DropPartitionsExpr.java  |     2 +-
 .../metastore/api/DropPartitionsRequest.java    |     2 +-
 .../metastore/api/DropPartitionsResult.java     |     2 +-
 .../hive/metastore/api/EnvironmentContext.java  |     2 +-
 .../hadoop/hive/metastore/api/FieldSchema.java  |     2 +-
 .../hive/metastore/api/FireEventRequest.java    |     2 +-
 .../hive/metastore/api/FireEventResponse.java   |     2 +-
 .../hadoop/hive/metastore/api/Function.java     |     2 +-
 .../metastore/api/GetAllFunctionsResponse.java  |    38 +-
 .../api/GetFileMetadataByExprRequest.java       |   548 +
 .../api/GetFileMetadataByExprResult.java        |   703 +
 .../metastore/api/GetFileMetadataRequest.java   |   438 +
 .../metastore/api/GetFileMetadataResult.java    |   540 +
 .../metastore/api/GetOpenTxnsInfoResponse.java  |     2 +-
 .../hive/metastore/api/GetOpenTxnsResponse.java |     2 +-
 .../api/GetPrincipalsInRoleRequest.java         |     2 +-
 .../api/GetPrincipalsInRoleResponse.java        |     2 +-
 .../api/GetRoleGrantsForPrincipalRequest.java   |     2 +-
 .../api/GetRoleGrantsForPrincipalResponse.java  |     2 +-
 .../api/GrantRevokePrivilegeRequest.java        |     2 +-
 .../api/GrantRevokePrivilegeResponse.java       |     2 +-
 .../metastore/api/GrantRevokeRoleRequest.java   |     2 +-
 .../metastore/api/GrantRevokeRoleResponse.java  |     2 +-
 .../hive/metastore/api/HeartbeatRequest.java    |     2 +-
 .../metastore/api/HeartbeatTxnRangeRequest.java |     2 +-
 .../api/HeartbeatTxnRangeResponse.java          |     2 +-
 .../hive/metastore/api/HiveObjectPrivilege.java |     2 +-
 .../hive/metastore/api/HiveObjectRef.java       |     2 +-
 .../apache/hadoop/hive/metastore/api/Index.java |     2 +-
 .../api/IndexAlreadyExistsException.java        |     2 +-
 .../metastore/api/InsertEventRequestData.java   |     2 +-
 .../metastore/api/InvalidInputException.java    |     2 +-
 .../metastore/api/InvalidObjectException.java   |     2 +-
 .../api/InvalidOperationException.java          |     2 +-
 .../api/InvalidPartitionException.java          |     2 +-
 .../hive/metastore/api/LockComponent.java       |     2 +-
 .../hadoop/hive/metastore/api/LockRequest.java  |     2 +-
 .../hadoop/hive/metastore/api/LockResponse.java |     2 +-
 .../hive/metastore/api/LongColumnStatsData.java |     2 +-
 .../hive/metastore/api/MetaException.java       |     2 +-
 .../hive/metastore/api/MetadataPpdResult.java   |   508 +
 .../hive/metastore/api/NoSuchLockException.java |     2 +-
 .../metastore/api/NoSuchObjectException.java    |     2 +-
 .../hive/metastore/api/NoSuchTxnException.java  |     2 +-
 .../hive/metastore/api/NotificationEvent.java   |     2 +-
 .../metastore/api/NotificationEventRequest.java |     2 +-
 .../api/NotificationEventResponse.java          |     2 +-
 .../hive/metastore/api/OpenTxnRequest.java      |     2 +-
 .../hive/metastore/api/OpenTxnsResponse.java    |     2 +-
 .../apache/hadoop/hive/metastore/api/Order.java |     2 +-
 .../hadoop/hive/metastore/api/Partition.java    |     2 +-
 .../api/PartitionListComposingSpec.java         |     2 +-
 .../hive/metastore/api/PartitionSpec.java       |     2 +-
 .../api/PartitionSpecWithSharedSD.java          |     2 +-
 .../hive/metastore/api/PartitionWithoutSD.java  |     2 +-
 .../metastore/api/PartitionsByExprRequest.java  |     2 +-
 .../metastore/api/PartitionsByExprResult.java   |     2 +-
 .../metastore/api/PartitionsStatsRequest.java   |     2 +-
 .../metastore/api/PartitionsStatsResult.java    |     2 +-
 .../metastore/api/PrincipalPrivilegeSet.java    |     2 +-
 .../hadoop/hive/metastore/api/PrivilegeBag.java |     2 +-
 .../hive/metastore/api/PrivilegeGrantInfo.java  |     2 +-
 .../metastore/api/PutFileMetadataRequest.java   |   588 +
 .../metastore/api/PutFileMetadataResult.java    |   283 +
 .../hadoop/hive/metastore/api/ResourceUri.java  |     2 +-
 .../apache/hadoop/hive/metastore/api/Role.java  |     2 +-
 .../hive/metastore/api/RolePrincipalGrant.java  |     2 +-
 .../hadoop/hive/metastore/api/Schema.java       |     2 +-
 .../hadoop/hive/metastore/api/SerDeInfo.java    |     2 +-
 .../api/SetPartitionsStatsRequest.java          |     2 +-
 .../hive/metastore/api/ShowCompactRequest.java  |     2 +-
 .../hive/metastore/api/ShowCompactResponse.java |     2 +-
 .../api/ShowCompactResponseElement.java         |     2 +-
 .../hive/metastore/api/ShowLocksRequest.java    |     2 +-
 .../hive/metastore/api/ShowLocksResponse.java   |     2 +-
 .../metastore/api/ShowLocksResponseElement.java |     2 +-
 .../hadoop/hive/metastore/api/SkewedInfo.java   |     2 +-
 .../hive/metastore/api/StorageDescriptor.java   |     2 +-
 .../metastore/api/StringColumnStatsData.java    |     2 +-
 .../apache/hadoop/hive/metastore/api/Table.java |     2 +-
 .../hive/metastore/api/TableStatsRequest.java   |     2 +-
 .../hive/metastore/api/TableStatsResult.java    |     2 +-
 .../hive/metastore/api/ThriftHiveMetastore.java |  8422 ++--
 .../hive/metastore/api/TxnAbortedException.java |     2 +-
 .../hadoop/hive/metastore/api/TxnInfo.java      |     2 +-
 .../hive/metastore/api/TxnOpenException.java    |     2 +-
 .../apache/hadoop/hive/metastore/api/Type.java  |     2 +-
 .../hive/metastore/api/UnknownDBException.java  |     2 +-
 .../api/UnknownPartitionException.java          |     2 +-
 .../metastore/api/UnknownTableException.java    |     2 +-
 .../hive/metastore/api/UnlockRequest.java       |     2 +-
 .../hadoop/hive/metastore/api/Version.java      |     2 +-
 .../gen-php/metastore/ThriftHiveMetastore.php   |  2810 +-
 .../src/gen/thrift/gen-php/metastore/Types.php  |  1009 +-
 .../hive_metastore/ThriftHiveMetastore-remote   |    49 +-
 .../hive_metastore/ThriftHiveMetastore.py       |  1563 +-
 .../gen/thrift/gen-py/hive_metastore/ttypes.py  |   734 +-
 .../gen/thrift/gen-rb/hive_metastore_types.rb   |   167 +
 .../gen/thrift/gen-rb/thrift_hive_metastore.rb  |   267 +
 .../hadoop/hive/metastore/HiveAlterHandler.java |    38 +-
 .../hadoop/hive/metastore/HiveMetaStore.java    |   272 +-
 .../hive/metastore/HiveMetaStoreClient.java     |   112 +-
 .../hadoop/hive/metastore/IMetaStoreClient.java |     6 +
 .../hadoop/hive/metastore/ObjectStore.java      |   453 +-
 .../hive/metastore/PartFilterExprUtil.java      |   149 +
 .../apache/hadoop/hive/metastore/RawStore.java  |    66 +-
 .../hadoop/hive/metastore/RawStoreProxy.java    |     5 +-
 .../hive/metastore/RetryingHMSHandler.java      |    33 +-
 .../hbase/AggrStatsInvalidatorFilter.java       |   121 +
 .../hadoop/hive/metastore/hbase/Counter.java    |    53 +
 .../hive/metastore/hbase/HBaseConnection.java   |    96 +
 .../metastore/hbase/HBaseFilterPlanUtil.java    |   612 +
 .../hive/metastore/hbase/HBaseImport.java       |   535 +
 .../hive/metastore/hbase/HBaseReadWrite.java    |  2106 +
 .../hive/metastore/hbase/HBaseSchemaTool.java   |   239 +
 .../hadoop/hive/metastore/hbase/HBaseStore.java |  2387 ++
 .../hadoop/hive/metastore/hbase/HBaseUtils.java |  1340 +
 .../hive/metastore/hbase/ObjectCache.java       |    81 +
 .../hive/metastore/hbase/PartitionCache.java    |   168 +
 .../metastore/hbase/PartitionKeyComparator.java |   292 +
 .../hbase/SharedStorageDescriptor.java          |   251 +
 .../hadoop/hive/metastore/hbase/StatsCache.java |   326 +
 .../metastore/hbase/TephraHBaseConnection.java  |   127 +
 .../metastore/hbase/VanillaHBaseConnection.java |   137 +
 .../stats/BinaryColumnStatsAggregator.java      |    35 +
 .../stats/BooleanColumnStatsAggregator.java     |    35 +
 .../hbase/stats/ColumnStatsAggregator.java      |    26 +
 .../stats/ColumnStatsAggregatorFactory.java     |    94 +
 .../stats/DecimalColumnStatsAggregator.java     |    43 +
 .../stats/DoubleColumnStatsAggregator.java      |    36 +
 .../hbase/stats/LongColumnStatsAggregator.java  |    36 +
 .../stats/StringColumnStatsAggregator.java      |    36 +
 .../hive/metastore/parser/ExpressionTree.java   |     9 +-
 .../hive/metastore/tools/HiveMetaTool.java      |     5 +
 .../hadoop/hive/metastore/txn/TxnHandler.java   |    66 +-
 .../metastore/hbase/hbase_metastore_proto.proto |   282 +
 .../DummyRawStoreControlledCommit.java          |    56 +-
 .../DummyRawStoreForJdoConnection.java          |    50 +-
 .../hadoop/hive/metastore/TestObjectStore.java  |    43 +-
 .../hadoop/hive/metastore/hbase/MockUtils.java  |   199 +
 .../hbase/TestHBaseAggregateStatsCache.java     |   316 +
 .../hbase/TestHBaseFilterPlanUtil.java          |   483 +
 .../hive/metastore/hbase/TestHBaseStore.java    |  1307 +
 .../metastore/hbase/TestHBaseStoreCached.java   |   378 +
 .../hbase/TestSharedStorageDescriptor.java      |   153 +
 packaging/src/main/assembly/bin.xml             |     1 +
 pom.xml                                         |    25 +-
 .../hadoop/hive/ql/plan/api/Adjacency.java      |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Graph.java   |     2 +-
 .../hadoop/hive/ql/plan/api/Operator.java       |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Query.java   |     2 +-
 .../hadoop/hive/ql/plan/api/QueryPlan.java      |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Stage.java   |     2 +-
 .../apache/hadoop/hive/ql/plan/api/Task.java    |     2 +-
 .../ExpressionTemplates/IfExprColumnColumn.txt  |   186 -
 .../java/org/apache/hadoop/hive/ql/Driver.java  |    17 +-
 .../org/apache/hadoop/hive/ql/ErrorMsg.java     |     2 +-
 .../org/apache/hadoop/hive/ql/exec/DDLTask.java |   333 +-
 .../apache/hadoop/hive/ql/exec/ExplainTask.java |    24 +-
 .../hadoop/hive/ql/exec/FunctionRegistry.java   |     3 +-
 .../hadoop/hive/ql/exec/KeyWrapperFactory.java  |     4 +
 .../hadoop/hive/ql/exec/MapJoinOperator.java    |     8 +-
 .../apache/hadoop/hive/ql/exec/MoveTask.java    |    31 +-
 .../apache/hadoop/hive/ql/exec/Operator.java    |     3 +-
 .../ql/exec/SparkHashTableSinkOperator.java     |     3 +-
 .../hadoop/hive/ql/exec/StatsNoJobTask.java     |    25 +-
 .../apache/hadoop/hive/ql/exec/StatsTask.java   |    13 +-
 .../apache/hadoop/hive/ql/exec/Utilities.java   |    11 +-
 .../persistence/BytesBytesMultiHashMap.java     |    11 +-
 .../persistence/HybridHashTableContainer.java   |    68 +-
 .../ql/exec/persistence/PTFRowContainer.java    |    14 +-
 .../hive/ql/exec/persistence/RowContainer.java  |    12 +-
 .../hadoop/hive/ql/exec/spark/SparkPlan.java    |     3 +-
 .../hive/ql/exec/spark/SparkPlanGenerator.java  |     3 +-
 .../hive/ql/exec/spark/SparkRecordHandler.java  |     3 +-
 .../hadoop/hive/ql/exec/spark/SparkTask.java    |     2 +-
 .../ql/exec/spark/status/SparkJobMonitor.java   |     2 +-
 .../hadoop/hive/ql/exec/tez/DagUtils.java       |     3 +
 .../hive/ql/exec/tez/HashTableLoader.java       |     7 +-
 .../hadoop/hive/ql/exec/tez/InPlaceUpdates.java |    65 +
 .../hive/ql/exec/tez/RecordProcessor.java       |     3 +-
 .../hive/ql/exec/tez/ReduceRecordProcessor.java |     1 -
 .../hive/ql/exec/tez/ReduceRecordSource.java    |     3 +-
 .../hadoop/hive/ql/exec/tez/TezJobMonitor.java  |    70 +-
 .../hadoop/hive/ql/exec/tez/TezProcessor.java   |     3 +-
 .../apache/hadoop/hive/ql/exec/tez/TezTask.java |    20 +-
 .../ql/exec/tez/tools/KeyValuesInputMerger.java |     1 -
 .../ql/exec/vector/VectorGroupByOperator.java   |     5 +-
 .../exec/vector/VectorSMBMapJoinOperator.java   |    15 +-
 .../ql/exec/vector/VectorizationContext.java    |   213 +-
 .../expressions/FilterStringColumnInList.java   |    13 +-
 .../expressions/FilterStructColumnInList.java   |   178 +
 .../exec/vector/expressions/IStructInExpr.java  |    36 +
 .../IfExprDoubleColumnDoubleColumn.java         |   167 +
 .../expressions/IfExprLongColumnLongColumn.java |   166 +
 .../vector/expressions/StringColumnInList.java  |     4 +
 .../vector/expressions/StructColumnInList.java  |   174 +
 .../apache/hadoop/hive/ql/hooks/ATSHook.java    |     9 +-
 .../hadoop/hive/ql/hooks/LineageLogger.java     |    95 +-
 .../hive/ql/io/CombineHiveInputFormat.java      |    10 +-
 .../hadoop/hive/ql/io/HiveInputFormat.java      |     5 +-
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java   |   155 +-
 .../apache/hadoop/hive/ql/io/orc/OrcSerde.java  |     1 +
 .../apache/hadoop/hive/ql/io/orc/OrcStruct.java |     2 +-
 .../hadoop/hive/ql/io/orc/RecordReaderImpl.java |     4 +-
 .../hive/ql/io/parquet/ProjectionPusher.java    |     3 +-
 .../serde/ParquetHiveArrayInspector.java        |    12 +
 .../ql/io/parquet/timestamp/NanoTimeUtils.java  |    23 +-
 .../hive/ql/io/sarg/ConvertAstToSearchArg.java  |     4 +
 .../apache/hadoop/hive/ql/lib/RuleRegExp.java   |    61 +-
 .../apache/hadoop/hive/ql/log/PerfLogger.java   |   195 -
 .../apache/hadoop/hive/ql/metadata/Hive.java    |    34 +-
 .../hadoop/hive/ql/metadata/Partition.java      |    29 +-
 .../ql/optimizer/ColumnPrunerProcFactory.java   |     3 +
 .../hive/ql/optimizer/ConvertJoinMapJoin.java   |    22 +-
 .../hive/ql/optimizer/GenMapRedUtils.java       |    57 +-
 .../ql/optimizer/ReduceSinkMapJoinProc.java     |    19 +-
 .../functions/HiveSqlCountAggFunction.java      |    72 +
 .../functions/HiveSqlMinMaxAggFunction.java     |    49 +
 .../functions/HiveSqlSumAggFunction.java        |   125 +
 .../calcite/reloperators/HiveBetween.java       |    75 +
 .../optimizer/calcite/reloperators/HiveIn.java  |    41 +
 .../calcite/reloperators/HiveLimit.java         |    57 -
 .../calcite/reloperators/HiveSort.java          |   110 -
 .../calcite/reloperators/HiveSortLimit.java     |   110 +
 .../rules/HiveAggregateJoinTransposeRule.java   |   372 +
 .../rules/HiveAggregateProjectMergeRule.java    |   151 +
 .../calcite/rules/HivePreFilteringRule.java     |    37 +-
 .../calcite/rules/HiveRelFieldTrimmer.java      |   145 +-
 .../calcite/stats/HiveRelMdMemory.java          |     9 +-
 .../calcite/stats/HiveRelMdParallelism.java     |     4 +-
 .../calcite/translator/ASTConverter.java        |    24 +-
 .../calcite/translator/HiveOpConverter.java     |     8 +-
 .../translator/PlanModifierForASTConv.java      |    14 +-
 .../translator/PlanModifierForReturnPath.java   |     4 -
 .../calcite/translator/PlanModifierUtil.java    |     4 +-
 .../translator/SqlFunctionConverter.java        |    56 +-
 .../hive/ql/optimizer/lineage/LineageCtx.java   |     8 +-
 .../hive/ql/optimizer/physical/Vectorizer.java  |    87 +-
 .../ql/optimizer/physical/Vectorizer.java.orig  |  1744 +
 .../ql/optimizer/physical/Vectorizer.java.rej   |    86 +
 .../hive/ql/optimizer/ppr/PartitionPruner.java  |     7 +-
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |    33 +-
 .../hive/ql/parse/DDLSemanticAnalyzer.java      |    17 +
 .../apache/hadoop/hive/ql/parse/HiveParser.g    |     9 +-
 .../apache/hadoop/hive/ql/parse/QBSubQuery.java |     7 -
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |    12 +-
 .../hive/ql/parse/SemanticAnalyzerFactory.java  |     2 +
 .../hadoop/hive/ql/parse/SubQueryUtils.java     |    11 -
 .../hive/ql/parse/spark/SparkCompiler.java      |     3 +-
 .../org/apache/hadoop/hive/ql/plan/DDLWork.java |    21 +
 .../hive/ql/plan/ExprNodeGenericFuncDesc.java   |    10 +-
 .../hadoop/hive/ql/plan/HiveOperation.java      |     1 +
 .../hive/ql/plan/ShowCreateDatabaseDesc.java    |    94 +
 .../hadoop/hive/ql/plan/VectorGroupByDesc.java  |    10 +
 .../AuthorizationPreEventListener.java          |     2 +-
 .../authorization/plugin/HiveOperationType.java |     1 +
 .../plugin/sqlstd/Operation2Privilege.java      |     2 +
 .../sqlstd/SQLStdHiveAccessController.java      |     5 +
 .../hadoop/hive/ql/session/SessionState.java    |    40 +-
 .../apache/hadoop/hive/ql/stats/StatsUtils.java |   269 +-
 .../hive/ql/stats/jdbc/JDBCStatsPublisher.java  |    13 +-
 .../ql/stats/jdbc/JDBCStatsSetupConstants.java  |     4 +-
 .../org/apache/hadoop/hive/ql/udf/UDFJson.java  |     2 +
 .../hive/ql/udf/generic/GenericUDAFMax.java     |    16 +-
 .../hive/ql/udf/generic/GenericUDAFSum.java     |     2 +-
 .../udf/generic/GenericUDAFSumEmptyIsZero.java  |    63 +
 .../hive/ql/udf/generic/GenericUDFIf.java       |     4 +-
 ql/src/main/resources/hive-exec-log4j2.xml      |     5 +-
 ql/src/main/resources/tez-container-log4j2.xml  |     5 +-
 .../hive/metastore/TestMetastoreExpr.java       |     2 +-
 .../persistence/TestBytesBytesMultiHashMap.java |     3 +
 .../ql/exec/persistence/TestHashPartition.java  |    29 +
 .../exec/persistence/TestPTFRowContainer.java   |    31 +-
 .../exec/vector/TestVectorizationContext.java   |     4 +-
 .../TestVectorConditionalExpressions.java       |     3 +-
 .../hive/ql/io/orc/TestInputOutputFormat.java   |    19 +
 .../hadoop/hive/ql/io/orc/TestOrcStruct.java    |     2 +
 .../serde/TestParquetTimestampUtils.java        |    38 +-
 ...nMapRedUtilsUsePartitionColumnsNegative.java |    73 +
 ...nMapRedUtilsUsePartitionColumnsPositive.java |    61 +
 .../test/queries/clientnegative/ctasnullcol.q   |     2 +
 .../authorization_set_show_current_role.q       |     3 +
 .../clientpositive/bucket_map_join_tez1.q       |    31 +
 .../queries/clientpositive/cbo_rp_auto_join17.q |    14 +
 .../cbo_rp_cross_product_check_2.q              |    31 +
 .../clientpositive/drop_table_with_index.q      |    35 +
 .../test/queries/clientpositive/dynpart_merge.q |    28 +
 .../dynpart_sort_opt_vectorization.q            |     2 +
 .../clientpositive/dynpart_sort_optimization.q  |     2 +
 .../queries/clientpositive/exchgpartition2lel.q |    32 +
 .../clientpositive/groupby_join_pushdown.q      |    55 +
 ql/src/test/queries/clientpositive/lineage3.q   |    26 +
 .../test/queries/clientpositive/load_orc_part.q |     5 +
 .../parquet_mixed_partition_formats.q           |    42 +
 .../clientpositive/parquet_ppd_boolean.q        |    42 +-
 .../queries/clientpositive/parquet_ppd_char.q   |    46 +-
 .../queries/clientpositive/parquet_ppd_date.q   |    64 +-
 .../clientpositive/parquet_ppd_decimal.q        |   106 +-
 .../clientpositive/parquet_ppd_timestamp.q      |    62 +-
 .../clientpositive/parquet_ppd_varchar.q        |    46 +-
 .../clientpositive/parquet_predicate_pushdown.q |    20 +-
 .../clientpositive/show_create_database.q       |     3 +
 .../queries/clientpositive/subquery_views.q     |    22 +-
 .../queries/clientpositive/union_fast_stats.q   |    68 +
 .../clientpositive/vector_auto_smb_mapjoin_14.q |   297 +
 .../queries/clientpositive/vector_char_cast.q   |     9 +
 .../clientpositive/vector_groupby_reduce.q      |    62 +-
 .../queries/clientpositive/vector_struct_in.q   |   247 +
 .../clientpositive/vectorization_limit.q        |     4 +-
 .../queries/clientpositive/windowing_udaf.q     |     4 +
 .../results/clientnegative/ctasnullcol.q.out    |     5 +
 .../subquery_exists_implicit_gby.q.out          |     8 +-
 .../subquery_nested_subquery.q.out              |     4 +-
 .../subquery_notexists_implicit_gby.q.out       |     8 +-
 .../subquery_windowing_corr.q.out               |     7 +-
 .../alter_partition_coltype.q.out               |     8 +-
 .../clientpositive/annotate_stats_groupby.q.out |   106 +-
 .../annotate_stats_groupby2.q.out               |    28 +-
 .../authorization_explain.q.java1.7.out         |     2 +-
 .../authorization_explain.q.java1.8.out         |     2 +-
 .../authorization_set_show_current_role.q.out   |     8 +
 .../results/clientpositive/auto_join18.q.out    |    12 +-
 .../auto_join18_multi_distinct.q.out            |    12 +-
 .../results/clientpositive/auto_join27.q.out    |    18 +-
 .../results/clientpositive/auto_join32.q.out    |     4 +-
 .../clientpositive/binarysortable_1.q.out       |   Bin 4329 -> 4325 bytes
 .../clientpositive/cbo_rp_auto_join17.q.out     |   118 +
 .../cbo_rp_cross_product_check_2.q.out          |   699 +
 .../clientpositive/correlationoptimizer2.q.out  |   220 +-
 .../clientpositive/correlationoptimizer6.q.out  |   232 +-
 ql/src/test/results/clientpositive/count.q.out  |    14 +-
 .../results/clientpositive/ctas_colname.q.out   |    52 +-
 .../test/results/clientpositive/database.q.out  |     2 +-
 .../clientpositive/decimal_precision.q.out      |     4 +-
 .../results/clientpositive/decimal_udf.q.out    |    30 +-
 .../results/clientpositive/distinct_stats.q.out |    14 +-
 .../clientpositive/drop_table_with_index.q.out  |   152 +
 .../results/clientpositive/dynpart_merge.q.out  |    99 +
 .../dynpart_sort_opt_vectorization.q.out        |   117 +-
 .../dynpart_sort_optimization.q.out             |   117 +-
 ...ryption_select_read_only_encrypted_tbl.q.out |     4 +-
 .../clientpositive/exchgpartition2lel.q.out     |   182 +
 .../clientpositive/explain_dependency.q.out     |    18 +-
 .../clientpositive/explain_dependency2.q.out    |    16 +-
 .../clientpositive/explain_logical.q.out        |    78 +-
 .../clientpositive/fetch_aggregation.q.out      |     4 +-
 .../test/results/clientpositive/gby_star.q.out  |    54 +-
 .../test/results/clientpositive/groupby12.q.out |     6 +-
 .../results/clientpositive/groupby5_map.q.out   |     4 +-
 .../clientpositive/groupby5_map_skew.q.out      |     4 +-
 .../results/clientpositive/groupby_cube1.q.out  |    12 +-
 .../groupby_distinct_samekey.q.out              |     6 +-
 .../clientpositive/groupby_grouping_sets2.q.out |    10 +-
 .../clientpositive/groupby_grouping_sets3.q.out |    12 +-
 .../clientpositive/groupby_grouping_sets5.q.out |     8 +-
 .../clientpositive/groupby_grouping_sets6.q.out |     8 +-
 .../clientpositive/groupby_join_pushdown.q.out  |  1522 +
 .../clientpositive/groupby_position.q.out       |    36 +-
 .../clientpositive/groupby_resolution.q.out     |    60 +-
 .../clientpositive/groupby_rollup1.q.out        |    12 +-
 .../clientpositive/groupby_sort_10.q.out        |     8 +-
 .../clientpositive/groupby_sort_11.q.out        |    10 +-
 .../results/clientpositive/groupby_sort_8.q.out |    12 +-
 ql/src/test/results/clientpositive/having.q.out |    62 +-
 .../test/results/clientpositive/having2.q.out   |    12 +-
 .../clientpositive/index_auto_mult_tables.q.out |    12 +-
 .../clientpositive/index_auto_self_join.q.out   |    12 +-
 .../clientpositive/index_auto_update.q.out      |     6 +-
 .../index_bitmap_auto_partitioned.q.out         |     6 +-
 .../index_bitmap_compression.q.out              |     6 +-
 .../infer_bucket_sort_dyn_part.q.out            |     4 +-
 .../infer_bucket_sort_map_operators.q.out       |     4 +-
 .../results/clientpositive/input4.q.java1.7.out |     2 +-
 .../results/clientpositive/input4.q.java1.8.out |     2 +-
 .../results/clientpositive/join0.q.java1.7.out  |     2 +-
 .../results/clientpositive/join0.q.java1.8.out  |     4 +-
 ql/src/test/results/clientpositive/join18.q.out |    12 +-
 .../clientpositive/join18_multi_distinct.q.out  |    12 +-
 ql/src/test/results/clientpositive/join31.q.out |    36 +-
 .../limit_partition_metadataonly.q.out          |     4 +-
 .../results/clientpositive/limit_pushdown.q.out |    36 +-
 .../test/results/clientpositive/lineage2.q.out  |     2 +-
 .../test/results/clientpositive/lineage3.q.out  |    72 +-
 .../list_bucket_dml_6.q.java1.7.out             |    12 +-
 .../list_bucket_dml_6.q.java1.8.out             |    12 +-
 .../clientpositive/list_bucket_dml_7.q.out      |    12 +-
 .../list_bucket_query_multiskew_3.q.out         |     2 +-
 .../results/clientpositive/load_orc_part.q.out  |    26 +
 .../clientpositive/mapjoin_mapjoin.q.out        |    32 +-
 .../clientpositive/metadata_only_queries.q.out  |     4 +-
 .../results/clientpositive/metadataonly1.q.out  |   112 +-
 .../results/clientpositive/multiMapJoin2.q.out  |   226 +-
 .../nonblock_op_deduplicate.q.out               |     8 +-
 .../results/clientpositive/nonmr_fetch.q.out    |    14 +-
 .../results/clientpositive/parallel_join0.q.out |     2 +-
 .../parquet_mixed_partition_formats.q.out       |   303 +
 .../clientpositive/parquet_ppd_boolean.q.out    |   194 +-
 .../clientpositive/parquet_ppd_char.q.out       |   224 +-
 .../clientpositive/parquet_ppd_date.q.out       |   324 +-
 .../clientpositive/parquet_ppd_decimal.q.out    |   594 +-
 .../clientpositive/parquet_ppd_timestamp.q.out  |   314 +-
 .../clientpositive/parquet_ppd_varchar.q.out    |   224 +-
 .../parquet_predicate_pushdown.q.out            |   118 +-
 .../clientpositive/partition_multilevels.q.out  |     8 +-
 .../clientpositive/plan_json.q.java1.7.out      |     2 +-
 .../clientpositive/plan_json.q.java1.8.out      |     2 +-
 .../test/results/clientpositive/ppd_gby.q.out   |    12 +-
 .../test/results/clientpositive/ppd_gby2.q.out  |    60 +-
 .../clientpositive/ppd_join_filter.q.out        |    98 +-
 .../ql_rewrite_gbtoidx_cbo_1.q.out              |   168 +-
 .../ql_rewrite_gbtoidx_cbo_2.q.out              |    94 +-
 .../reduce_deduplicate_extended.q.out           |    32 +-
 .../clientpositive/selectDistinctStar.q.out     |    44 +-
 .../clientpositive/show_create_database.q.out   |    19 +
 .../results/clientpositive/show_functions.q.out |     1 +
 .../clientpositive/spark/auto_join18.q.out      |    10 +-
 .../spark/auto_join18_multi_distinct.q.out      |    12 +-
 .../clientpositive/spark/auto_join27.q.out      |    18 +-
 .../clientpositive/spark/auto_join32.q.out      |    53 +-
 .../spark/bucket_map_join_tez1.q.out            |   357 +
 .../results/clientpositive/spark/count.q.out    |    14 +-
 .../clientpositive/spark/groupby5_map.q.out     |     4 +-
 .../spark/groupby5_map_skew.q.out               |     4 +-
 .../clientpositive/spark/groupby_cube1.q.out    |    12 +-
 .../clientpositive/spark/groupby_position.q.out |    18 +-
 .../spark/groupby_resolution.q.out              |    60 +-
 .../clientpositive/spark/groupby_rollup1.q.out  |    12 +-
 .../results/clientpositive/spark/having.q.out   |    62 +-
 .../spark/infer_bucket_sort_map_operators.q.out |     4 +-
 .../results/clientpositive/spark/join18.q.out   |    10 +-
 .../spark/join18_multi_distinct.q.out           |    12 +-
 .../results/clientpositive/spark/join31.q.out   |    36 +-
 .../spark/limit_partition_metadataonly.q.out    |     4 +-
 .../clientpositive/spark/limit_pushdown.q.out   |    34 +-
 .../clientpositive/spark/mapjoin_mapjoin.q.out  |    24 +-
 .../spark/metadata_only_queries.q.out           |     4 +-
 .../clientpositive/spark/ppd_join_filter.q.out  |    90 +-
 .../spark/ql_rewrite_gbtoidx_cbo_1.q.out        |   168 +-
 .../clientpositive/spark/stats_only_null.q.out  |     8 +-
 .../clientpositive/spark/subquery_in.q.out      |    36 +-
 .../results/clientpositive/spark/union11.q.out  |    42 +-
 .../results/clientpositive/spark/union14.q.out  |    28 +-
 .../results/clientpositive/spark/union15.q.out  |    28 +-
 .../results/clientpositive/spark/union28.q.out  |     4 +-
 .../results/clientpositive/spark/union30.q.out  |     4 +-
 .../results/clientpositive/spark/union33.q.out  |     8 +-
 .../results/clientpositive/spark/union5.q.out   |    34 +-
 .../results/clientpositive/spark/union7.q.out   |    28 +-
 .../clientpositive/spark/union_remove_21.q.out  |     4 +-
 .../spark/vector_count_distinct.q.out           |     4 +-
 .../spark/vector_decimal_aggregate.q.out        |    12 +-
 .../spark/vector_distinct_2.q.out               |    28 +-
 .../clientpositive/spark/vector_groupby_3.q.out |    30 +-
 .../spark/vector_mapjoin_reduce.q.out           |    36 +-
 .../clientpositive/spark/vector_orderby_5.q.out |     6 +-
 .../clientpositive/spark/vectorization_0.q.out  |    16 +-
 .../clientpositive/spark/vectorization_13.q.out |    32 +-
 .../clientpositive/spark/vectorization_15.q.out |    16 +-
 .../clientpositive/spark/vectorization_16.q.out |    16 +-
 .../clientpositive/spark/vectorization_9.q.out  |    16 +-
 .../spark/vectorization_pushdown.q.out          |     4 +-
 .../spark/vectorization_short_regress.q.out     |    74 +-
 .../spark/vectorized_nested_mapjoin.q.out       |    18 +-
 .../spark/vectorized_timestamp_funcs.q.out      |    12 +-
 .../clientpositive/stats_only_null.q.out        |     8 +-
 .../results/clientpositive/stats_ppr_all.q.out  |    16 +-
 .../subq_where_serialization.q.out              |    18 +-
 .../clientpositive/subquery_exists_having.q.out |    48 +-
 .../results/clientpositive/subquery_in.q.out    |    36 +-
 .../clientpositive/subquery_in_having.q.out     |   260 +-
 .../clientpositive/subquery_notexists.q.out     |    18 +-
 .../subquery_notexists_having.q.out             |    26 +-
 .../results/clientpositive/subquery_notin.q.out |    24 +-
 .../subquery_notin_having.q.java1.7.out         |    50 +-
 .../subquery_unqualcolumnrefs.q.out             |    74 +-
 .../results/clientpositive/subquery_views.q.out |   124 +-
 .../tez/bucket_map_join_tez1.q.out              |   333 +
 .../clientpositive/tez/constprog_dpp.q.out      |     4 +-
 .../test/results/clientpositive/tez/count.q.out |    14 +-
 .../tez/dynamic_partition_pruning.q.out         |    88 +-
 .../tez/dynpart_sort_opt_vectorization.q.out    |   102 +-
 .../tez/dynpart_sort_optimization.q.out         |   101 +-
 .../clientpositive/tez/explainuser_1.q.out      |  2799 +-
 .../clientpositive/tez/explainuser_2.q.out      |  4004 +-
 .../clientpositive/tez/explainuser_3.q.out      |    10 +-
 .../results/clientpositive/tez/having.q.out     |    62 +-
 .../clientpositive/tez/limit_pushdown.q.out     |    34 +-
 .../clientpositive/tez/mapjoin_mapjoin.q.out    |    24 +-
 .../tez/metadata_only_queries.q.out             |     4 +-
 .../clientpositive/tez/metadataonly1.q.out      |    44 +-
 .../test/results/clientpositive/tez/mrr.q.out   |    94 +-
 .../clientpositive/tez/selectDistinctStar.q.out |    44 +-
 .../tez/show_create_database.q.out              |    19 +
 .../clientpositive/tez/stats_only_null.q.out    |     8 +-
 .../clientpositive/tez/subquery_in.q.out        |    36 +-
 .../results/clientpositive/tez/tez_dml.q.out    |     6 +-
 .../results/clientpositive/tez/union5.q.out     |    44 +-
 .../results/clientpositive/tez/union7.q.out     |    28 +-
 .../clientpositive/tez/unionDistinct_1.q.out    |     8 +-
 .../clientpositive/tez/union_fast_stats.q.out   |   526 +
 .../clientpositive/tez/vector_aggregate_9.q.out |     4 +-
 .../tez/vector_auto_smb_mapjoin_14.q.out        |  1576 +
 .../tez/vector_binary_join_groupby.q.out        |     4 +-
 .../clientpositive/tez/vector_char_cast.q.out   |    35 +
 .../tez/vector_count_distinct.q.out             |     4 +-
 .../tez/vector_decimal_aggregate.q.out          |    12 +-
 .../tez/vector_decimal_precision.q.out          |     4 +-
 .../clientpositive/tez/vector_decimal_udf.q.out |    30 +-
 .../clientpositive/tez/vector_distinct_2.q.out  |    28 +-
 .../clientpositive/tez/vector_groupby_3.q.out   |    30 +-
 .../tez/vector_groupby_reduce.q.out             |  1460 +-
 .../tez/vector_grouping_sets.q.out              |     8 +-
 .../tez/vector_mapjoin_reduce.q.out             |    36 +-
 .../clientpositive/tez/vector_orderby_5.q.out   |     6 +-
 .../clientpositive/tez/vector_outer_join2.q.out |    20 +-
 .../tez/vector_partition_diff_num_cols.q.out    |    20 +-
 .../tez/vector_partitioned_date_time.q.out      |    12 +-
 .../tez/vector_reduce_groupby_decimal.q.out     |    24 +-
 .../clientpositive/tez/vectorization_0.q.out    |    16 +-
 .../clientpositive/tez/vectorization_13.q.out   |    32 +-
 .../clientpositive/tez/vectorization_15.q.out   |    16 +-
 .../clientpositive/tez/vectorization_16.q.out   |    16 +-
 .../clientpositive/tez/vectorization_9.q.out    |    16 +-
 .../tez/vectorization_limit.q.out               |    22 +-
 .../tez/vectorization_pushdown.q.out            |     4 +-
 .../tez/vectorization_short_regress.q.out       |    74 +-
 .../tez/vectorized_distinct_gby.q.out           |     8 +-
 .../vectorized_dynamic_partition_pruning.q.out  |    88 +-
 .../tez/vectorized_nested_mapjoin.q.out         |    18 +-
 .../clientpositive/tez/vectorized_parquet.q.out |     6 +-
 .../tez/vectorized_timestamp_funcs.q.out        |    12 +-
 ql/src/test/results/clientpositive/udf8.q.out   |     4 +-
 .../test/results/clientpositive/udf_count.q.out |    16 +-
 .../test/results/clientpositive/union11.q.out   |    70 +-
 .../test/results/clientpositive/union14.q.out   |    32 +-
 .../test/results/clientpositive/union15.q.out   |    38 +-
 .../test/results/clientpositive/union28.q.out   |     8 +-
 .../test/results/clientpositive/union30.q.out   |     8 +-
 .../test/results/clientpositive/union33.q.out   |     8 +-
 ql/src/test/results/clientpositive/union5.q.out |    48 +-
 ql/src/test/results/clientpositive/union7.q.out |    32 +-
 .../clientpositive/unionDistinct_1.q.out        |     8 +-
 .../clientpositive/union_fast_stats.q.out       |   526 +
 .../clientpositive/union_remove_21.q.out        |     8 +-
 .../clientpositive/vector_aggregate_9.q.out     |     4 +-
 .../vector_aggregate_without_gby.q.out          |     4 +-
 .../vector_auto_smb_mapjoin_14.q.out            |  1792 +
 .../vector_binary_join_groupby.q.out            |     4 +-
 .../clientpositive/vector_char_cast.q.out       |    35 +
 .../clientpositive/vector_count_distinct.q.out  |     6 +-
 .../vector_decimal_aggregate.q.out              |    12 +-
 .../vector_decimal_precision.q.out              |     4 +-
 .../clientpositive/vector_decimal_udf.q.out     |    30 +-
 .../clientpositive/vector_distinct_2.q.out      |    28 +-
 .../clientpositive/vector_groupby_3.q.out       |    30 +-
 .../clientpositive/vector_groupby_reduce.q.out  |  1474 +-
 .../clientpositive/vector_grouping_sets.q.out   |     8 +-
 .../clientpositive/vector_left_outer_join.q.out |     8 +-
 .../clientpositive/vector_mapjoin_reduce.q.out  |    36 +-
 .../clientpositive/vector_orderby_5.q.out       |     6 +-
 .../clientpositive/vector_outer_join1.q.out     |     8 +-
 .../clientpositive/vector_outer_join2.q.out     |    28 +-
 .../clientpositive/vector_outer_join3.q.out     |    24 +-
 .../clientpositive/vector_outer_join4.q.out     |     8 +-
 .../clientpositive/vector_outer_join5.q.out     |    48 +-
 .../vector_partition_diff_num_cols.q.out        |    20 +-
 .../vector_partitioned_date_time.q.out          |    12 +-
 .../vector_reduce_groupby_decimal.q.out         |    24 +-
 .../clientpositive/vector_struct_in.q.out       |   825 +
 .../clientpositive/vectorization_0.q.out        |    16 +-
 .../clientpositive/vectorization_13.q.out       |    32 +-
 .../clientpositive/vectorization_15.q.out       |    16 +-
 .../clientpositive/vectorization_16.q.out       |    16 +-
 .../clientpositive/vectorization_9.q.out        |    16 +-
 .../clientpositive/vectorization_limit.q.out    |    24 +-
 .../clientpositive/vectorization_pushdown.q.out |     4 +-
 .../vectorization_short_regress.q.out           |    74 +-
 .../vectorized_distinct_gby.q.out               |    12 +-
 .../vectorized_nested_mapjoin.q.out             |    26 +-
 .../clientpositive/vectorized_parquet.q.out     |     6 +-
 .../vectorized_parquet_types.q.out              |     6 +-
 .../vectorized_timestamp_funcs.q.out            |    12 +-
 .../results/clientpositive/windowing_udaf.q.out |    12 +
 ql/src/test/templates/TestCliDriver.vm          |     3 +-
 .../hadoop/hive/serde/test/InnerStruct.java     |     2 +-
 .../hadoop/hive/serde/test/ThriftTestObj.java   |     2 +-
 .../hadoop/hive/serde2/thrift/test/Complex.java |     2 +-
 .../hive/serde2/thrift/test/IntString.java      |     2 +-
 .../hive/serde2/thrift/test/MegaStruct.java     |     2 +-
 .../hive/serde2/thrift/test/MiniStruct.java     |     2 +-
 .../hive/serde2/thrift/test/SetIntString.java   |     2 +-
 .../hive/serde2/ColumnProjectionUtils.java      |    22 +
 .../apache/hadoop/hive/serde2/WriteBuffers.java |    10 +-
 .../BinarySortableSerDeWithEndPrefix.java       |    41 +
 .../hadoop/hive/serde2/lazy/LazyByte.java       |     4 +
 .../hadoop/hive/serde2/lazy/LazyDouble.java     |     4 +
 .../hadoop/hive/serde2/lazy/LazyFloat.java      |     4 +
 .../hadoop/hive/serde2/lazy/LazyInteger.java    |     4 +
 .../hadoop/hive/serde2/lazy/LazyLong.java       |     4 +
 .../hadoop/hive/serde2/lazy/LazyShort.java      |     4 +
 .../hadoop/hive/serde2/lazy/LazyUtils.java      |    28 +
 .../hadoop/hive/service/HiveClusterStatus.java  |     2 +-
 .../hive/service/HiveServerException.java       |     2 +-
 .../apache/hadoop/hive/service/ThriftHive.java  |     2 +-
 .../service/cli/thrift/TArrayTypeEntry.java     |     2 +-
 .../hive/service/cli/thrift/TBinaryColumn.java  |     2 +-
 .../hive/service/cli/thrift/TBoolColumn.java    |     2 +-
 .../hive/service/cli/thrift/TBoolValue.java     |     2 +-
 .../hive/service/cli/thrift/TByteColumn.java    |     2 +-
 .../hive/service/cli/thrift/TByteValue.java     |     2 +-
 .../hive/service/cli/thrift/TCLIService.java    |     2 +-
 .../cli/thrift/TCancelDelegationTokenReq.java   |     2 +-
 .../cli/thrift/TCancelDelegationTokenResp.java  |     2 +-
 .../service/cli/thrift/TCancelOperationReq.java |     2 +-
 .../cli/thrift/TCancelOperationResp.java        |     2 +-
 .../service/cli/thrift/TCloseOperationReq.java  |     2 +-
 .../service/cli/thrift/TCloseOperationResp.java |     2 +-
 .../service/cli/thrift/TCloseSessionReq.java    |     2 +-
 .../service/cli/thrift/TCloseSessionResp.java   |     2 +-
 .../hive/service/cli/thrift/TColumnDesc.java    |     2 +-
 .../hive/service/cli/thrift/TDoubleColumn.java  |     2 +-
 .../hive/service/cli/thrift/TDoubleValue.java   |     2 +-
 .../cli/thrift/TExecuteStatementReq.java        |     2 +-
 .../cli/thrift/TExecuteStatementResp.java       |     2 +-
 .../service/cli/thrift/TFetchResultsReq.java    |     2 +-
 .../service/cli/thrift/TFetchResultsResp.java   |     2 +-
 .../service/cli/thrift/TGetCatalogsReq.java     |     2 +-
 .../service/cli/thrift/TGetCatalogsResp.java    |     2 +-
 .../hive/service/cli/thrift/TGetColumnsReq.java |     2 +-
 .../service/cli/thrift/TGetColumnsResp.java     |     2 +-
 .../cli/thrift/TGetDelegationTokenReq.java      |     2 +-
 .../cli/thrift/TGetDelegationTokenResp.java     |     2 +-
 .../service/cli/thrift/TGetFunctionsReq.java    |     2 +-
 .../service/cli/thrift/TGetFunctionsResp.java   |     2 +-
 .../hive/service/cli/thrift/TGetInfoReq.java    |     2 +-
 .../hive/service/cli/thrift/TGetInfoResp.java   |     2 +-
 .../cli/thrift/TGetOperationStatusReq.java      |     2 +-
 .../cli/thrift/TGetOperationStatusResp.java     |     2 +-
 .../cli/thrift/TGetResultSetMetadataReq.java    |     2 +-
 .../cli/thrift/TGetResultSetMetadataResp.java   |     2 +-
 .../hive/service/cli/thrift/TGetSchemasReq.java |     2 +-
 .../service/cli/thrift/TGetSchemasResp.java     |     2 +-
 .../service/cli/thrift/TGetTableTypesReq.java   |     2 +-
 .../service/cli/thrift/TGetTableTypesResp.java  |     2 +-
 .../hive/service/cli/thrift/TGetTablesReq.java  |     2 +-
 .../hive/service/cli/thrift/TGetTablesResp.java |     2 +-
 .../service/cli/thrift/TGetTypeInfoReq.java     |     2 +-
 .../service/cli/thrift/TGetTypeInfoResp.java    |     2 +-
 .../service/cli/thrift/THandleIdentifier.java   |     2 +-
 .../hive/service/cli/thrift/TI16Column.java     |     2 +-
 .../hive/service/cli/thrift/TI16Value.java      |     2 +-
 .../hive/service/cli/thrift/TI32Column.java     |     2 +-
 .../hive/service/cli/thrift/TI32Value.java      |     2 +-
 .../hive/service/cli/thrift/TI64Column.java     |     2 +-
 .../hive/service/cli/thrift/TI64Value.java      |     2 +-
 .../hive/service/cli/thrift/TMapTypeEntry.java  |     2 +-
 .../service/cli/thrift/TOpenSessionReq.java     |     2 +-
 .../service/cli/thrift/TOpenSessionResp.java    |     2 +-
 .../service/cli/thrift/TOperationHandle.java    |     2 +-
 .../service/cli/thrift/TPrimitiveTypeEntry.java |     2 +-
 .../cli/thrift/TRenewDelegationTokenReq.java    |     2 +-
 .../cli/thrift/TRenewDelegationTokenResp.java   |     2 +-
 .../apache/hive/service/cli/thrift/TRow.java    |     2 +-
 .../apache/hive/service/cli/thrift/TRowSet.java |     2 +-
 .../hive/service/cli/thrift/TSessionHandle.java |     2 +-
 .../apache/hive/service/cli/thrift/TStatus.java |     2 +-
 .../hive/service/cli/thrift/TStringColumn.java  |     2 +-
 .../hive/service/cli/thrift/TStringValue.java   |     2 +-
 .../service/cli/thrift/TStructTypeEntry.java    |     2 +-
 .../hive/service/cli/thrift/TTableSchema.java   |     2 +-
 .../hive/service/cli/thrift/TTypeDesc.java      |     2 +-
 .../service/cli/thrift/TTypeQualifiers.java     |     2 +-
 .../service/cli/thrift/TUnionTypeEntry.java     |     2 +-
 .../cli/thrift/TUserDefinedTypeEntry.java       |     2 +-
 .../gen-py/hive_service/ThriftHive-remote       |    49 +-
 .../auth/LdapAuthenticationProviderImpl.java    |    82 +-
 .../org/apache/hive/service/cli/Column.java     |     2 +-
 .../thrift/RetryingThriftCLIServiceClient.java  |   331 +
 .../org/apache/hive/service/cli/TestColumn.java |   129 +
 .../cli/TestRetryingThriftCLIServiceClient.java |   133 +
 .../hadoop/hive/shims/Hadoop20SShims.java       |     5 +-
 shims/0.23/pom.xml                              |     1 -
 .../apache/hadoop/hive/shims/Hadoop23Shims.java |    27 +-
 .../hive/thrift/HadoopThriftAuthBridge.java     |     3 +
 .../hive/ql/io/sarg/SearchArgumentFactory.java  |     5 +-
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |     7 +-
 testutils/ptest2/src/main/resources/log4j2.xml  |     5 +-
 821 files changed, 105344 insertions(+), 16997 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/6b3e82d3/bin/beeline
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/6b3e82d3/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/6b3e82d3/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------


[20/33] hive git commit: HIVE-11624:Beeline-cli: support hive.cli.print.header in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)

Posted by xu...@apache.org.
HIVE-11624:Beeline-cli: support hive.cli.print.header in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1f5c745c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1f5c745c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1f5c745c

Branch: refs/heads/master
Commit: 1f5c745cd0347321b0462e6a1a9d4b6ebf17599d
Parents: 80f6184
Author: Ke Jia <ke...@intel.com>
Authored: Tue Aug 25 01:57:47 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Tue Aug 25 01:57:47 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java   | 9 ++++++++-
 .../src/test/org/apache/hive/beeline/cli/TestHiveCli.java   | 7 +++++++
 2 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/1f5c745c/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index 72e9037..b6f244b 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -409,7 +409,14 @@ class BeeLineOpts implements Completer {
   }
 
   public boolean getShowHeader() {
-    return showHeader;
+    if (beeLine.isBeeLine()) {
+      return showHeader;
+    } else {
+      boolean header;
+      HiveConf conf = beeLine.getCommands().getHiveConf(true);
+      header = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_CLI_PRINT_HEADER);
+      return header;
+    }
   }
 
   public void setHeaderInterval(int headerInterval) {

http://git-wip-us.apache.org/repos/asf/hive/blob/1f5c745c/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index c7eaa8e..7f6ab13 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -95,6 +95,13 @@ public class TestHiveCli {
   }
 
   @Test
+  public void testSetHeaderValue() {
+    verifyCMD(
+        "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b string);\nset hive.cli.print.header=true;\n select * from test.testTbl;\n",
+        "testtbl.a testtbl.b", os, null, ERRNO_OK);
+  }
+
+  @Test
   public void testHelp() {
     verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS);
   }


[15/33] hive git commit: HIVE-11275: Merge branch 'master' into beeline-cl branch 07/14/2015i

Posted by xu...@apache.org.
HIVE-11275: Merge branch 'master' into beeline-cl branch 07/14/2015i


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/e6adedc1
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e6adedc1
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e6adedc1

Branch: refs/heads/master
Commit: e6adedc1ca83ee30492dc3c05b16aeb81e640aef
Parents: 0ac8f6c e61a1a9
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Wed Jul 15 21:33:21 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Wed Jul 15 21:33:21 2015 -0700

----------------------------------------------------------------------
 .gitignore                                      |    1 +
 .../org/apache/hive/beeline/BeeLineOpts.java    |    4 +-
 .../java/org/apache/hive/beeline/Commands.java  |   23 +-
 bin/ext/hplsql.sh                               |   37 +
 bin/hplsql                                      |   25 +
 bin/hplsql.cmd                                  |   58 +
 .../apache/hadoop/hive/common/FileUtils.java    |    9 +-
 .../hadoop/hive/common/JvmPauseMonitor.java     |    7 +-
 .../hive/common/metrics/LegacyMetrics.java      |   30 +-
 .../hive/common/metrics/common/Metrics.java     |   27 +
 .../common/metrics/common/MetricsConstant.java  |   35 +
 .../common/metrics/common/MetricsVariable.java  |   26 +
 .../metrics/metrics2/CodahaleMetrics.java       |   58 +-
 .../org/apache/hadoop/hive/conf/HiveConf.java   |   12 +-
 .../metrics/metrics2/TestCodahaleMetrics.java   |   42 +
 data/files/encoding-utf8.txt                    |   12 +
 data/files/encoding_iso-8859-1.txt              |    4 +
 .../results/positive/external_table_ppd.q.out   |    1 -
 .../positive/hbase_binary_storage_queries.q.out |    2 -
 .../src/test/results/positive/hbase_stats.q.out |    7 -
 .../test/results/positive/hbase_stats2.q.out    |    7 -
 .../test/results/positive/hbase_stats3.q.out    |   12 -
 .../positive/hbase_stats_empty_partition.q.out  |    2 -
 .../SemanticAnalysis/HCatSemanticAnalyzer.java  |    7 +-
 .../src/test/e2e/templeton/deployers/env.sh     |    5 +-
 hcatalog/streaming/pom.xml                      |    6 +
 .../streaming/AbstractRecordWriter.java         |    4 +-
 .../streaming/mutate/HiveConfFactory.java       |   63 +
 .../mutate/UgiMetaStoreClientFactory.java       |  102 +
 .../streaming/mutate/client/AcidTable.java      |  112 +
 .../mutate/client/AcidTableSerializer.java      |  100 +
 .../mutate/client/ClientException.java          |   15 +
 .../mutate/client/ConnectionException.java      |   15 +
 .../streaming/mutate/client/MutatorClient.java  |  149 +
 .../mutate/client/MutatorClientBuilder.java     |  115 +
 .../streaming/mutate/client/TableType.java      |   37 +
 .../streaming/mutate/client/Transaction.java    |  114 +
 .../mutate/client/TransactionException.java     |   15 +
 .../mutate/client/lock/HeartbeatFactory.java    |   30 +
 .../mutate/client/lock/HeartbeatTimerTask.java  |   66 +
 .../streaming/mutate/client/lock/Lock.java      |  305 ++
 .../mutate/client/lock/LockException.java       |   15 +
 .../mutate/client/lock/LockFailureListener.java |   26 +
 .../mutate/doc-files/system-overview.dot        |   27 +
 .../hive/hcatalog/streaming/mutate/package.html |  495 +++
 .../mutate/worker/BucketIdException.java        |   11 +
 .../mutate/worker/BucketIdResolver.java         |   11 +
 .../mutate/worker/BucketIdResolverImpl.java     |   76 +
 .../mutate/worker/CreatePartitionHelper.java    |   83 +
 .../mutate/worker/GroupRevisitedException.java  |   11 +
 .../mutate/worker/GroupingValidator.java        |   74 +
 .../streaming/mutate/worker/Mutator.java        |   21 +
 .../mutate/worker/MutatorCoordinator.java       |  281 ++
 .../worker/MutatorCoordinatorBuilder.java       |   76 +
 .../streaming/mutate/worker/MutatorFactory.java |   16 +
 .../streaming/mutate/worker/MutatorImpl.java    |   86 +
 .../streaming/mutate/worker/OperationType.java  |    7 +
 .../worker/PartitionCreationException.java      |   15 +
 .../mutate/worker/RecordInspector.java          |   11 +
 .../mutate/worker/RecordInspectorImpl.java      |   45 +
 .../mutate/worker/RecordSequenceException.java  |   11 +
 .../mutate/worker/SequenceValidator.java        |   49 +
 .../mutate/worker/WorkerException.java          |   15 +
 .../streaming/mutate/ExampleUseCase.java        |   82 +
 .../streaming/mutate/MutableRecord.java         |   50 +
 .../mutate/ReflectiveMutatorFactory.java        |   51 +
 .../streaming/mutate/StreamingAssert.java       |  191 +
 .../streaming/mutate/StreamingTestUtils.java    |  261 ++
 .../streaming/mutate/TestMutations.java         |  544 +++
 .../mutate/client/TestAcidTableSerializer.java  |   66 +
 .../mutate/client/TestMutatorClient.java        |  176 +
 .../mutate/client/TestTransaction.java          |   95 +
 .../client/lock/TestHeartbeatTimerTask.java     |  100 +
 .../streaming/mutate/client/lock/TestLock.java  |  310 ++
 .../mutate/worker/TestBucketIdResolverImpl.java |   38 +
 .../mutate/worker/TestGroupingValidator.java    |   70 +
 .../mutate/worker/TestMutatorCoordinator.java   |  234 ++
 .../mutate/worker/TestMutatorImpl.java          |   99 +
 .../mutate/worker/TestRecordInspectorImpl.java  |   31 +
 .../mutate/worker/TestSequenceValidator.java    |   91 +
 .../hive/hcatalog/api/HCatClientHMSImpl.java    |   14 +-
 .../hive/hcatalog/templeton/AppConfig.java      |   28 +-
 .../hcatalog/templeton/SecureProxySupport.java  |    6 +-
 hplsql/pom.xml                                  |  128 +
 .../antlr4/org/apache/hive/hplsql/Hplsql.g4     | 1426 ++++++++
 .../java/org/apache/hive/hplsql/Arguments.java  |  206 ++
 .../main/java/org/apache/hive/hplsql/Conf.java  |  175 +
 .../main/java/org/apache/hive/hplsql/Conn.java  |  243 ++
 .../java/org/apache/hive/hplsql/Converter.java  |   56 +
 .../main/java/org/apache/hive/hplsql/Copy.java  |  426 +++
 .../main/java/org/apache/hive/hplsql/Exec.java  | 1959 +++++++++++
 .../java/org/apache/hive/hplsql/Expression.java |  574 +++
 .../main/java/org/apache/hive/hplsql/File.java  |  132 +
 .../java/org/apache/hive/hplsql/Handler.java    |   41 +
 .../java/org/apache/hive/hplsql/Hplsql.java     |   25 +
 .../java/org/apache/hive/hplsql/Interval.java   |  109 +
 .../main/java/org/apache/hive/hplsql/Query.java |  155 +
 .../main/java/org/apache/hive/hplsql/Scope.java |   69 +
 .../java/org/apache/hive/hplsql/Select.java     |  411 +++
 .../java/org/apache/hive/hplsql/Signal.java     |   48 +
 .../main/java/org/apache/hive/hplsql/Stmt.java  | 1021 ++++++
 .../org/apache/hive/hplsql/StreamGobbler.java   |   51 +
 .../main/java/org/apache/hive/hplsql/Timer.java |   59 +
 .../main/java/org/apache/hive/hplsql/Udf.java   |  117 +
 .../main/java/org/apache/hive/hplsql/Utils.java |  289 ++
 .../main/java/org/apache/hive/hplsql/Var.java   |  430 +++
 .../apache/hive/hplsql/functions/Function.java  |  709 ++++
 .../hive/hplsql/functions/FunctionDatetime.java |  151 +
 .../hive/hplsql/functions/FunctionMisc.java     |  188 +
 .../hive/hplsql/functions/FunctionOra.java      |  231 ++
 .../hive/hplsql/functions/FunctionString.java   |  276 ++
 .../org/apache/hive/hplsql/TestHplsqlLocal.java |  330 ++
 hplsql/src/test/queries/local/add.sql           |    2 +
 hplsql/src/test/queries/local/assign.sql        |    7 +
 hplsql/src/test/queries/local/bool_expr.sql     |   47 +
 hplsql/src/test/queries/local/break.sql         |   10 +
 hplsql/src/test/queries/local/case.sql          |   35 +
 hplsql/src/test/queries/local/cast.sql          |    4 +
 hplsql/src/test/queries/local/char.sql          |    1 +
 hplsql/src/test/queries/local/coalesce.sql      |    4 +
 hplsql/src/test/queries/local/concat.sql        |    2 +
 .../src/test/queries/local/create_function.sql  |   11 +
 .../src/test/queries/local/create_function2.sql |   11 +
 .../src/test/queries/local/create_procedure.sql |    9 +
 hplsql/src/test/queries/local/date.sql          |    5 +
 hplsql/src/test/queries/local/dbms_output.sql   |    6 +
 hplsql/src/test/queries/local/declare.sql       |   16 +
 .../test/queries/local/declare_condition.sql    |    8 +
 .../test/queries/local/declare_condition2.sql   |   10 +
 hplsql/src/test/queries/local/decode.sql        |   10 +
 hplsql/src/test/queries/local/equal.sql         |   55 +
 hplsql/src/test/queries/local/exception.sql     |   14 +
 hplsql/src/test/queries/local/exception2.sql    |   10 +
 hplsql/src/test/queries/local/exception3.sql    |    5 +
 hplsql/src/test/queries/local/exception4.sql    |    7 +
 hplsql/src/test/queries/local/exception5.sql    |   10 +
 hplsql/src/test/queries/local/exit.sql          |   31 +
 hplsql/src/test/queries/local/expr.sql          |   21 +
 hplsql/src/test/queries/local/for_range.sql     |   20 +
 hplsql/src/test/queries/local/if.sql            |   68 +
 hplsql/src/test/queries/local/instr.sql         |   49 +
 hplsql/src/test/queries/local/interval.sql      |   15 +
 hplsql/src/test/queries/local/lang.sql          |   57 +
 hplsql/src/test/queries/local/leave.sql         |   33 +
 hplsql/src/test/queries/local/len.sql           |    1 +
 hplsql/src/test/queries/local/length.sql        |    1 +
 hplsql/src/test/queries/local/lower.sql         |    1 +
 hplsql/src/test/queries/local/nvl.sql           |    4 +
 hplsql/src/test/queries/local/nvl2.sql          |    2 +
 hplsql/src/test/queries/local/print.sql         |    5 +
 hplsql/src/test/queries/local/return.sql        |    3 +
 hplsql/src/test/queries/local/seterror.sql      |   10 +
 hplsql/src/test/queries/local/sub.sql           |    1 +
 hplsql/src/test/queries/local/substr.sql        |    2 +
 hplsql/src/test/queries/local/substring.sql     |    8 +
 hplsql/src/test/queries/local/timestamp.sql     |    4 +
 hplsql/src/test/queries/local/timestamp_iso.sql |    2 +
 hplsql/src/test/queries/local/to_char.sql       |    1 +
 hplsql/src/test/queries/local/to_timestamp.sql  |    5 +
 hplsql/src/test/queries/local/trim.sql          |    1 +
 hplsql/src/test/queries/local/twopipes.sql      |    1 +
 hplsql/src/test/queries/local/upper.sql         |    1 +
 hplsql/src/test/queries/local/values_into.sql   |    6 +
 hplsql/src/test/queries/local/while.sql         |   20 +
 hplsql/src/test/results/local/add.out.txt       |    2 +
 hplsql/src/test/results/local/assign.out.txt    |    8 +
 hplsql/src/test/results/local/bool_expr.out.txt |   32 +
 hplsql/src/test/results/local/break.out.txt     |   29 +
 hplsql/src/test/results/local/case.out.txt      |   12 +
 hplsql/src/test/results/local/cast.out.txt      |    8 +
 hplsql/src/test/results/local/char.out.txt      |    1 +
 hplsql/src/test/results/local/coalesce.out.txt  |    4 +
 hplsql/src/test/results/local/concat.out.txt    |    2 +
 .../test/results/local/create_function.out.txt  |    9 +
 .../test/results/local/create_function2.out.txt |   10 +
 .../test/results/local/create_procedure.out.txt |    8 +
 hplsql/src/test/results/local/date.out.txt      |    4 +
 .../src/test/results/local/dbms_output.out.txt  |    3 +
 hplsql/src/test/results/local/declare.out.txt   |   13 +
 .../results/local/declare_condition.out.txt     |    7 +
 .../results/local/declare_condition2.out.txt    |   12 +
 hplsql/src/test/results/local/decode.out.txt    |   13 +
 hplsql/src/test/results/local/equal.out.txt     |   48 +
 hplsql/src/test/results/local/exception.out.txt |   13 +
 .../src/test/results/local/exception2.out.txt   |    5 +
 hplsql/src/test/results/local/exit.out.txt      |   42 +
 hplsql/src/test/results/local/expr.out.txt      |   29 +
 hplsql/src/test/results/local/for_range.out.txt |   65 +
 hplsql/src/test/results/local/if.out.txt        |   40 +
 hplsql/src/test/results/local/instr.out.txt     |   33 +
 hplsql/src/test/results/local/interval.out.txt  |   11 +
 hplsql/src/test/results/local/lang.out.txt      |   34 +
 hplsql/src/test/results/local/leave.out.txt     |   42 +
 hplsql/src/test/results/local/len.out.txt       |    1 +
 hplsql/src/test/results/local/length.out.txt    |    1 +
 hplsql/src/test/results/local/lower.out.txt     |    1 +
 hplsql/src/test/results/local/nvl.out.txt       |    4 +
 hplsql/src/test/results/local/nvl2.out.txt      |    2 +
 .../test/results/local/plhqlexception.out.txt   |    6 +
 .../test/results/local/plhqlexception1.out.txt  |   10 +
 .../test/results/local/plhqlexception2.out.txt  |  106 +
 hplsql/src/test/results/local/print.out.txt     |    6 +
 hplsql/src/test/results/local/return.out.txt    |    3 +
 .../results/local/select_conversion.out.txt     |    9 +
 hplsql/src/test/results/local/seterror.out.txt  |    6 +
 hplsql/src/test/results/local/sub.out.txt       |    1 +
 hplsql/src/test/results/local/substr.out.txt    |    2 +
 hplsql/src/test/results/local/substring.out.txt |    8 +
 hplsql/src/test/results/local/timestamp.out.txt |    4 +
 .../test/results/local/timestamp_iso.out.txt    |    2 +
 hplsql/src/test/results/local/to_char.out.txt   |    1 +
 .../src/test/results/local/to_timestamp.out.txt |    4 +
 hplsql/src/test/results/local/trim.out.txt      |    1 +
 hplsql/src/test/results/local/twopipes.out.txt  |    1 +
 hplsql/src/test/results/local/upper.out.txt     |    1 +
 .../src/test/results/local/values_into.out.txt  |   11 +
 hplsql/src/test/results/local/while.out.txt     |   72 +
 .../hive/metastore/TestMetaStoreMetrics.java    |   66 +-
 .../hive/beeline/TestBeeLineWithArgs.java       |   87 +
 .../test/resources/testconfiguration.properties |    2 +
 .../org/apache/hive/jdbc/HiveConnection.java    |   15 +-
 .../hive/metastore/AggregateStatsCache.java     |    5 +-
 .../hadoop/hive/metastore/HiveMetaStore.java    |   74 +-
 .../hive/metastore/HiveMetaStoreClient.java     |    7 +-
 .../hadoop/hive/metastore/IMetaStoreClient.java |   57 +-
 .../hive/metastore/MetaStoreDirectSql.java      |   56 +-
 .../hive/metastore/MetaStoreSchemaInfo.java     |    6 +-
 .../hadoop/hive/metastore/MetaStoreUtils.java   |   26 -
 .../hadoop/hive/metastore/ObjectStore.java      | 1894 +++++-----
 .../hive/metastore/PartitionDropOptions.java    |    6 -
 .../hadoop/hive/metastore/ProtectMode.java      |   97 -
 .../hive/metastore/tools/HiveMetaTool.java      |   23 +-
 .../hadoop/hive/metastore/TestObjectStore.java  |  230 ++
 pom.xml                                         |    9 +-
 ql/pom.xml                                      |    5 +
 .../java/org/apache/hadoop/hive/ql/Driver.java  |   34 +-
 .../org/apache/hadoop/hive/ql/ErrorMsg.java     |   22 +-
 .../org/apache/hadoop/hive/ql/QueryPlan.java    |    9 +-
 .../hive/ql/exec/CommonMergeJoinOperator.java   |   76 +-
 .../org/apache/hadoop/hive/ql/exec/DDLTask.java |  207 +-
 .../hadoop/hive/ql/exec/FilterOperator.java     |    3 +-
 .../hive/ql/exec/mr/ExecMapperContext.java      |   10 +-
 .../ql/exec/spark/SparkReduceRecordHandler.java |   29 +-
 .../hive/ql/exec/tez/HashTableLoader.java       |   19 +-
 .../ql/exec/tez/MergeFileRecordProcessor.java   |   42 +-
 .../hive/ql/exec/tez/ReduceRecordSource.java    |   33 +-
 .../ql/exec/vector/VectorizedBatchUtil.java     |   41 +-
 .../ql/exec/vector/VectorizedRowBatchCtx.java   |    2 +-
 .../mapjoin/VectorMapJoinRowBytesContainer.java |    9 +-
 .../hadoop/hive/ql/hooks/HookContext.java       |   12 +
 .../hadoop/hive/ql/hooks/LineageInfo.java       |   96 +
 .../hadoop/hive/ql/hooks/LineageLogger.java     |  441 +++
 .../hadoop/hive/ql/hooks/WriteEntity.java       |    6 +-
 .../hadoop/hive/ql/io/AcidInputFormat.java      |   60 +-
 .../hadoop/hive/ql/io/AcidOutputFormat.java     |   49 +-
 .../org/apache/hadoop/hive/ql/io/AcidUtils.java |  152 +-
 .../hadoop/hive/ql/io/FileFormatException.java  |   30 +
 .../ql/io/HiveContextAwareRecordReader.java     |    2 +-
 .../hadoop/hive/ql/io/HiveFileFormatUtils.java  |   19 +-
 .../org/apache/hadoop/hive/ql/io/IOContext.java |   43 -
 .../apache/hadoop/hive/ql/io/IOContextMap.java  |   81 +
 .../apache/hadoop/hive/ql/io/orc/FileDump.java  |    7 +-
 .../hadoop/hive/ql/io/orc/MemoryManager.java    |   39 +-
 .../apache/hadoop/hive/ql/io/orc/OrcFile.java   |   15 +-
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java   |   60 +-
 .../hive/ql/io/orc/OrcNewInputFormat.java       |   16 +-
 .../hadoop/hive/ql/io/orc/OrcNewSplit.java      |   13 +-
 .../hive/ql/io/orc/OrcRawRecordMerger.java      |   66 +-
 .../hadoop/hive/ql/io/orc/OrcRecordUpdater.java |   63 +-
 .../apache/hadoop/hive/ql/io/orc/OrcSplit.java  |   16 +-
 .../hadoop/hive/ql/io/orc/ReaderImpl.java       |   19 +-
 .../hive/ql/io/orc/RecordReaderFactory.java     |    7 +-
 .../ql/io/orc/RunLengthIntegerReaderV2.java     |    8 +-
 .../hadoop/hive/ql/io/orc/WriterImpl.java       |   67 +-
 .../read/ParquetRecordReaderWrapper.java        |  102 +-
 .../ql/io/parquet/write/DataWritableWriter.java |  638 ++--
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |  343 +-
 .../hadoop/hive/ql/lockmgr/DbTxnManager.java    |   20 +-
 .../hadoop/hive/ql/lockmgr/DummyTxnManager.java |    4 +
 .../hadoop/hive/ql/lockmgr/HiveLockObject.java  |   35 +
 .../hadoop/hive/ql/lockmgr/HiveTxnManager.java  |   50 +-
 .../hive/ql/lockmgr/HiveTxnManagerImpl.java     |  140 +
 .../ql/log/NoDeleteRollingFileAppender.java     |  176 +
 .../apache/hadoop/hive/ql/log/PerfLogger.java   |    1 -
 .../apache/hadoop/hive/ql/metadata/Hive.java    |   64 +-
 .../hadoop/hive/ql/metadata/HiveUtils.java      |    8 -
 .../hadoop/hive/ql/metadata/Partition.java      |   51 -
 .../apache/hadoop/hive/ql/metadata/Table.java   |   65 +-
 .../formatting/MetaDataFormatUtils.java         |   24 +-
 .../BucketingSortingReduceSinkOptimizer.java    |    4 +
 .../hive/ql/optimizer/ConstantPropagate.java    |    1 +
 .../ql/optimizer/ConstantPropagateProcCtx.java  |   10 +-
 .../optimizer/ConstantPropagateProcFactory.java |    4 +-
 .../optimizer/RemoveDynamicPruningBySize.java   |    2 +-
 .../ql/optimizer/calcite/HiveCalciteUtil.java   |   25 +-
 .../ql/optimizer/calcite/HiveRelOptUtil.java    |   73 +-
 .../calcite/cost/HiveOnTezCostModel.java        |   25 +-
 .../calcite/reloperators/HiveJoin.java          |   25 +-
 .../calcite/reloperators/HiveMultiJoin.java     |   37 +-
 .../calcite/reloperators/HiveSemiJoin.java      |   57 +-
 .../rules/HiveInsertExchange4JoinRule.java      |   13 +-
 .../calcite/rules/HiveJoinAddNotNullRule.java   |   16 +-
 .../calcite/rules/HiveJoinCommuteRule.java      |   96 +
 .../HiveJoinPushTransitivePredicatesRule.java   |  139 +
 .../calcite/rules/HiveJoinToMultiJoinRule.java  |  106 +-
 .../calcite/rules/HiveRelFieldTrimmer.java      |    3 +-
 .../calcite/stats/HiveRelMdSelectivity.java     |   11 +-
 .../calcite/translator/ASTConverter.java        |   20 +-
 .../calcite/translator/ExprNodeConverter.java   |   17 +
 .../calcite/translator/HiveOpConverter.java     |  161 +-
 .../translator/HiveOpConverterPostProc.java     |   34 +-
 .../translator/PlanModifierForASTConv.java      |   12 +-
 .../ql/optimizer/lineage/ExprProcFactory.java   |   98 +
 .../hive/ql/optimizer/lineage/Generator.java    |   16 +-
 .../hive/ql/optimizer/lineage/LineageCtx.java   |   79 +-
 .../ql/optimizer/lineage/OpProcFactory.java     |  228 +-
 .../ql/optimizer/physical/MemoryDecider.java    |  288 ++
 .../ql/optimizer/physical/SerializeFilter.java  |  178 +
 .../stats/annotation/StatsRulesProcFactory.java |   42 +-
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |   78 +-
 .../hive/ql/parse/DDLSemanticAnalyzer.java      |  112 +-
 .../apache/hadoop/hive/ql/parse/EximUtil.java   |   31 +-
 .../hadoop/hive/ql/parse/GenTezProcContext.java |    8 +
 .../hadoop/hive/ql/parse/GenTezUtils.java       |   59 +-
 .../apache/hadoop/hive/ql/parse/GenTezWork.java |   10 +-
 .../org/apache/hadoop/hive/ql/parse/HiveLexer.g |    5 -
 .../apache/hadoop/hive/ql/parse/HiveParser.g    |   38 +-
 .../hive/ql/parse/LoadSemanticAnalyzer.java     |   79 +-
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |   96 +-
 .../hive/ql/parse/SemanticAnalyzerFactory.java  |    8 +-
 .../hadoop/hive/ql/parse/TezCompiler.java       |   28 +-
 .../hive/ql/plan/AbstractOperatorDesc.java      |   14 +
 .../hadoop/hive/ql/plan/AlterTableDesc.java     |   20 +-
 .../apache/hadoop/hive/ql/plan/BaseWork.java    |    7 +
 .../hadoop/hive/ql/plan/DropTableDesc.java      |   26 +-
 .../hadoop/hive/ql/plan/FileSinkDesc.java       |   27 +-
 .../apache/hadoop/hive/ql/plan/FilterDesc.java  |   14 +
 .../hadoop/hive/ql/plan/HiveOperation.java      |    2 -
 .../apache/hadoop/hive/ql/plan/JoinDesc.java    |    4 +
 .../hadoop/hive/ql/plan/MergeJoinWork.java      |    8 +-
 .../hadoop/hive/ql/plan/OperatorDesc.java       |    2 +
 .../hadoop/hive/ql/plan/TableScanDesc.java      |   15 +-
 .../authorization/plugin/HiveAuthorizer.java    |   11 +
 .../plugin/HiveAuthorizerImpl.java              |   22 +
 .../authorization/plugin/HiveV1Authorizer.java  |   20 +
 .../hadoop/hive/ql/session/LineageState.java    |    9 +-
 .../hadoop/hive/ql/session/SessionState.java    |   18 +-
 .../apache/hadoop/hive/ql/stats/StatsUtils.java |   11 +
 .../hive/ql/txn/compactor/CompactorMR.java      |    4 +-
 .../ql/udf/generic/GenericUDAFCollectList.java  |    5 -
 .../ql/udf/generic/GenericUDAFCollectSet.java   |    5 -
 .../ql/udf/generic/GenericUDAFComputeStats.java |    4 +-
 .../hive/ql/udf/generic/GenericUDAFCount.java   |    4 -
 .../ql/udf/generic/GenericUDAFCovariance.java   |    4 -
 .../ql/udf/generic/GenericUDAFCumeDist.java     |    4 -
 .../ql/udf/generic/GenericUDAFDenseRank.java    |    4 -
 .../generic/GenericUDAFHistogramNumeric.java    |    2 +-
 .../generic/GenericUDAFPercentileApprox.java    |    2 +-
 .../udf/generic/NumDistinctValueEstimator.java  |   18 +
 .../hive/ql/udf/generic/NumericHistogram.java   |   14 +
 .../hadoop/hive/ql/util/JavaDataModel.java      |   30 -
 .../hive/ql/exec/TestFileSinkOperator.java      |    3 +-
 .../hadoop/hive/ql/exec/TestOperators.java      |    3 +-
 .../apache/hadoop/hive/ql/io/TestAcidUtils.java |   73 +-
 .../ql/io/TestHiveBinarySearchRecordReader.java |    2 +-
 .../hadoop/hive/ql/io/TestIOContextMap.java     |  133 +
 .../hadoop/hive/ql/io/orc/TestFileDump.java     |   50 +
 .../hive/ql/io/orc/TestInputOutputFormat.java   |  114 +-
 .../hive/ql/io/orc/TestOrcRawRecordMerger.java  |   57 +-
 .../hive/ql/io/orc/TestOrcRecordUpdater.java    |    6 +-
 .../hive/ql/io/sarg/TestSearchArgumentImpl.java |   32 +-
 .../parse/TestUpdateDeleteSemanticAnalyzer.java |    2 +-
 .../hive/ql/txn/compactor/CompactorTest.java    |   20 +-
 .../hive/ql/txn/compactor/TestCleaner.java      |    8 +-
 .../hive/ql/txn/compactor/TestCleaner2.java     |   14 +
 .../hive/ql/txn/compactor/TestInitiator.java    |    4 +
 .../hive/ql/txn/compactor/TestWorker.java       |   49 +-
 .../hive/ql/txn/compactor/TestWorker2.java      |   16 +
 .../alter_partition_invalidspec.q               |    8 -
 .../clientnegative/alter_partition_nodrop.q     |    9 -
 .../alter_partition_nodrop_table.q              |    9 -
 .../clientnegative/alter_partition_offline.q    |   11 -
 .../clientnegative/drop_table_failure3.q        |   12 -
 .../queries/clientnegative/exchange_partition.q |   19 +
 .../queries/clientnegative/load_orc_negative1.q |    4 +
 .../queries/clientnegative/load_orc_negative2.q |    6 +
 .../clientnegative/load_orc_negative_part.q     |   14 +
 .../queries/clientnegative/protectmode_part.q   |   15 -
 .../queries/clientnegative/protectmode_part1.q  |   21 -
 .../queries/clientnegative/protectmode_part2.q  |    9 -
 .../clientnegative/protectmode_part_no_drop.q   |   10 -
 .../clientnegative/protectmode_part_no_drop2.q  |   11 -
 .../queries/clientnegative/protectmode_tbl1.q   |    8 -
 .../queries/clientnegative/protectmode_tbl2.q   |   12 -
 .../queries/clientnegative/protectmode_tbl3.q   |   10 -
 .../queries/clientnegative/protectmode_tbl4.q   |   15 -
 .../queries/clientnegative/protectmode_tbl5.q   |   15 -
 .../queries/clientnegative/protectmode_tbl6.q   |    8 -
 .../queries/clientnegative/protectmode_tbl7.q   |   13 -
 .../queries/clientnegative/protectmode_tbl8.q   |   13 -
 .../clientnegative/protectmode_tbl_no_drop.q    |    9 -
 .../test/queries/clientnegative/sa_fail_hook3.q |    4 -
 .../alter_partition_protect_mode.q              |   26 -
 .../queries/clientpositive/ba_table_union.q     |    2 +-
 .../queries/clientpositive/cbo_rp_auto_join0.q  |    1 +
 .../queries/clientpositive/cbo_rp_auto_join1.q  |    1 +
 .../test/queries/clientpositive/cbo_rp_join0.q  |    1 +
 .../test/queries/clientpositive/constprog_dpp.q |   17 +
 ql/src/test/queries/clientpositive/cp_sel.q     |   11 +
 .../drop_partitions_ignore_protection.q         |   10 -
 .../queries/clientpositive/encoding_nonutf8.q   |    7 +
 .../encryption_insert_partition_static.q        |   17 -
 .../queries/clientpositive/fouter_join_ppr.q    |   73 +
 .../insert_non_utf8_encoding_table.q            |   20 +
 ql/src/test/queries/clientpositive/lineage2.q   |  116 +
 ql/src/test/queries/clientpositive/lineage3.q   |  162 +
 ql/src/test/queries/clientpositive/load_orc.q   |   10 +
 .../test/queries/clientpositive/load_orc_part.q |   15 +
 ql/src/test/queries/clientpositive/mrr.q        |    2 +
 .../test/queries/clientpositive/protectmode.q   |   63 -
 .../test/queries/clientpositive/protectmode2.q  |   23 -
 .../queries/clientpositive/select_same_col.q    |    5 +-
 .../clientpositive/vectorization_part_varchar.q |    7 +
 .../resources/orc-file-dump-bloomfilter.out     |   92 +-
 .../resources/orc-file-dump-bloomfilter2.out    |   92 +-
 .../orc-file-dump-dictionary-threshold.out      |   76 +-
 ql/src/test/resources/orc-file-dump.json        |  108 +-
 ql/src/test/resources/orc-file-dump.out         |   84 +-
 ql/src/test/resources/orc-file-has-null.out     |   62 +-
 .../alter_numbuckets_partitioned_table.q.out    |    8 -
 .../results/beelinepositive/create_like.q.out   |    3 -
 .../results/beelinepositive/create_like2.q.out  |    1 -
 .../beelinepositive/create_like_view.q.out      |    4 -
 .../beelinepositive/create_skewed_table1.q.out  |    3 -
 .../results/beelinepositive/create_view.q.out   |   14 -
 .../create_view_partitioned.q.out               |    3 -
 ql/src/test/results/beelinepositive/ctas.q.out  |    5 -
 .../describe_formatted_view_partitioned.q.out   |    1 -
 .../beelinepositive/describe_table.q.out        |    3 -
 .../test/results/beelinepositive/merge3.q.out   |    1 -
 .../part_inherit_tbl_props.q.out                |    1 -
 .../part_inherit_tbl_props_empty.q.out          |    1 -
 .../part_inherit_tbl_props_with_star.q.out      |    1 -
 .../results/beelinepositive/protectmode2.q.out  |    2 -
 .../test/results/beelinepositive/stats1.q.out   |    2 -
 .../test/results/beelinepositive/stats10.q.out  |    3 -
 .../test/results/beelinepositive/stats11.q.out  |    4 -
 .../test/results/beelinepositive/stats12.q.out  |    5 -
 .../test/results/beelinepositive/stats13.q.out  |    6 -
 .../test/results/beelinepositive/stats14.q.out  |    5 -
 .../test/results/beelinepositive/stats15.q.out  |    5 -
 .../test/results/beelinepositive/stats16.q.out  |    2 -
 .../test/results/beelinepositive/stats18.q.out  |    2 -
 .../test/results/beelinepositive/stats2.q.out   |    2 -
 .../test/results/beelinepositive/stats3.q.out   |    2 -
 .../test/results/beelinepositive/stats4.q.out   |    6 -
 .../test/results/beelinepositive/stats5.q.out   |    1 -
 .../test/results/beelinepositive/stats6.q.out   |    5 -
 .../test/results/beelinepositive/stats7.q.out   |    3 -
 .../test/results/beelinepositive/stats8.q.out   |   10 -
 .../test/results/beelinepositive/stats9.q.out   |    1 -
 .../beelinepositive/stats_empty_partition.q.out |    1 -
 .../clientnegative/alter_file_format.q.out      |    1 -
 .../alter_view_as_select_with_partition.q.out   |    1 -
 .../clientnegative/exchange_partition.q.out     |   54 +
 .../clientnegative/load_orc_negative1.q.out     |    9 +
 .../clientnegative/load_orc_negative2.q.out     |   25 +
 .../clientnegative/load_orc_negative_part.q.out |   52 +
 .../stats_partialscan_autogether.q.out          |    2 -
 .../clientnegative/udf_assert_true.q.out        |   12 +-
 .../clientnegative/udf_assert_true2.q.out       |    6 +-
 .../clientpositive/alter_file_format.q.out      |   19 -
 .../clientpositive/alter_merge_orc.q.out        |   24 +-
 .../clientpositive/alter_merge_stats_orc.q.out  |   30 +-
 .../alter_numbuckets_partitioned_table.q.out    |   16 -
 .../alter_numbuckets_partitioned_table2.q.out   |   27 -
 ...lter_numbuckets_partitioned_table2_h23.q.out |   27 -
 ...alter_numbuckets_partitioned_table_h23.q.out |   16 -
 .../alter_partition_change_col.q.out            |    8 +-
 .../alter_partition_clusterby_sortby.q.out      |    7 -
 .../clientpositive/alter_skewed_table.q.out     |    6 -
 .../clientpositive/alter_table_cascade.q.out    |    8 +-
 .../clientpositive/alter_table_not_sorted.q.out |    2 -
 .../clientpositive/alter_table_serde2.q.out     |    6 -
 .../clientpositive/alter_view_as_select.q.out   |    3 -
 .../clientpositive/annotate_stats_groupby.q.out |   28 +-
 .../annotate_stats_groupby2.q.out               |    8 +-
 .../annotate_stats_join_pkfk.q.out              |   20 +-
 .../clientpositive/annotate_stats_part.q.out    |    6 +-
 .../clientpositive/annotate_stats_select.q.out  |   52 +-
 .../clientpositive/annotate_stats_table.q.out   |    4 +-
 .../clientpositive/authorization_index.q.out    |    1 -
 .../results/clientpositive/auto_join12.q.out    |   54 +-
 .../results/clientpositive/auto_join13.q.out    |   26 +-
 .../results/clientpositive/auto_join5.q.out     |    8 +-
 .../results/clientpositive/auto_join8.q.out     |    2 +-
 .../auto_join_without_localtask.q.out           |  218 +-
 .../results/clientpositive/ba_table_union.q.out |   16 +-
 .../test/results/clientpositive/bucket5.q.out   |    1 -
 .../clientpositive/cbo_rp_auto_join0.q.out      |   32 +-
 .../clientpositive/cbo_rp_auto_join1.q.out      |  619 ++--
 .../results/clientpositive/cbo_rp_join0.q.out   |  185 +-
 .../test/results/clientpositive/cluster.q.out   |   20 +-
 .../test/results/clientpositive/combine2.q.out  |   16 +-
 .../constantPropagateForSubQuery.q.out          |   38 +-
 .../clientpositive/correlationoptimizer15.q.out |  120 +-
 .../clientpositive/correlationoptimizer6.q.out  | 1011 +++---
 ql/src/test/results/clientpositive/cp_sel.q.out |  195 ++
 .../create_alter_list_bucketing_table1.q.out    |    7 -
 .../results/clientpositive/create_like.q.out    |    9 -
 .../results/clientpositive/create_like2.q.out   |    1 -
 .../clientpositive/create_like_tbl_props.q.out  |    5 -
 .../clientpositive/create_like_view.q.out       |    4 -
 .../clientpositive/create_or_replace_view.q.out |    5 -
 .../clientpositive/create_skewed_table1.q.out   |    3 -
 .../results/clientpositive/create_view.q.out    |   14 -
 .../create_view_partitioned.q.out               |    3 -
 .../clientpositive/create_view_translate.q.out  |    2 -
 .../results/clientpositive/cross_join.q.out     |    8 +-
 ql/src/test/results/clientpositive/ctas.q.out   |    5 -
 .../results/clientpositive/ctas_colname.q.out   |    7 -
 .../results/clientpositive/ctas_hadoop20.q.out  |    5 -
 .../ctas_uses_database_location.q.out           |    1 -
 .../clientpositive/database_location.q.out      |    2 -
 .../results/clientpositive/decimal_serde.q.out  |    2 -
 .../clientpositive/default_file_format.q.out    |    5 -
 .../describe_comment_indent.q.out               |    1 -
 .../describe_comment_nonascii.q.out             |    1 -
 .../describe_formatted_view_partitioned.q.out   |    2 -
 .../clientpositive/describe_syntax.q.out        |    6 -
 .../results/clientpositive/describe_table.q.out |    7 -
 .../dynpart_sort_opt_vectorization.q.out        |   48 +-
 .../dynpart_sort_optimization.q.out             |   32 -
 .../dynpart_sort_optimization2.q.out            |   32 +-
 .../dynpart_sort_optimization_acid.q.out        |   60 +-
 .../clientpositive/encoding_nonutf8.q.out       |   36 +
 .../encryption_insert_partition_dynamic.q.out   |   18 +-
 .../encryption_insert_partition_static.q.out    |  739 +---
 .../encrypted/encryption_insert_values.q.out    |    1 -
 .../clientpositive/exim_hidden_files.q.out      |    1 -
 .../extrapolate_part_stats_full.q.out           |   24 +-
 .../extrapolate_part_stats_partial.q.out        |   76 +-
 .../extrapolate_part_stats_partial_ndv.q.out    |   38 +-
 .../clientpositive/fouter_join_ppr.q.out        | 1694 +++++++++
 .../clientpositive/groupby_sort_1_23.q.out      |   10 +-
 .../clientpositive/groupby_sort_skew_1_23.q.out |   10 +-
 .../clientpositive/index_auto_mult_tables.q.out |   12 +
 .../index_auto_mult_tables_compact.q.out        |    9 +
 .../clientpositive/index_auto_partitioned.q.out |    9 +
 .../clientpositive/index_auto_update.q.out      |    2 +
 .../results/clientpositive/index_bitmap.q.out   |   24 +
 .../index_bitmap_auto_partitioned.q.out         |   12 +
 .../clientpositive/index_bitmap_rc.q.out        |   24 +
 .../results/clientpositive/index_compact.q.out  |   18 +
 .../clientpositive/index_compact_2.q.out        |   18 +
 .../clientpositive/index_skewtable.q.out        |    1 -
 .../clientpositive/infer_bucket_sort.q.out      |   50 -
 .../infer_bucket_sort_bucketed_table.q.out      |    2 -
 .../infer_bucket_sort_convert_join.q.out        |    4 -
 .../infer_bucket_sort_dyn_part.q.out            |   16 -
 .../infer_bucket_sort_grouping_operators.q.out  |   12 -
 .../infer_bucket_sort_list_bucket.q.out         |    4 -
 .../infer_bucket_sort_map_operators.q.out       |    8 -
 .../infer_bucket_sort_merge.q.out               |    4 -
 .../infer_bucket_sort_multi_insert.q.out        |   16 -
 .../infer_bucket_sort_num_buckets.q.out         |    4 -
 .../infer_bucket_sort_reducers_power_two.q.out  |   12 -
 ql/src/test/results/clientpositive/input7.q.out |    2 +-
 .../results/clientpositive/input_part10.q.out   |    5 +-
 .../results/clientpositive/insert_into5.q.out   |    5 +-
 .../insert_non_utf8_encoding_table.q.out        |   89 +
 ql/src/test/results/clientpositive/join12.q.out |   28 +-
 ql/src/test/results/clientpositive/join13.q.out |   32 +-
 ql/src/test/results/clientpositive/join32.q.out |   36 +-
 .../clientpositive/join32_lessSize.q.out        |  118 +-
 ql/src/test/results/clientpositive/join33.q.out |   36 +-
 ql/src/test/results/clientpositive/join34.q.out |    2 +-
 ql/src/test/results/clientpositive/join35.q.out |    2 +-
 ql/src/test/results/clientpositive/join5.q.out  |   20 +-
 ql/src/test/results/clientpositive/join8.q.out  |    2 +-
 .../clientpositive/join_alt_syntax.q.out        |  104 +-
 .../clientpositive/join_cond_pushdown_1.q.out   |   42 +-
 .../clientpositive/join_cond_pushdown_2.q.out   |   62 +-
 .../clientpositive/join_cond_pushdown_3.q.out   |   42 +-
 .../clientpositive/join_cond_pushdown_4.q.out   |   62 +-
 .../results/clientpositive/join_merging.q.out   |  117 +-
 .../results/clientpositive/join_nulls.q.out     |    2 +-
 .../results/clientpositive/lateral_view.q.out   |   68 +-
 .../clientpositive/lateral_view_explode2.q.out  |    6 +-
 .../clientpositive/lateral_view_noalias.q.out   |   22 +-
 .../results/clientpositive/lb_fs_stats.q.out    |    2 -
 .../results/clientpositive/limit_pushdown.q.out |   98 +-
 .../test/results/clientpositive/lineage1.q.out  |    4 +-
 .../test/results/clientpositive/lineage2.q.out  | 2905 ++++++++++++++++
 .../test/results/clientpositive/lineage3.q.out  | 2482 +++++++++++++
 .../clientpositive/list_bucket_dml_1.q.out      |    4 -
 .../list_bucket_dml_10.q.java1.7.out            |    2 -
 .../list_bucket_dml_10.q.java1.8.out            |    2 -
 .../list_bucket_dml_11.q.java1.7.out            |    2 -
 .../list_bucket_dml_11.q.java1.8.out            |    2 -
 .../list_bucket_dml_12.q.java1.7.out            |    4 +-
 .../list_bucket_dml_12.q.java1.8.out            |    2 -
 .../list_bucket_dml_13.q.java1.7.out            |    4 +-
 .../list_bucket_dml_13.q.java1.8.out            |    2 -
 .../clientpositive/list_bucket_dml_14.q.out     |    1 -
 .../list_bucket_dml_2.q.java1.7.out             |    2 -
 .../list_bucket_dml_2.q.java1.8.out             |    2 -
 .../clientpositive/list_bucket_dml_3.q.out      |    2 -
 .../list_bucket_dml_4.q.java1.7.out             |    4 -
 .../list_bucket_dml_4.q.java1.8.out             |    4 -
 .../list_bucket_dml_5.q.java1.7.out             |    4 -
 .../list_bucket_dml_5.q.java1.8.out             |    4 -
 .../list_bucket_dml_6.q.java1.7.out             |    8 -
 .../list_bucket_dml_6.q.java1.8.out             |    8 -
 .../clientpositive/list_bucket_dml_7.q.out      |    8 -
 .../list_bucket_dml_8.q.java1.7.out             |    6 -
 .../list_bucket_dml_8.q.java1.8.out             |    6 -
 .../list_bucket_dml_9.q.java1.7.out             |    4 -
 .../list_bucket_dml_9.q.java1.8.out             |    4 -
 .../list_bucket_query_multiskew_1.q.out         |    2 -
 .../list_bucket_query_multiskew_2.q.out         |    2 -
 .../list_bucket_query_multiskew_3.q.out         |    6 -
 .../list_bucket_query_oneskew_1.q.out           |    2 -
 .../list_bucket_query_oneskew_2.q.out           |    2 -
 .../list_bucket_query_oneskew_3.q.out           |    2 -
 .../clientpositive/load_dyn_part13.q.out        |    8 +-
 .../clientpositive/load_dyn_part14.q.out        |   63 +-
 .../test/results/clientpositive/load_orc.q.out  |   43 +
 .../results/clientpositive/load_orc_part.q.out  |   70 +
 .../clientpositive/louter_join_ppr.q.out        |   74 +-
 .../clientpositive/mapjoin_mapjoin.q.out        |  120 +-
 ql/src/test/results/clientpositive/merge3.q.out |    1 -
 .../results/clientpositive/multiMapJoin1.q.out  |   10 +-
 .../results/clientpositive/multi_insert.q.out   |   32 +-
 ...i_insert_move_tasks_share_dependencies.q.out |   32 +-
 .../results/clientpositive/optional_outer.q.out |   36 +-
 .../results/clientpositive/orc_analyze.q.out    |   48 -
 .../results/clientpositive/orc_create.q.out     |    6 -
 .../orc_dictionary_threshold.q.out              |    2 +-
 .../clientpositive/outer_join_ppr.q.java1.7.out |  168 +-
 .../clientpositive/parallel_orderby.q.out       |    2 -
 .../parquet_array_null_element.q.out            |    1 -
 .../results/clientpositive/parquet_create.q.out |    1 -
 .../clientpositive/parquet_partitioned.q.out    |    1 -
 .../results/clientpositive/parquet_serde.q.out  |    5 -
 .../clientpositive/part_inherit_tbl_props.q.out |    2 -
 .../part_inherit_tbl_props_empty.q.out          |    2 -
 .../part_inherit_tbl_props_with_star.q.out      |    2 -
 .../partition_coltype_literals.q.out            |   16 -
 .../results/clientpositive/ppd_gby_join.q.out   |  104 +-
 .../test/results/clientpositive/ppd_join.q.out  |  106 +-
 .../test/results/clientpositive/ppd_join2.q.out |   88 +-
 .../test/results/clientpositive/ppd_join3.q.out |  114 +-
 .../clientpositive/ppd_outer_join4.q.out        |   88 +-
 .../results/clientpositive/ppd_random.q.out     |   80 +-
 .../results/clientpositive/ppd_udf_case.q.out   |   40 +-
 .../results/clientpositive/ppd_union_view.q.out |   78 +-
 .../results/clientpositive/protectmode2.q.out   |    2 -
 ql/src/test/results/clientpositive/ptf.q.out    |   28 +-
 .../clientpositive/rcfile_default_format.q.out  |    8 -
 .../clientpositive/rcfile_null_value.q.out      |   20 +-
 .../clientpositive/router_join_ppr.q.out        |  170 +-
 .../clientpositive/selectDistinctStar.q.out     |    2 -
 .../clientpositive/select_same_col.q.out        |    8 +-
 .../test/results/clientpositive/skewjoin.q.out  |   46 +-
 .../clientpositive/spark/alter_merge_orc.q.out  |   24 +-
 .../spark/alter_merge_stats_orc.q.out           |   30 +-
 .../clientpositive/spark/auto_join12.q.out      |   54 +-
 .../clientpositive/spark/auto_join13.q.out      |   40 +-
 .../clientpositive/spark/auto_join5.q.out       |   10 +-
 .../clientpositive/spark/auto_join8.q.out       |    2 +-
 .../spark/auto_join_without_localtask.q.out     |   90 +-
 .../results/clientpositive/spark/bucket5.q.out  |    1 -
 .../clientpositive/spark/cross_join.q.out       |    8 +-
 .../results/clientpositive/spark/ctas.q.out     |    5 -
 .../spark/groupby_sort_1_23.q.out               |   10 +-
 .../spark/groupby_sort_skew_1_23.q.out          |   10 +-
 .../infer_bucket_sort_bucketed_table.q.out      |    2 -
 .../spark/infer_bucket_sort_convert_join.q.out  |    4 -
 .../spark/infer_bucket_sort_map_operators.q.out |    8 -
 .../spark/infer_bucket_sort_merge.q.out         |    4 -
 .../spark/infer_bucket_sort_num_buckets.q.out   |    4 -
 .../infer_bucket_sort_reducers_power_two.q.out  |   12 -
 .../results/clientpositive/spark/join12.q.out   |   26 +-
 .../results/clientpositive/spark/join13.q.out   |   82 +-
 .../results/clientpositive/spark/join32.q.out   |  102 +-
 .../clientpositive/spark/join32_lessSize.q.out  |  232 +-
 .../results/clientpositive/spark/join33.q.out   |  102 +-
 .../results/clientpositive/spark/join34.q.out   |    2 +-
 .../results/clientpositive/spark/join35.q.out   |    2 +-
 .../results/clientpositive/spark/join5.q.out    |   20 +-
 .../results/clientpositive/spark/join8.q.out    |    2 +-
 .../clientpositive/spark/join_alt_syntax.q.out  |  272 +-
 .../spark/join_cond_pushdown_1.q.out            |   70 +-
 .../spark/join_cond_pushdown_2.q.out            |  134 +-
 .../spark/join_cond_pushdown_3.q.out            |   70 +-
 .../spark/join_cond_pushdown_4.q.out            |  134 +-
 .../clientpositive/spark/join_merging.q.out     |  115 +-
 .../spark/lateral_view_explode2.q.out           |    6 +-
 .../clientpositive/spark/limit_pushdown.q.out   |   80 +-
 .../spark/list_bucket_dml_10.q.java1.7.out      |    2 -
 .../spark/list_bucket_dml_10.q.java1.8.out      |    2 -
 .../spark/list_bucket_dml_2.q.java1.7.out       |    2 -
 .../spark/list_bucket_dml_2.q.java1.8.out       |    2 -
 .../spark/list_bucket_dml_2.q.out               |  Bin 28747 -> 28667 bytes
 .../clientpositive/spark/load_dyn_part13.q.out  |    8 +-
 .../clientpositive/spark/load_dyn_part14.q.out  |   57 +-
 .../clientpositive/spark/louter_join_ppr.q.out  |  172 +-
 .../clientpositive/spark/mapjoin_mapjoin.q.out  |  202 +-
 .../clientpositive/spark/multi_insert.q.out     |   32 +-
 ...i_insert_move_tasks_share_dependencies.q.out |   32 +-
 .../clientpositive/spark/orc_analyze.q.out      |   22 -
 .../spark/outer_join_ppr.q.java1.7.out          |  362 +-
 .../clientpositive/spark/parallel_orderby.q.out |    2 -
 .../clientpositive/spark/ppd_gby_join.q.out     |  106 +-
 .../results/clientpositive/spark/ppd_join.q.out |  110 +-
 .../clientpositive/spark/ppd_join2.q.out        |   86 +-
 .../clientpositive/spark/ppd_join3.q.out        |  116 +-
 .../clientpositive/spark/ppd_outer_join4.q.out  |  124 +-
 .../test/results/clientpositive/spark/ptf.q.out |   28 +-
 .../clientpositive/spark/router_join_ppr.q.out  |  370 +-
 .../results/clientpositive/spark/skewjoin.q.out |   46 +-
 .../results/clientpositive/spark/stats1.q.out   |    2 -
 .../results/clientpositive/spark/stats10.q.out  |    5 -
 .../results/clientpositive/spark/stats12.q.out  |    9 -
 .../results/clientpositive/spark/stats13.q.out  |   10 -
 .../results/clientpositive/spark/stats14.q.out  |    7 -
 .../results/clientpositive/spark/stats15.q.out  |    7 -
 .../results/clientpositive/spark/stats16.q.out  |    2 -
 .../results/clientpositive/spark/stats18.q.out  |    4 -
 .../results/clientpositive/spark/stats2.q.out   |    2 -
 .../results/clientpositive/spark/stats20.q.out  |    2 -
 .../results/clientpositive/spark/stats3.q.out   |    2 -
 .../results/clientpositive/spark/stats5.q.out   |    1 -
 .../results/clientpositive/spark/stats6.q.out   |    9 -
 .../results/clientpositive/spark/stats7.q.out   |    5 -
 .../results/clientpositive/spark/stats8.q.out   |   18 -
 .../results/clientpositive/spark/stats9.q.out   |    1 -
 .../clientpositive/spark/stats_counter.q.out    |    2 -
 .../spark/stats_counter_partitioned.q.out       |   16 -
 .../clientpositive/spark/stats_noscan_1.q.out   |   17 -
 .../clientpositive/spark/stats_noscan_2.q.out   |    6 -
 .../clientpositive/spark/stats_only_null.q.out  |    4 -
 .../spark/stats_partscan_1_23.q.out             |    6 -
 .../results/clientpositive/spark/statsfs.q.out  |   14 -
 .../results/clientpositive/spark/union22.q.out  |    4 +-
 .../results/clientpositive/spark/union28.q.out  |    4 +-
 .../results/clientpositive/spark/union29.q.out  |    4 +-
 .../results/clientpositive/spark/union30.q.out  |    4 +-
 .../results/clientpositive/spark/union33.q.out  |    4 +-
 .../clientpositive/spark/union_date_trim.q.out  |    4 +-
 .../clientpositive/spark/union_remove_1.q.out   |    5 +-
 .../clientpositive/spark/union_remove_10.q.out  |    3 +-
 .../clientpositive/spark/union_remove_11.q.out  |    3 +-
 .../clientpositive/spark/union_remove_12.q.out  |    3 +-
 .../clientpositive/spark/union_remove_13.q.out  |    1 -
 .../clientpositive/spark/union_remove_14.q.out  |    3 +-
 .../clientpositive/spark/union_remove_15.q.out  |    9 +-
 .../clientpositive/spark/union_remove_16.q.out  |    9 +-
 .../clientpositive/spark/union_remove_17.q.out  |    5 +-
 .../clientpositive/spark/union_remove_18.q.out  |   25 +-
 .../clientpositive/spark/union_remove_19.q.out  |   13 +-
 .../clientpositive/spark/union_remove_2.q.out   |    3 +-
 .../clientpositive/spark/union_remove_20.q.out  |    5 +-
 .../clientpositive/spark/union_remove_21.q.out  |    3 +-
 .../clientpositive/spark/union_remove_22.q.out  |   13 +-
 .../clientpositive/spark/union_remove_23.q.out  |    3 +-
 .../clientpositive/spark/union_remove_24.q.out  |    5 +-
 .../clientpositive/spark/union_remove_25.q.out  |   22 +-
 .../clientpositive/spark/union_remove_3.q.out   |    3 +-
 .../clientpositive/spark/union_remove_4.q.out   |    5 +-
 .../clientpositive/spark/union_remove_5.q.out   |    3 +-
 .../clientpositive/spark/union_remove_6.q.out   |    8 +-
 .../spark/union_remove_6_subq.q.out             |    8 +-
 .../clientpositive/spark/union_remove_7.q.out   |    5 +-
 .../clientpositive/spark/union_remove_8.q.out   |    3 +-
 .../clientpositive/spark/union_remove_9.q.out   |    3 +-
 .../clientpositive/spark/union_top_level.q.out  |  358 +-
 .../clientpositive/spark/vectorized_ptf.q.out   |  136 +-
 .../clientpositive/spark/windowing.q.out        |   40 +-
 ql/src/test/results/clientpositive/stats1.q.out |    2 -
 .../test/results/clientpositive/stats10.q.out   |    5 -
 .../test/results/clientpositive/stats11.q.out   |    8 -
 .../test/results/clientpositive/stats12.q.out   |    9 -
 .../test/results/clientpositive/stats13.q.out   |   10 -
 .../test/results/clientpositive/stats14.q.out   |    7 -
 .../test/results/clientpositive/stats15.q.out   |    7 -
 .../test/results/clientpositive/stats16.q.out   |    2 -
 .../test/results/clientpositive/stats18.q.out   |    4 -
 .../test/results/clientpositive/stats19.q.out   |   12 -
 ql/src/test/results/clientpositive/stats2.q.out |    2 -
 .../test/results/clientpositive/stats20.q.out   |    2 -
 ql/src/test/results/clientpositive/stats3.q.out |    2 -
 ql/src/test/results/clientpositive/stats4.q.out |   10 -
 ql/src/test/results/clientpositive/stats5.q.out |    1 -
 ql/src/test/results/clientpositive/stats6.q.out |    9 -
 ql/src/test/results/clientpositive/stats7.q.out |    5 -
 ql/src/test/results/clientpositive/stats8.q.out |   18 -
 ql/src/test/results/clientpositive/stats9.q.out |    1 -
 .../results/clientpositive/stats_counter.q.out  |    2 -
 .../stats_counter_partitioned.q.out             |   16 -
 .../clientpositive/stats_empty_partition.q.out  |    2 -
 .../clientpositive/stats_invalidation.q.out     |    2 -
 .../stats_list_bucket.q.java1.7.out             |    3 -
 .../stats_list_bucket.q.java1.8.out             |    3 -
 .../results/clientpositive/stats_noscan_1.q.out |   17 -
 .../results/clientpositive/stats_noscan_2.q.out |    6 -
 .../clientpositive/stats_only_null.q.out        |    4 -
 .../clientpositive/stats_partscan_1.q.out       |    6 -
 .../clientpositive/stats_partscan_1_23.q.out    |    6 -
 .../test/results/clientpositive/statsfs.q.out   |   14 -
 .../temp_table_windowing_expressions.q.out      |    8 +-
 .../clientpositive/tez/alter_merge_orc.q.out    |   24 +-
 .../tez/alter_merge_stats_orc.q.out             |   30 +-
 .../clientpositive/tez/constprog_dpp.q.out      |  113 +
 .../results/clientpositive/tez/cross_join.q.out |    8 +-
 .../test/results/clientpositive/tez/ctas.q.out  |    5 -
 .../tez/dynpart_sort_opt_vectorization.q.out    |   48 +-
 .../tez/dynpart_sort_optimization.q.out         |   32 -
 .../tez/dynpart_sort_optimization2.q.out        |   32 +-
 .../clientpositive/tez/explainuser_1.q.out      | 1729 +++++----
 .../clientpositive/tez/explainuser_2.q.out      | 3270 +++++++++---------
 .../results/clientpositive/tez/insert1.q.out    |  392 +--
 .../clientpositive/tez/limit_pushdown.q.out     |   78 +-
 .../clientpositive/tez/mapjoin_mapjoin.q.out    |  266 +-
 .../test/results/clientpositive/tez/mrr.q.out   |   82 +-
 .../clientpositive/tez/orc_analyze.q.out        |   48 -
 .../results/clientpositive/tez/orc_merge9.q.out |  186 +
 .../test/results/clientpositive/tez/ptf.q.out   |   28 +-
 .../clientpositive/tez/selectDistinctStar.q.out |    2 -
 .../results/clientpositive/tez/skewjoin.q.out   |   26 +-
 .../clientpositive/tez/stats_counter.q.out      |    2 -
 .../tez/stats_counter_partitioned.q.out         |   16 -
 .../clientpositive/tez/stats_noscan_1.q.out     |   17 -
 .../clientpositive/tez/stats_only_null.q.out    |    4 -
 .../results/clientpositive/tez/tez_fsstat.q.out |    2 -
 .../results/clientpositive/tez/tez_union.q.out  |   88 +-
 .../tez/tez_union_dynamic_partition.q.out       |   44 +-
 .../tez/tez_union_multiinsert.q.out             |    4 +-
 .../clientpositive/tez/unionDistinct_1.q.out    |   20 +-
 .../clientpositive/tez/vector_coalesce.q.out    |    6 +-
 .../clientpositive/tez/vector_decimal_2.q.out   |   55 +-
 .../tez/vector_decimal_round_2.q.out            |    8 +-
 .../clientpositive/tez/vector_interval_1.q.out  |   24 +-
 .../clientpositive/tez/vectorized_ptf.q.out     |  136 +-
 .../clientpositive/truncate_column.q.out        |   11 -
 .../results/clientpositive/udtf_stack.q.out     |   12 +-
 .../clientpositive/unicode_notation.q.out       |    3 -
 .../test/results/clientpositive/union22.q.out   |    4 +-
 .../test/results/clientpositive/union28.q.out   |    4 +-
 .../test/results/clientpositive/union29.q.out   |    4 +-
 .../test/results/clientpositive/union30.q.out   |    4 +-
 .../test/results/clientpositive/union33.q.out   |    4 +-
 .../clientpositive/unionDistinct_1.q.out        |   20 +-
 .../clientpositive/union_date_trim.q.out        |    4 +-
 .../results/clientpositive/union_remove_1.q.out |    5 +-
 .../clientpositive/union_remove_10.q.out        |    3 +-
 .../clientpositive/union_remove_11.q.out        |    3 +-
 .../clientpositive/union_remove_12.q.out        |    3 +-
 .../clientpositive/union_remove_13.q.out        |    1 -
 .../clientpositive/union_remove_14.q.out        |    3 +-
 .../clientpositive/union_remove_15.q.out        |    9 +-
 .../clientpositive/union_remove_16.q.out        |    9 +-
 .../clientpositive/union_remove_17.q.out        |    5 +-
 .../clientpositive/union_remove_18.q.out        |   25 +-
 .../clientpositive/union_remove_19.q.out        |   13 +-
 .../results/clientpositive/union_remove_2.q.out |    3 +-
 .../clientpositive/union_remove_20.q.out        |    5 +-
 .../clientpositive/union_remove_21.q.out        |    3 +-
 .../clientpositive/union_remove_22.q.out        |   13 +-
 .../clientpositive/union_remove_23.q.out        |    3 +-
 .../clientpositive/union_remove_24.q.out        |    5 +-
 .../clientpositive/union_remove_25.q.out        |   22 +-
 .../results/clientpositive/union_remove_3.q.out |    3 +-
 .../results/clientpositive/union_remove_4.q.out |    5 +-
 .../results/clientpositive/union_remove_5.q.out |    3 +-
 .../results/clientpositive/union_remove_6.q.out |    8 +-
 .../clientpositive/union_remove_6_subq.q.out    |    8 +-
 .../results/clientpositive/union_remove_7.q.out |    5 +-
 .../results/clientpositive/union_remove_8.q.out |    3 +-
 .../results/clientpositive/union_remove_9.q.out |    3 +-
 .../clientpositive/union_top_level.q.out        |  316 +-
 .../clientpositive/vector_coalesce.q.out        |    6 +-
 .../clientpositive/vector_decimal_2.q.out       |   55 +-
 .../clientpositive/vector_decimal_round_2.q.out |    8 +-
 .../clientpositive/vector_interval_1.q.out      |   24 +-
 .../vectorization_part_varchar.q.out            |   72 +
 .../results/clientpositive/vectorized_ptf.q.out |  132 +-
 .../test/results/clientpositive/windowing.q.out |   40 +-
 .../clientpositive/windowing_expressions.q.out  |    8 +-
 .../hadoop/hive/ql/io/sarg/ExpressionTree.java  |  157 +
 .../hadoop/hive/ql/io/sarg/SearchArgument.java  |   14 +-
 .../hive/serde2/AbstractEncodingAwareSerDe.java |    7 +-
 .../apache/hadoop/hive/serde2/SerDeUtils.java   |    4 +-
 .../hive/serde2/avro/AvroDeserializer.java      |   11 +-
 .../objectinspector/ObjectInspectorUtils.java   |   18 +-
 .../hive/serde2/avro/TestAvroDeserializer.java  |   63 +-
 .../avro/TestAvroObjectInspectorGenerator.java  |   33 +
 .../TestObjectInspectorUtils.java               |   22 +
 .../service/cli/session/HiveSessionBase.java    |    2 -
 .../service/cli/session/HiveSessionImpl.java    |   74 +-
 .../cli/session/HiveSessionImplwithUGI.java     |   63 +-
 .../service/cli/thrift/ThriftCLIService.java    |   21 +-
 .../apache/hive/service/server/HiveServer2.java |    6 +-
 .../apache/hive/service/cli/CLIServiceTest.java |  135 +-
 .../apache/hadoop/hive/shims/Hadoop23Shims.java |    5 +-
 906 files changed, 41224 insertions(+), 14620 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/e6adedc1/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/e6adedc1/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --cc beeline/src/java/org/apache/hive/beeline/Commands.java
index 8c406a3,3cdcfb8..01349e2
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@@ -46,8 -43,8 +46,9 @@@ import java.sql.ResultSet
  import java.sql.SQLException;
  import java.sql.Statement;
  import java.sql.SQLWarning;
+ import java.util.ArrayList;
  import java.util.Arrays;
 +import java.util.HashMap;
  import java.util.Iterator;
  import java.util.LinkedList;
  import java.util.List;
@@@ -1091,27 -798,42 +1093,36 @@@ public class Commands 
      }
  
      line = line.trim();
-     String[] cmds;
+     List<String> cmdList = new ArrayList<String>();
      if (entireLineAsCommand) {
-       cmds = new String[1];
-       cmds[0] = line;
+       cmdList.add(line);
      } else {
-       cmds = line.split(";");
+       StringBuffer command = new StringBuffer();
+       for (String cmdpart: line.split(";")) {
+         if (cmdpart.endsWith("\\")) {
+           command.append(cmdpart.substring(0, cmdpart.length() -1)).append(";");
+           continue;
+         } else {
+           command.append(cmdpart);
+         }
+         cmdList.add(command.toString());
+         command.setLength(0);
+       }
      }
-     for (int i = 0; i < cmds.length; i++) {
-       String sql = cmds[i].trim();
+     for (int i = 0; i < cmdList.size(); i++) {
+       String sql = cmdList.get(i).trim();
        if (sql.length() != 0) {
 -        if (beeLine.isComment(sql)) {
 -          //skip this and rest cmds in the line
 -          break;
 -        }
 -        if (sql.startsWith(BeeLine.COMMAND_PREFIX)) {
 -          sql = sql.substring(1);
 -        }
 -
 -        String prefix = call ? "call" : "sql";
 -
 -        if (sql.startsWith(prefix)) {
 -          sql = sql.substring(prefix.length());
 +        if (!beeLine.isBeeLine()) {
 +          sql = cliToBeelineCmd(sql);
 +          if (sql.equalsIgnoreCase("quit") || sql.equalsIgnoreCase("exit")) {
 +            beeLine.setExit(true);
 +            return true;
 +          }
          }
  
 -        // batch statements?
 -        if (beeLine.getBatch() != null) {
 -          beeLine.getBatch().add(sql);
 +        // is source CMD
 +        if (isSourceCMD(sql)) {
 +          sourceFile(sql);
            continue;
          }
  

http://git-wip-us.apache.org/repos/asf/hive/blob/e6adedc1/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------


[18/33] hive git commit: HIVE-11336: Support initial file option for new CLI [beeline-cli branch](Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11336: Support initial file option for new CLI [beeline-cli branch](Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/e28043fb
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e28043fb
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e28043fb

Branch: refs/heads/master
Commit: e28043fb4753b26daaa8a01da61ceda04b970645
Parents: edbd8db
Author: Ferdinand Xu <ch...@intel.com>
Authored: Mon Jul 27 22:34:47 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Mon Jul 27 22:34:47 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 44 +++++++++++++++-----
 .../org/apache/hive/beeline/BeeLineOpts.java    | 10 ++---
 2 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/e28043fb/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index d4beefc..406059d 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -22,7 +22,6 @@
  */
 package org.apache.hive.beeline;
 
-import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
@@ -31,7 +30,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.SequenceInputStream;
 import java.lang.reflect.InvocationTargetException;
@@ -672,6 +670,10 @@ public class BeeLine implements Closeable {
 
     getOpts().setScriptFile(commandLine.getOptionValue("f"));
 
+    if (commandLine.getOptionValues("i") != null) {
+      getOpts().setInitFiles(commandLine.getOptionValues("i"));
+    }
+
     dbName = commandLine.getOptionValue("database");
     getOpts().setVerbose(Boolean.valueOf(commandLine.getOptionValue("verbose")));
     getOpts().setSilent(Boolean.valueOf(commandLine.getOptionValue("slient")));
@@ -747,7 +749,7 @@ public class BeeLine implements Closeable {
       pass = cl.getOptionValue("p");
     }
     url = cl.getOptionValue("u");
-    getOpts().setInitFile(cl.getOptionValue("i"));
+    getOpts().setInitFiles(cl.getOptionValues("i"));
     getOpts().setScriptFile(cl.getOptionValue("f"));
     if (cl.getOptionValues('e') != null) {
       commands = Arrays.asList(cl.getOptionValues('e'));
@@ -835,6 +837,8 @@ public class BeeLine implements Closeable {
         getOpts().setShowHeader(false);
         getOpts().setOutputFormat("dsv");
         getOpts().setDelimiterForDSV(' ');
+
+        processInitFiles(opts.getInitFiles());
       }
 
       if (getOpts().getScriptFile() != null) {
@@ -853,13 +857,15 @@ public class BeeLine implements Closeable {
   }
 
   int runInit() {
-    String initFile = getOpts().getInitFile();
-    if (initFile != null) {
-      info("Running init script " + initFile);
-      try {
-        return executeFile(initFile);
-      } finally {
-        exit = false;
+    String initFiles[] = getOpts().getInitFiles();
+    if (initFiles != null && initFiles.length != 0) {
+      for (String initFile : initFiles) {
+        info("Running init script " + initFile);
+        try {
+          return executeFile(initFile);
+        } finally {
+          exit = false;
+        }
       }
     }
     return ERRNO_OK;
@@ -920,6 +926,24 @@ public class BeeLine implements Closeable {
     }
   }
 
+  /**
+   * Only initial files specified by i option will be executed. The hiverc file will be processed by session manager.
+   *
+   * @param files
+   * @throws IOException
+   */
+  public void processInitFiles(String[] files) throws IOException {
+    if (files == null || files.length == 0) {
+      return;
+    }
+    for (String initFile : files) {
+      int rc = executeFile(initFile);
+      if (rc != 0) {
+        System.exit(rc);
+      }
+    }
+  }
+
   private int execute(ConsoleReader reader, boolean exitOnError) {
     String line;
     while (!exit) {

http://git-wip-us.apache.org/repos/asf/hive/blob/e28043fb/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index fec95f2..d9f726d 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -93,7 +93,7 @@ class BeeLineOpts implements Completer {
   private String historyFile = new File(saveDir(), "history").getAbsolutePath();
 
   private String scriptFile = null;
-  private String initFile = null;
+  private String[] initFiles = null;
   private String authType = null;
   private char delimiterForDSV = DEFAULT_DELIMITER_FOR_DSV;
 
@@ -388,12 +388,12 @@ class BeeLineOpts implements Completer {
     return scriptFile;
   }
 
-  public String getInitFile() {
-    return initFile;
+  public String[] getInitFiles() {
+    return initFiles;
   }
 
-  public void setInitFile(String initFile) {
-    this.initFile = initFile;
+  public void setInitFiles(String[] initFiles) {
+    this.initFiles = initFiles;
   }
 
   public void setColor(boolean color) {


[13/33] hive git commit: HIVE-11236 BeeLine-Cli: use the same output format as old CLI in the new CLI(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11236 BeeLine-Cli: use the same output format as old CLI in the new CLI(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/30aa1555
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/30aa1555
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/30aa1555

Branch: refs/heads/master
Commit: 30aa15556f85b08b4dd8c072bbf3b6ba792459fd
Parents: eccfdf0
Author: Ferdinand Xu <ch...@intel.com>
Authored: Mon Jul 13 21:49:25 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Mon Jul 13 21:49:25 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java   |  3 +++
 .../test/org/apache/hive/beeline/cli/TestHiveCli.java   | 12 ++++++------
 2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/30aa1555/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 7c53997..5a22956 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -827,6 +827,9 @@ public class BeeLine implements Closeable {
           return code;
         }
         getOpts().updateBeeLineOptsFromConf();
+        getOpts().setShowHeader(false);
+        getOpts().setOutputFormat("dsv");
+        getOpts().setDelimiterForDSV(' ');
       }
 
       if (getOpts().getScriptFile() != null) {

http://git-wip-us.apache.org/repos/asf/hive/blob/30aa1555/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index fa94c89..ed4e7c6 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -41,11 +41,11 @@ public class TestHiveCli {
   private static final int ERRNO_OTHER = 2;
 
   private final static String SOURCE_CONTEXT =
-      "create table if not exists test.testSrcTbl(a string, b string);";
+      "create table if not exists test.testSrcTbl(sc1 string);";
   private final static String SOURCE_CONTEXT2 =
-      "create table if not exists test.testSrcTbl2(a string);";
+      "create table if not exists test.testSrcTbl2(sc2 string);";
   private final static String SOURCE_CONTEXT3 =
-      "create table if not exists test.testSrcTbl3(a string);";
+      "create table if not exists test.testSrcTbl3(sc3 string);";
   final static String CMD =
       "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b "
           + "string);\n";
@@ -107,7 +107,7 @@ public class TestHiveCli {
   @Test
   public void testSourceCmd() {
     File f = generateTmpFile(SOURCE_CONTEXT);
-    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl;\nquit;\n", "col_name", os,
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl;\nquit;\n", "sc1", os,
         new String[] { "--database", "test" }, ERRNO_OK);
     f.delete();
   }
@@ -115,7 +115,7 @@ public class TestHiveCli {
   @Test
   public void testSourceCmd2() {
     File f = generateTmpFile(SOURCE_CONTEXT3);
-    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl3;\nquit;\n", "col_name", os,
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl3;\nquit;\n", "sc3", os,
         new String[] { "--database", "test" }, ERRNO_OK);
     f.delete();
   }
@@ -153,7 +153,7 @@ public class TestHiveCli {
     File f = generateTmpFile(SOURCE_CONTEXT2);
     verifyCMD(
         "set hiveconf:zzz=" + f.getAbsolutePath() + ";\nsource ${hiveconf:zzz};\ndesc testSrcTbl2;",
-        "col_name", os, new String[] { "--database", "test" }, ERRNO_OK);
+        "sc2", os, new String[] { "--database", "test" }, ERRNO_OK);
     f.delete();
   }
 


[27/33] hive git commit: HIVE-11779 Beeline-cli: Format the output of describe pretty table command in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)

Posted by xu...@apache.org.
HIVE-11779 Beeline-cli: Format the output of describe pretty table command in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4a91efc3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4a91efc3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4a91efc3

Branch: refs/heads/master
Commit: 4a91efc3c4b0d05b8f333049e0b0e0c1a5517bc3
Parents: 6e3b173
Author: Jia Ke <ke...@intel.com>
Authored: Thu Sep 17 01:50:13 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 17 01:50:13 2015 -0400

----------------------------------------------------------------------
 .../formatting/MetaDataPrettyFormatUtils.java   |  24 +-
 .../clientpositive/describe_pretty.q.out        | 366 +++++++++----------
 2 files changed, 199 insertions(+), 191 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/4a91efc3/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
index 8f939e6..c653252 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
@@ -89,7 +89,8 @@ public final class MetaDataPrettyFormatUtils {
     String columnHeaders[] = MetaDataFormatUtils.getColumnsHeader(null);
     formatOutputPretty(columnHeaders[0], columnHeaders[1], columnHeaders[2],
                         columnInformation, maxColNameLen, prettyOutputNumCols);
-    columnInformation.append(MetaDataFormatUtils.LINE_DELIM);
+    columnInformation.append(MetaDataFormatUtils.FIELD_DELIM)
+        .append(MetaDataFormatUtils.FIELD_DELIM).append(MetaDataFormatUtils.LINE_DELIM);
   }
 
   private static void formatAllFieldsPretty(StringBuilder tableInfo,
@@ -202,6 +203,7 @@ public final class MetaDataPrettyFormatUtils {
     String delim = StringUtils.repeat(" ", delimCount);
     sb.append(paddedText);
     sb.append(delim);
+    sb.append(MetaDataFormatUtils.FIELD_DELIM);
 
     return paddedText.length() + delim.length();
   }
@@ -209,23 +211,29 @@ public final class MetaDataPrettyFormatUtils {
   private static void formatOutputPretty(String colName, String colType,
       String colComment, StringBuilder tableInfo, int maxColNameLength,
       int prettyOutputNumCols) {
-    int colsConsumed = 0;
-    colsConsumed += appendFormattedColumn(tableInfo, colName, maxColNameLength + 1);
-    colsConsumed += appendFormattedColumn(tableInfo, colType, PRETTY_ALIGNMENT);
+    int colsNameConsumed = appendFormattedColumn(tableInfo, colName, maxColNameLength + 1);
+    int colsTypeConsumed =appendFormattedColumn(tableInfo, colType, PRETTY_ALIGNMENT);
 
-    colComment = breakCommentIntoMultipleLines(colComment, colsConsumed, prettyOutputNumCols);
+    colComment = breakCommentIntoMultipleLines(colComment, colsNameConsumed + colsTypeConsumed,
+        prettyOutputNumCols);
 
     /* Comment indent processing for multi-line comments.
      * Comments should be indented the same amount on each line
      * if the first line comment starts indented by k,
-     * the following line comments should also be indented by k.
+     * the following line comments should also be indented by k
+     * The following line comments will as a new line,so we need to
+     * add colsNameConsumed spaces as the first column and
+     * colsTypeConsumed spaces as the second column and the
+     * comment as the last column.we use two FIELD_DELIM to
+     * split them.
      */
     String[] commentSegments = colComment.split("\n|\r|\r\n");
     tableInfo.append(trimTrailingWS(commentSegments[0]));
     tableInfo.append(MetaDataFormatUtils.LINE_DELIM);
     for (int i = 1; i < commentSegments.length; i++) {
-      tableInfo.append(StringUtils.repeat(" ", colsConsumed));
-      tableInfo.append(trimTrailingWS(commentSegments[i]));
+      tableInfo.append(String.format(
+          "%" + colsNameConsumed + "s" + MetaDataFormatUtils.FIELD_DELIM + "%" + colsTypeConsumed
+              + "s" + MetaDataFormatUtils.FIELD_DELIM + "%s", "", "", commentSegments[i]));
       tableInfo.append(MetaDataFormatUtils.LINE_DELIM);
     }
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/4a91efc3/ql/src/test/results/clientpositive/describe_pretty.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/describe_pretty.q.out b/ql/src/test/results/clientpositive/describe_pretty.q.out
index 1c05e0d..279f567 100644
--- a/ql/src/test/results/clientpositive/describe_pretty.q.out
+++ b/ql/src/test/results/clientpositive/describe_pretty.q.out
@@ -72,136 +72,136 @@ POSTHOOK: query: -- There will be an extra tab at the end of each comment line i
 DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that is greater than 80	 	 
-                                 chars and is likely to spill into multiple	 	 
-                                 lines	 	 
-col5               string        col5 very long multi-line comment where each	 	 
-                                 line is very long by itself and is likely to	 	 
-                                 spill	 	 
-                                 into multiple lines.  Lorem ipsum dolor sit	 	 
-                                 amet, consectetur adipiscing elit. Proin in	 	 
-                                 dolor nisl, sodales	 	 
-                                 adipiscing tortor. Integer venenatis	 	 
-col6               string        This comment has a very long single word ABCDEF	 	 
-                                 GHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz12	 	 
-                                 3 which will not fit in a line by itself for	 	 
-                                 small column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that is greater than 80
+                   	              	chars and is likely to spill into multiple 
+                   	              	lines
+col5               	string        	col5 very long multi-line comment where each
+                   	              	line is very long by itself and is likely to 
+                   	              	spill
+                   	              	into multiple lines.  Lorem ipsum dolor sit 
+                   	              	amet, consectetur adipiscing elit. Proin in 
+                   	              	dolor nisl, sodales
+                   	              	adipiscing tortor. Integer venenatis
+col6               	string        	This comment has a very long single word ABCDEF
+                   	              	GHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz12
+                   	              	3 which will not fit in a line by itself for 
+                   	              	small column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines	 	 
-col5               string        col5 very long multi-line comment where each line is very long by itself and is likely to spill	 	 
-                                 into multiple lines.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales	 	 
-                                 adipiscing tortor. Integer venenatis	 	 
-col6               string        This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines
+col5               	string        	col5 very long multi-line comment where each line is very long by itself and is likely to spill
+                   	              	into multiple lines.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales
+                   	              	adipiscing tortor. Integer venenatis
+col6               	string        	This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line	 	 
-                                 comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long	 	 
-                                 comment that is	 	 
-                                 greater than 80	 	 
-                                 chars and is	 	 
-                                 likely to spill	 	 
-                                 into multiple	 	 
-                                 lines	 	 
-col5               string        col5 very long	 	 
-                                 multi-line	 	 
-                                 comment where	 	 
-                                 each line is very	 	 
-                                 long by itself	 	 
-                                 and is likely to	 	 
-                                 spill	 	 
-                                 into multiple	 	 
-                                 lines.  Lorem	 	 
-                                 ipsum dolor sit	 	 
-                                 amet, consectetur	 	 
-                                 adipiscing elit.	 	 
-                                 Proin in dolor	 	 
-                                 nisl, sodales	 	 
-                                 adipiscing	 	 
-                                 tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has	 	 
-                                 a very long	 	 
-                                 single word ABCDE	 	 
-                                 FGHIJKLMNOPQRSTUV	 	 
-                                 XYZabcdefghijklmn	 	 
-                                 opqrstuvzxyz123	 	 
-                                 which will not	 	 
-                                 fit in a line by	 	 
-                                 itself for small	 	 
-                                 column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line
+                   	              	comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long
+                   	              	comment that is 
+                   	              	greater than 80 
+                   	              	chars and is 
+                   	              	likely to spill 
+                   	              	into multiple 
+                   	              	lines
+col5               	string        	col5 very long
+                   	              	multi-line 
+                   	              	comment where 
+                   	              	each line is very
+                   	              	long by itself 
+                   	              	and is likely to 
+                   	              	spill
+                   	              	into multiple 
+                   	              	lines.  Lorem 
+                   	              	ipsum dolor sit 
+                   	              	amet, consectetur
+                   	              	adipiscing elit. 
+                   	              	Proin in dolor 
+                   	              	nisl, sodales
+                   	              	adipiscing 
+                   	              	tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has
+                   	              	a very long 
+                   	              	single word ABCDE
+                   	              	FGHIJKLMNOPQRSTUV
+                   	              	XYZabcdefghijklmn
+                   	              	opqrstuvzxyz123 
+                   	              	which will not 
+                   	              	fit in a line by 
+                   	              	itself for small 
+                   	              	column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that	 	 
-                                 is greater than 80 chars	 	 
-                                 and is likely to spill into	 	 
-                                 multiple lines	 	 
-col5               string        col5 very long multi-line	 	 
-                                 comment where each line is	 	 
-                                 very long by itself and is	 	 
-                                 likely to spill	 	 
-                                 into multiple lines.  Lorem	 	 
-                                 ipsum dolor sit amet,	 	 
-                                 consectetur adipiscing	 	 
-                                 elit. Proin in dolor nisl,	 	 
-                                 sodales	 	 
-                                 adipiscing tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has a very	 	 
-                                 long single word ABCDEFGHIJ	 	 
-                                 KLMNOPQRSTUVXYZabcdefghijkl	 	 
-                                 mnopqrstuvzxyz123 which	 	 
-                                 will not fit in a line by	 	 
-                                 itself for small column	 	 
-                                 widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that
+                   	              	is greater than 80 chars 
+                   	              	and is likely to spill into
+                   	              	multiple lines
+col5               	string        	col5 very long multi-line
+                   	              	comment where each line is 
+                   	              	very long by itself and is 
+                   	              	likely to spill
+                   	              	into multiple lines.  Lorem
+                   	              	ipsum dolor sit amet, 
+                   	              	consectetur adipiscing 
+                   	              	elit. Proin in dolor nisl, 
+                   	              	sodales
+                   	              	adipiscing tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has a very
+                   	              	long single word ABCDEFGHIJ
+                   	              	KLMNOPQRSTUVXYZabcdefghijkl
+                   	              	mnopqrstuvzxyz123 which 
+                   	              	will not fit in a line by 
+                   	              	itself for small column 
+                   	              	widths.
+col7_nocomment     	string        	
 PREHOOK: query: CREATE TABLE test_table_very_long_column_name(
     col1 INT COMMENT 'col1 one line comment',
     col2_abcdefghiklmnopqrstuvxyz STRING COMMENT 'col2
@@ -230,48 +230,48 @@ PREHOOK: Input: default@test_table_very_long_column_name
 POSTHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_very_long_column_name
-col_name                          data_type     comment	 	 
-	 	 
-col1                              int           col1 one line comment	 	 
-col2_abcdefghiklmnopqrstuvxyz     string        col2	 	 
-                                                two lines comment	 	 
-col3                              string        col3	 	 
-                                                three lines	 	 
-                                                comment	 	 
-col4                              string        col4 very long comment that is	 	 
-                                                greater than 80 chars and is	 	 
-                                                likely to spill into multiple	 	 
-                                                lines	 	 
+col_name                          	data_type     	comment
+		
+col1                              	int           	col1 one line comment
+col2_abcdefghiklmnopqrstuvxyz     	string        	col2
+                                  	              	two lines comment
+col3                              	string        	col3
+                                  	              	three lines
+                                  	              	comment
+col4                              	string        	col4 very long comment that is
+                                  	              	greater than 80 chars and is 
+                                  	              	likely to spill into multiple 
+                                  	              	lines
 PREHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table_very_long_column_name
 POSTHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_very_long_column_name
-col_name                          data_type     comment	 	 
-	 	 
-col1                              int           col1 one	 	 
-                                                line	 	 
-                                                comment	 	 
-col2_abcdefghiklmnopqrstuvxyz     string        col2	 	 
-                                                two lines	 	 
-                                                comment	 	 
-col3                              string        col3	 	 
-                                                three	 	 
-                                                lines	 	 
-                                                comment	 	 
-col4                              string        col4 very	 	 
-                                                long	 	 
-                                                comment	 	 
-                                                that is	 	 
-                                                greater	 	 
-                                                than 80	 	 
-                                                chars and	 	 
-                                                is likely	 	 
-                                                to spill	 	 
-                                                into	 	 
-                                                multiple	 	 
-                                                lines	 	 
+col_name                          	data_type     	comment
+		
+col1                              	int           	col1 one
+                                  	              	line 
+                                  	              	comment
+col2_abcdefghiklmnopqrstuvxyz     	string        	col2
+                                  	              	two lines 
+                                  	              	comment
+col3                              	string        	col3
+                                  	              	three 
+                                  	              	lines
+                                  	              	comment
+col4                              	string        	col4 very
+                                  	              	long 
+                                  	              	comment 
+                                  	              	that is 
+                                  	              	greater 
+                                  	              	than 80 
+                                  	              	chars and 
+                                  	              	is likely 
+                                  	              	to spill 
+                                  	              	into 
+                                  	              	multiple 
+                                  	              	lines
 PREHOOK: query: CREATE TABLE test_table_partitioned(
     col1 INT COMMENT 'col1 one line comment',
     col2 STRING COMMENT 'col2
@@ -316,40 +316,40 @@ PREHOOK: Input: default@test_table_partitioned
 POSTHOOK: query: DESCRIBE PRETTY test_table_partitioned
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_partitioned
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that	 	 
-                                 is greater than 80 chars	 	 
-                                 and is likely to spill into	 	 
-                                 multiple lines	 	 
-col5               string        col5 very long multi-line	 	 
-                                 comment where each line is	 	 
-                                 very long by itself and is	 	 
-                                 likely to spill	 	 
-                                 into multiple lines.  Lorem	 	 
-                                 ipsum dolor sit amet,	 	 
-                                 consectetur adipiscing	 	 
-                                 elit. Proin in dolor nisl,	 	 
-                                 sodales	 	 
-                                 adipiscing tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has a very	 	 
-                                 long single word ABCDEFGHIJ	 	 
-                                 KLMNOPQRSTUVXYZabcdefghijkl	 	 
-                                 mnopqrstuvzxyz123 which	 	 
-                                 will not fit in a line by	 	 
-                                 itself for small column	 	 
-                                 widths.	 	 
-col7_nocomment     string        	 	 
-ds                 string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that
+                   	              	is greater than 80 chars 
+                   	              	and is likely to spill into
+                   	              	multiple lines
+col5               	string        	col5 very long multi-line
+                   	              	comment where each line is 
+                   	              	very long by itself and is 
+                   	              	likely to spill
+                   	              	into multiple lines.  Lorem
+                   	              	ipsum dolor sit amet, 
+                   	              	consectetur adipiscing 
+                   	              	elit. Proin in dolor nisl, 
+                   	              	sodales
+                   	              	adipiscing tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has a very
+                   	              	long single word ABCDEFGHIJ
+                   	              	KLMNOPQRSTUVXYZabcdefghijkl
+                   	              	mnopqrstuvzxyz123 which 
+                   	              	will not fit in a line by 
+                   	              	itself for small column 
+                   	              	widths.
+col7_nocomment     	string        	
+ds                 	string        	
 	 	 
 # Partition Information	 	 
-col_name           data_type     comment	 	 
-	 	 
-ds                 string        	 	 
+col_name           	data_type     	comment
+		
+ds                 	string        	


[24/33] hive git commit: HIVE-11746: Connect command should not to be allowed from user[beeline-cli branch] (Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11746: Connect command should not to be allowed from user[beeline-cli branch] (Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/5c39d077
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/5c39d077
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/5c39d077

Branch: refs/heads/master
Commit: 5c39d0772da89eb3692cfb012831f2884d811f6f
Parents: fc53e5d
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Sep 9 21:38:16 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Sep 9 21:38:16 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/5c39d077/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 6bc2451..5db1bf7 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -881,7 +881,7 @@ public class BeeLine implements Closeable {
   }
 
   private int embeddedConnect() {
-    if (!dispatch("!connect " + Utils.URL_PREFIX + " '' ''")) {
+    if (!execCommandWithPrefix("!connect " + Utils.URL_PREFIX + " '' ''")) {
       return ERRNO_OTHER;
     } else {
       return ERRNO_OK;
@@ -1135,11 +1135,7 @@ public class BeeLine implements Closeable {
         return commands.sql(line, getOpts().getEntireLineAsCommand());
       }
     } else {
-      if (line.toLowerCase().startsWith("!connect")) {
-        return execCommandWithPrefix(line);
-      } else {
-        return commands.sql(line, getOpts().getEntireLineAsCommand());
-      }
+      return commands.sql(line, getOpts().getEntireLineAsCommand());
     }
   }
 


[29/33] hive git commit: HIVE-11717: nohup mode is not support for new hive cli(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11717: nohup mode is not support for new hive cli(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/dc9ca294
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/dc9ca294
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/dc9ca294

Branch: refs/heads/master
Commit: dc9ca294eff7f4309beb18cb540b6eccbe7e0b13
Parents: fdf6bd0
Author: Ferdinand Xu <ch...@intel.com>
Authored: Sun Sep 20 21:52:08 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Sun Sep 20 21:52:08 2015 -0400

----------------------------------------------------------------------
 bin/beeline    | 5 +++++
 bin/ext/cli.sh | 9 +++++++++
 2 files changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/dc9ca294/bin/beeline
----------------------------------------------------------------------
diff --git a/bin/beeline b/bin/beeline
index bceb7b9..6ca53b2 100644
--- a/bin/beeline
+++ b/bin/beeline
@@ -18,6 +18,11 @@
 bin=`dirname "$0"`
 bin=`cd "$bin"; pwd`
 
+# If process is backgrounded, don't change terminal settings
+if [[ ! $(ps -o stat= -p $$) == *+ ]]; then
+  export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"
+fi
+
 # Set Hadoop User classpath to true so that httpclient jars are taken from
 # hive lib instead of hadoop lib.
 export HADOOP_USER_CLASSPATH_FIRST=true

http://git-wip-us.apache.org/repos/asf/hive/blob/dc9ca294/bin/ext/cli.sh
----------------------------------------------------------------------
diff --git a/bin/ext/cli.sh b/bin/ext/cli.sh
index 96a69b0..893b7fc 100644
--- a/bin/ext/cli.sh
+++ b/bin/ext/cli.sh
@@ -16,6 +16,14 @@
 THISSERVICE=cli
 export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} "
 
+updateBeelineOpts() {
+  # If process is backgrounded, don't change terminal settings
+  if [[ ! $(ps -o stat= -p $$) == *+ ]]; then
+    echo "background"
+    export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"
+  fi
+}
+
 updateCli() {
   if [ "$USE_DEPRECATED_CLI" == "true" ]; then
     CLASS=org.apache.hadoop.hive.cli.CliDriver
@@ -24,6 +32,7 @@ updateCli() {
     export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Dlog4j.configuration=beeline-log4j.properties"
     CLASS=org.apache.hive.beeline.cli.HiveCli
     JAR=hive-beeline-*.jar
+    updateBeelineOpts
   fi
 }
 


[16/33] hive git commit: HIVE-11280: Support executing script file from hdfs in new CLI [Beeline-CLI branch](Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11280: Support executing script file from hdfs in new CLI [Beeline-CLI branch](Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/804f20a4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/804f20a4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/804f20a4

Branch: refs/heads/master
Commit: 804f20a4dd7d77aced7c4973930ce453f71641fb
Parents: e6adedc
Author: Ferdinand Xu <ch...@intel.com>
Authored: Sun Jul 19 21:10:29 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Sun Jul 19 21:10:29 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 23 +++++++++++++++++---
 .../apache/hive/beeline/cli/TestHiveCli.java    |  3 ++-
 2 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/804f20a4/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index d2b8590..c47b9fe 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -22,6 +22,7 @@
  */
 package org.apache.hive.beeline;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
@@ -30,6 +31,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.SequenceInputStream;
 import java.lang.reflect.InvocationTargetException;
@@ -87,6 +89,8 @@ import org.apache.commons.cli.GnuParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.hadoop.fs.FSDataInputStream;
+import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
@@ -889,9 +893,22 @@ public class BeeLine implements Closeable {
   }
 
   private int executeFile(String fileName) {
-    FileInputStream initStream = null;
+    InputStream initStream = null;
     try {
-      initStream = new FileInputStream(fileName);
+      if (!isBeeLine) {
+        org.apache.hadoop.fs.Path path = new org.apache.hadoop.fs.Path(fileName);
+        FileSystem fs;
+        HiveConf conf = getCommands().getHiveConf(true);
+        if (!path.toUri().isAbsolute()) {
+          fs = FileSystem.getLocal(conf);
+          path = fs.makeQualified(path);
+        } else {
+          fs = FileSystem.get(path.toUri(), conf);
+        }
+        initStream = fs.open(path);
+      } else {
+        initStream = new FileInputStream(fileName);
+      }
       return execute(getConsoleReader(initStream), !getOpts().getForce());
     } catch (Throwable t) {
       handleException(t);
@@ -973,7 +990,7 @@ public class BeeLine implements Closeable {
       handleException(e);
     }
 
-    if (inputStream instanceof FileInputStream) {
+    if (inputStream instanceof FileInputStream || inputStream instanceof FSDataInputStream) {
       // from script.. no need to load history and no need of completer, either
       return consoleReader;
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/804f20a4/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index 542f1ee..c465eac 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -79,7 +79,8 @@ public class TestHiveCli {
     executeCMD(options, CMD, retCode);
     String output = os.toString();
     LOG.debug(output);
-    Assert.assertTrue("The expected keyword " + keywords + "doesn't occur in the output: " + output,
+    Assert.assertTrue(
+        "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
         output.contains(keywords));
   }
 


[04/33] hive git commit: HIVE-10822: CLI start script throwing error message on console (Chinna Rao Lalam, reviewed by Ferdinand Xu)

Posted by xu...@apache.org.
HIVE-10822: CLI start script throwing error message on console (Chinna Rao Lalam, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/328ac4d7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/328ac4d7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/328ac4d7

Branch: refs/heads/master
Commit: 328ac4d7383a71c219cb77611c9ed4b6e6cd9bea
Parents: 0336639
Author: Ferdinand Xu <ch...@intel.com>
Authored: Tue May 26 03:04:02 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Tue May 26 03:04:02 2015 -0400

----------------------------------------------------------------------
 bin/ext/cli.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/328ac4d7/bin/ext/cli.sh
----------------------------------------------------------------------
diff --git a/bin/ext/cli.sh b/bin/ext/cli.sh
index 733705a..cdce7e3 100644
--- a/bin/ext/cli.sh
+++ b/bin/ext/cli.sh
@@ -17,7 +17,7 @@ THISSERVICE=cli
 export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} "
 
 updateCli() {
-  if [ $USE_DEPRECATED_CLI == "true" ]; then
+  if [ "$USE_DEPRECATED_CLI" == "true" ]; then
     CLASS=org.apache.hadoop.hive.cli.CliDriver
     JAR=hive-cli-*.jar
   else
@@ -34,4 +34,4 @@ cli () {
 cli_help () {
   updateCli
   execHiveCmd $CLASS $JAR "--help"
-}
\ No newline at end of file
+}


[31/33] hive git commit: HIVE-11943: Set old CLI as the default Client when using hive script(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11943: Set old CLI as the default Client when using hive script(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/046c5ebd
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/046c5ebd
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/046c5ebd

Branch: refs/heads/master
Commit: 046c5ebdbeaa8155189db13f78ddb28c63c7500c
Parents: 1857956
Author: Ferdinand Xu <ch...@intel.com>
Authored: Thu Sep 24 21:14:33 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 24 21:14:33 2015 -0400

----------------------------------------------------------------------
 bin/ext/cli.cmd | 6 +++++-
 bin/ext/cli.sh  | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/046c5ebd/bin/ext/cli.cmd
----------------------------------------------------------------------
diff --git a/bin/ext/cli.cmd b/bin/ext/cli.cmd
index 3a96d03..d9185c0 100644
--- a/bin/ext/cli.cmd
+++ b/bin/ext/cli.cmd
@@ -28,9 +28,13 @@ goto :EOF
 goto :EOF
 
 :update_cli
+	if [%USE_DEPRECATED_CLI%] == [] (
+		set USE_DEPRECATED_CLI=false
+	)
+
 	if /I "%USE_DEPRECATED_CLI%" == "true" (
 		call :old_cli
-	) else if (
+	) else (
 		call :new_cli
 	)
 goto :EOF

http://git-wip-us.apache.org/repos/asf/hive/blob/046c5ebd/bin/ext/cli.sh
----------------------------------------------------------------------
diff --git a/bin/ext/cli.sh b/bin/ext/cli.sh
index 893b7fc..e7897b3 100644
--- a/bin/ext/cli.sh
+++ b/bin/ext/cli.sh
@@ -16,10 +16,14 @@
 THISSERVICE=cli
 export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} "
 
+# Set old CLI as the default client
+if [ -n '$USE_DEPRECATED_CLI' ]; then
+  USE_DEPRECATED_CLI="true"
+fi
+
 updateBeelineOpts() {
   # If process is backgrounded, don't change terminal settings
   if [[ ! $(ps -o stat= -p $$) == *+ ]]; then
-    echo "background"
     export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"
   fi
 }


[07/33] hive git commit: HIVE-10905 Quit&Exit fails ending with '; ' [beeline-cli Branch](Chinna Rao Lalam, reviewed by Ferdinand Xu)

Posted by xu...@apache.org.
HIVE-10905 Quit&Exit fails ending with ';' [beeline-cli Branch](Chinna Rao Lalam, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/2243de3b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/2243de3b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/2243de3b

Branch: refs/heads/master
Commit: 2243de3b2bc4ef5a12dc869ea2d4b2ec787a6b74
Parents: 120e33a
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Jun 3 18:48:41 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Jun 3 18:48:41 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/2243de3b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 45a7e87..b7d2f2e 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -1053,7 +1053,8 @@ public class BeeLine implements Closeable {
     if (cmd == null)
       return null;
     String[] tokens = tokenizeCmd(cmd);
-    if (cmd.equalsIgnoreCase("quit") || cmd.equalsIgnoreCase("exit")) {
+    if (cmd.equalsIgnoreCase("quit") || cmd.equalsIgnoreCase("exit")
+	|| cmd.equalsIgnoreCase("quit;") || cmd.equals("exit;")) {
       return null;
     } else if (tokens[0].equalsIgnoreCase("source")) {
       return COMMAND_PREFIX + cmd;


[26/33] hive git commit: HIVE-11796: CLI option is not updated when executing the initial files[beeline-cli](Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11796: CLI option is not updated when executing the initial files[beeline-cli](Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6e3b1736
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6e3b1736
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6e3b1736

Branch: refs/heads/master
Commit: 6e3b173684f44245c15df64940862f00f6075460
Parents: 6380de2
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Sep 16 22:07:47 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Sep 16 22:07:47 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 24 +-------------------
 .../java/org/apache/hive/beeline/Commands.java  |  4 ++++
 2 files changed, 5 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/6e3b1736/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index d8e44de..e96d933 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -694,7 +694,6 @@ public class BeeLine implements Closeable {
     if (!commands.isEmpty()) {
       embeddedConnect();
       connectDBInEmbededMode();
-      updateOptsForCli();
       for (Iterator<String> i = commands.iterator(); i.hasNext(); ) {
         String command = i.next().toString();
         debug(loc("executing-command", command));
@@ -811,7 +810,7 @@ public class BeeLine implements Closeable {
     }
   }
 
-  private void updateOptsForCli() {
+  public void updateOptsForCli() {
     getOpts().updateBeeLineOptsFromConf();
     getOpts().setShowHeader(false);
     getOpts().setOutputFormat("dsv");
@@ -844,9 +843,6 @@ public class BeeLine implements Closeable {
           return code;
         }
         defaultConnect(false);
-        updateOptsForCli();
-
-        processInitFiles(opts.getInitFiles());
       }
 
       if (getOpts().getScriptFile() != null) {
@@ -934,24 +930,6 @@ public class BeeLine implements Closeable {
     }
   }
 
-  /**
-   * Only initial files specified by i option will be executed. The hiverc file will be processed by session manager.
-   *
-   * @param files
-   * @throws IOException
-   */
-  public void processInitFiles(String[] files) throws IOException {
-    if (files == null || files.length == 0) {
-      return;
-    }
-    for (String initFile : files) {
-      int rc = executeFile(initFile);
-      if (rc != 0) {
-        System.exit(rc);
-      }
-    }
-  }
-
   private int execute(ConsoleReader reader, boolean exitOnError) {
     String line;
     while (!exit) {

http://git-wip-us.apache.org/repos/asf/hive/blob/6e3b1736/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index d16b4ec..44dd18b 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -1389,6 +1389,10 @@ public class Commands {
       beeLine.getDatabaseConnections().setConnection(
           new DatabaseConnection(beeLine, driver, url, props));
       beeLine.getDatabaseConnection().getConnection();
+
+      if (!beeLine.isBeeLine()) {
+        beeLine.updateOptsForCli();
+      }
       beeLine.runInit();
 
       beeLine.setCompletions();


[06/33] hive git commit: HIVE-10904 Use beeline-log4j.properties for migrated CLI [beeline-cli Branch] (Chinna Rao Lalam, reviewed by Ferdinand Xu)

Posted by xu...@apache.org.
HIVE-10904 Use beeline-log4j.properties for migrated CLI [beeline-cli Branch] (Chinna Rao Lalam, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/120e33aa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/120e33aa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/120e33aa

Branch: refs/heads/master
Commit: 120e33aa56f1a294bf6d2ad0cc7278272cf519b7
Parents: 0b38cd0
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Jun 3 18:13:38 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Jun 3 18:14:41 2015 -0400

----------------------------------------------------------------------
 bin/ext/cli.sh | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/120e33aa/bin/ext/cli.sh
----------------------------------------------------------------------
diff --git a/bin/ext/cli.sh b/bin/ext/cli.sh
index cdce7e3..96a69b0 100644
--- a/bin/ext/cli.sh
+++ b/bin/ext/cli.sh
@@ -21,6 +21,7 @@ updateCli() {
     CLASS=org.apache.hadoop.hive.cli.CliDriver
     JAR=hive-cli-*.jar
   else
+    export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Dlog4j.configuration=beeline-log4j.properties"
     CLASS=org.apache.hive.beeline.cli.HiveCli
     JAR=hive-beeline-*.jar
   fi


[08/33] hive git commit: Merge branch 'master' into beeline-cli

Posted by xu...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/00e0d55a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/00e0d55a/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------


[05/33] hive git commit: HIVE-10821 Beeline-CLI: Implement CLI source command using Beeline functionality(Ferdinand Xu, Reviewed By Zhang Xuefu and Chinna Rao Lalam)

Posted by xu...@apache.org.
HIVE-10821 Beeline-CLI: Implement CLI source command using Beeline functionality(Ferdinand Xu, Reviewed By Zhang Xuefu and Chinna Rao Lalam)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0b38cd03
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0b38cd03
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0b38cd03

Branch: refs/heads/master
Commit: 0b38cd03d15ba0f2941c1ca8a64ea69c7ff87a45
Parents: 328ac4d
Author: Ferdinand Xu <ch...@intel.com>
Authored: Tue Jun 2 20:03:51 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Tue Jun 2 20:03:51 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 75 ++++++++++-----
 .../java/org/apache/hive/beeline/Commands.java  |  1 -
 .../apache/hive/beeline/cli/TestHiveCli.java    | 97 +++++++++++---------
 3 files changed, 106 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0b38cd03/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 4a82635..45a7e87 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -824,12 +824,13 @@ public class BeeLine implements Closeable {
         }
       } else {
         int code = initArgsFromCliVars(args);
+        defaultConnect(false);
         if (code != 0)
           return code;
       }
 
       if (getOpts().getScriptFile() != null) {
-        return executeFile(getOpts().getScriptFile());
+        return executeFile(getOpts().getScriptFile(), false);
       }
       try {
         info(getApplicationTitle());
@@ -848,7 +849,7 @@ public class BeeLine implements Closeable {
     if (initFile != null) {
       info("Running init script " + initFile);
       try {
-        return executeFile(initFile);
+        return executeFile(initFile, false);
       } finally {
         exit = false;
       }
@@ -883,7 +884,7 @@ public class BeeLine implements Closeable {
     return ERRNO_OK;
   }
 
-  private int executeFile(String fileName) {
+  private int executeFile(String fileName, boolean isSourceCMD) {
     FileInputStream initStream = null;
     try {
       initStream = new FileInputStream(fileName);
@@ -893,27 +894,49 @@ public class BeeLine implements Closeable {
       return ERRNO_OTHER;
     } finally {
       IOUtils.closeStream(initStream);
-      consoleReader = null;
-      output("");   // dummy new line
+      if(!isSourceCMD) {
+        consoleReader = null;
+        output("");   // dummy new line
+      }
+    }
+  }
+
+  private boolean isSourceCMD(String cmd) {
+    if (cmd == null || cmd.isEmpty())
+      return false;
+    String[] tokens = tokenizeCmd(cmd);
+    return tokens[0].equalsIgnoreCase("!source");
+  }
+
+  private boolean sourceFile(String cmd) {
+    String[] tokens = tokenizeCmd(cmd);
+    String cmd_1 = getFirstCmd(cmd, tokens[0].length());
+    File sourceFile = new File(cmd_1);
+    if (!sourceFile.isFile()) {
+      return false;
+    } else {
+      boolean ret = (executeFile(cmd_1, true) == ERRNO_OK);
+      // For source command, we should not exit even when meeting some empty line.
+      setExit(false);
+      return ret;
     }
   }
 
   private int execute(ConsoleReader reader, boolean exitOnError) {
     String line;
-    if (!isBeeLine) {
-      if (defaultConnect(exitOnError) != ERRNO_OK && exitOnError) {
-        return ERRNO_OTHER;
-      }
-    }
     while (!exit) {
       try {
         // Execute one instruction; terminate on executing a script if there is an error
         // in silent mode, prevent the query and prompt being echoed back to terminal
-        line = (getOpts().isSilent() && getOpts().getScriptFile() != null) ?
-                 reader.readLine(null, ConsoleReader.NULL_MASK) : reader.readLine(getPrompt());
+        line = (getOpts().isSilent() && getOpts().getScriptFile() != null) ? reader
+            .readLine(null, ConsoleReader.NULL_MASK) : reader.readLine(getPrompt());
+
+        // trim line
+        line = (line == null) ? null : line.trim();
         if (!isBeeLine) {
           line = cliToBeelineCmd(line);
         }
+
         if (!dispatch(line) && exitOnError) {
           return ERRNO_OTHER;
         }
@@ -1011,7 +1034,6 @@ public class BeeLine implements Closeable {
     return consoleReader;
   }
 
-
   void usage() {
     output(loc("cmd-usage"));
   }
@@ -1020,19 +1042,23 @@ public class BeeLine implements Closeable {
     return cmd.split("\\s+");
   }
 
-  public String cliToBeelineCmd(String cmd) {
+  /**
+   * Extract and clean up the first command in the input.
+   */
+  private String getFirstCmd(String cmd, int length) {
+    return cmd.substring(length).trim();
+  }
+
+  private String cliToBeelineCmd(String cmd) {
     if (cmd == null)
       return null;
-    String cmd_trimmed = cmd.trim();
-    String[] tokens = tokenizeCmd(cmd_trimmed);
-
-    if (cmd_trimmed.equalsIgnoreCase("quit") || cmd_trimmed.equalsIgnoreCase("exit")) {
+    String[] tokens = tokenizeCmd(cmd);
+    if (cmd.equalsIgnoreCase("quit") || cmd.equalsIgnoreCase("exit")) {
       return null;
     } else if (tokens[0].equalsIgnoreCase("source")) {
-      //TODO
-      return cmd;
-    } else if (cmd_trimmed.startsWith("!")) {
-      String shell_cmd = cmd_trimmed.substring(1);
+      return COMMAND_PREFIX + cmd;
+    } else if (cmd.startsWith("!")) {
+      String shell_cmd = cmd.substring(1);
       return "!sh " + shell_cmd;
     } else { // local mode
       // command like dfs
@@ -1040,7 +1066,6 @@ public class BeeLine implements Closeable {
     }
   }
 
-
   /**
    * Dispatch the specified line to the appropriate {@link CommandHandler}.
    *
@@ -1063,6 +1088,10 @@ public class BeeLine implements Closeable {
       return true;
     }
 
+    if(isSourceCMD(line)){
+      return sourceFile(line);
+    }
+
     line = line.trim();
 
     // save it to the current script, if any

http://git-wip-us.apache.org/repos/asf/hive/blob/0b38cd03/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index 4c60525..a42baa3 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -1188,7 +1188,6 @@ public class Commands {
     return true;
   }
 
-
   public boolean all(String line) {
     int index = beeLine.getDatabaseConnections().getIndex();
     boolean success = true;

http://git-wip-us.apache.org/repos/asf/hive/blob/0b38cd03/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index cc0b598..6cbb030 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -36,10 +36,15 @@ import java.io.PrintStream;
 
 public class TestHiveCli {
   private static final Log LOG = LogFactory.getLog(TestHiveCli.class.getName());
-
-  final static String CMD = "create database if not exists test;\ncreate table if not exists test" +
-      ".testTbl(a " +
-      "" + "string, b string);\n";
+  private static final int ERRNO_OK = 0;
+  private static final int ERRNO_ARGS = 1;
+  private static final int ERRNO_OTHER = 2;
+
+  private final static String SOURCE_CONTEXT =
+      "create table if not exists test.testSrcTbl(a string, b string);";
+  final static String CMD =
+      "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b "
+          + "string);\n";
   private HiveCli cli;
   private OutputStream os;
   private PrintStream ps;
@@ -65,53 +70,53 @@ public class TestHiveCli {
     }
   }
 
-  private void verifyCMD(String CMD, String keywords, OutputStream os, String[] options, int
-      retCode) {
+  private void verifyCMD(String CMD, String keywords, OutputStream os, String[] options,
+      int retCode) {
     executeCMD(options, CMD, retCode);
     String output = os.toString();
     Assert.assertTrue(output.contains(keywords));
   }
 
-  @Test
-  public void testInValidCmd() {
-    verifyCMD("!lss\n", "Failed to execute lss", errS, null, 0);
+  @Test public void testInValidCmd() {
+    verifyCMD("!lss\n", "Failed to execute lss", errS, null, ERRNO_OK);
+  }
+
+  @Test public void testHelp() {
+    verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS);
   }
 
-  @Test
-  public void testHelp() {
-    verifyCMD(null, "usage: hive", os, new String[]{"-H"}, 1);
+  @Test public void testInvalidDatabaseOptions() {
+    verifyCMD("\nshow tables\nquit\n", "Database does not exist: invalidDB", errS,
+        new String[] { "--database", "invalidDB" }, ERRNO_OK);
   }
 
-  @Test
-  public void testInvalidDatabaseOptions() {
-    verifyCMD("\nshow tables\nquit\n", "Database does not exist: invalidDB", errS, new
-        String[]{"--database", "invalidDB"}, 0);
+  @Test public void testDatabaseOptions() {
+    verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[] { "--database", "test" },
+        ERRNO_OK);
   }
 
-  @Test
-  public void testDatabaseOptions() {
-    verifyCMD("\nshow tables;\nquit;", "testTbl", os, new String[]{"--database", "test"}, 0);
+  @Test public void testSourceCmd() {
+    File f = generateTmpFile(SOURCE_CONTEXT);
+    verifyCMD("source " + f.getPath() + "\n" + "desc testSrcTbl\n" + "quit\n", "col_name", os,
+        new String[] { "--database", "test" }, ERRNO_OK);
   }
 
-  @Test
-  public void testSqlFromCmd() {
-    verifyCMD(null, "", os, new String[]{"-e", "show databases;"}, 0);
+  @Test public void testSqlFromCmd() {
+    verifyCMD(null, "", os, new String[] { "-e", "show databases;" }, ERRNO_OK);
   }
 
-  @Test
-  public void testSqlFromCmdWithDBName() {
-    verifyCMD(null, "testTbl", os, new String[]{"-e", "show tables;", "--database", "test"}, 0);
+  @Test public void testSqlFromCmdWithDBName() {
+    verifyCMD(null, "testTbl", os, new String[] { "-e", "show tables;", "--database", "test" },
+        ERRNO_OK);
   }
 
-  @Test
-  public void testInvalidOptions() {
-    verifyCMD(null, "The '-e' and '-f' options cannot be specified simultaneously", errS, new
-        String[]{"-e", "show tables;", "-f", "path/to/file"}, 1);
+  @Test public void testInvalidOptions() {
+    verifyCMD(null, "The '-e' and '-f' options cannot be specified simultaneously", errS,
+        new String[] { "-e", "show tables;", "-f", "path/to/file" }, ERRNO_ARGS);
   }
 
-  @Test
-  public void testInvalidOptions2() {
-    verifyCMD(null, "Unrecognized option: -k", errS, new String[]{"-k"}, 1);
+  @Test public void testInvalidOptions2() {
+    verifyCMD(null, "Unrecognized option: -k", errS, new String[] { "-k" }, ERRNO_ARGS);
   }
 
   private void redirectOutputStream() {
@@ -124,30 +129,36 @@ public class TestHiveCli {
     System.setErr(errPs);
   }
 
-  private void initFileFromFile() {
+  private void initFromFile() {
+    tmp = generateTmpFile(CMD);
+    if (tmp == null) {
+      Assert.fail("Fail to create the initial file");
+    }
+    executeCMD(new String[] { "-f", "\"" + tmp.getAbsolutePath() + "\"" }, null, 0);
+  }
+
+  private File generateTmpFile(String context) {
+    File file = null;
     BufferedWriter bw = null;
     try {
-      // create a tmp file
-      tmp = File.createTempFile("test", ".sql");
-      bw = new BufferedWriter(new FileWriter(tmp));
-      bw.write(CMD);
+      file = File.createTempFile("test", ".sql");
+      bw = new BufferedWriter(new FileWriter(file));
+      bw.write(context);
     } catch (IOException e) {
       LOG.error("Failed to write tmp file due to the exception: " + e);
     } finally {
       IOUtils.closeQuietly(bw);
     }
-    executeCMD(new String[]{"-f", "\"" + tmp.getAbsolutePath() + "\""}, null, 0);
+    return file;
   }
 
-  @Before
-  public void setup() {
+  @Before public void setup() {
     cli = new HiveCli();
     redirectOutputStream();
-    initFileFromFile();
+    initFromFile();
   }
 
-  @After
-  public void tearDown() {
+  @After public void tearDown() {
     tmp.delete();
   }
 }


[12/33] hive git commit: HIVE-11191: Beeline-cli: support hive.cli.errors.ignore in new CLI(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11191: Beeline-cli: support hive.cli.errors.ignore in new CLI(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/eccfdf0e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/eccfdf0e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/eccfdf0e

Branch: refs/heads/master
Commit: eccfdf0ed7f1847ba1c0e3ad5aee0f2a6c9857c8
Parents: f589e2c
Author: Ferdinand Xu <ch...@intel.com>
Authored: Thu Jul 9 20:58:14 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Jul 9 20:58:14 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   | 37 ++++++++++++++++----
 .../org/apache/hive/beeline/BeeLineOpts.java    | 18 ++++++++++
 .../java/org/apache/hive/beeline/Commands.java  | 36 ++++++++++++++-----
 .../apache/hive/beeline/cli/TestHiveCli.java    |  3 +-
 4 files changed, 77 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/eccfdf0e/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index c4dbcd4..7c53997 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -87,7 +87,6 @@ import org.apache.commons.cli.GnuParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
 import org.apache.hive.jdbc.Utils;
@@ -406,10 +405,8 @@ public class BeeLine implements Closeable {
   String getApplicationTitle() {
     Package pack = BeeLine.class.getPackage();
 
-    return loc("app-introduction", new Object[] {
-        "Beeline",
-        pack.getImplementationVersion() == null ? "???"
-            : pack.getImplementationVersion(),
+    return loc("app-introduction", new Object[] { "Beeline",
+        pack.getImplementationVersion() == null ? "???" : pack.getImplementationVersion(),
         "Apache Hive",
         // getManifestAttribute ("Specification-Title"),
         // getManifestAttribute ("Implementation-Version"),
@@ -826,8 +823,10 @@ public class BeeLine implements Closeable {
       } else {
         int code = initArgsFromCliVars(args);
         defaultConnect(false);
-        if (code != 0)
+        if (code != 0){
           return code;
+        }
+        getOpts().updateBeeLineOptsFromConf();
       }
 
       if (getOpts().getScriptFile() != null) {
@@ -1077,8 +1076,32 @@ public class BeeLine implements Closeable {
       return cmdMap.values().iterator().next()
           .execute(line);
     } else {
-      return commands.sql(line, getOpts().getEntireLineAsCommand());
+      boolean needsUpdate = isConfNeedsUpdate(line);
+      boolean res = commands.sql(line, getOpts().getEntireLineAsCommand());
+      if (needsUpdate) {
+        getOpts().setHiveConf(getCommands().getHiveConf(true));
+      }
+      return res;
+    }
+  }
+
+  /**
+   * Update the configurations for the CLI mode in the client side
+   *
+   * @param line
+   */
+  private boolean isConfNeedsUpdate(String line) {
+    if (isBeeLine) {
+      return false;
+    }
+    String[] cmds = line.split(";");
+    boolean containsSetCMD = false;
+    for (String s : cmds) {
+      if (s.toLowerCase().startsWith("set")) {
+        return true;
+      }
     }
+    return containsSetCMD;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hive/blob/eccfdf0e/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
index c1ec82a..894f74f 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
@@ -42,6 +42,7 @@ import jline.Terminal;
 import jline.TerminalFactory;
 import jline.console.completer.Completer;
 import jline.console.completer.StringsCompleter;
+import org.apache.hadoop.hive.conf.HiveConf;
 
 class BeeLineOpts implements Completer {
   public static final int DEFAULT_MAX_WIDTH = 80;
@@ -78,6 +79,8 @@ class BeeLineOpts implements Completer {
   int timeout = -1;
   private String isolation = DEFAULT_ISOLATION_LEVEL;
   private String outputFormat = "table";
+  // This configuration is used only for client side configuration.
+  private HiveConf conf;
   private boolean trimScripts = true;
   private boolean allowMultiLineCommand = true;
 
@@ -219,6 +222,21 @@ class BeeLineOpts implements Completer {
     loadProperties(p);
   }
 
+  /**
+   * Update the options after connection is established in CLI mode.
+   */
+  public void updateBeeLineOptsFromConf() {
+    if (!beeLine.isBeeLine()) {
+      if (conf == null) {
+        conf = beeLine.getCommands().getHiveConf(true);
+      }
+      setForce(HiveConf.getBoolVar(conf, HiveConf.ConfVars.CLIIGNOREERRORS));
+    }
+  }
+
+  public void setHiveConf(HiveConf conf) {
+    this.conf = conf;
+  }
 
   public void loadProperties(Properties props) {
     for (Object element : props.keySet()) {

http://git-wip-us.apache.org/repos/asf/hive/blob/eccfdf0e/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index d490273..b07388a 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -721,7 +721,7 @@ public class Commands {
    */
   private Map<String, String> getHiveVariables() {
     Map<String, String> result = new HashMap<>();
-    BufferedRows rows = getConfInternal();
+    BufferedRows rows = getConfInternal(true);
     while (rows.hasNext()) {
       Rows.Row row = (Rows.Row) rows.next();
       if (!row.isMeta) {
@@ -731,27 +731,45 @@ public class Commands {
     return result;
   }
 
-  private HiveConf getHiveConf() {
+  /**
+   * This method should only be used in CLI mode.
+   *
+   * @return the hive configuration from server side
+   */
+  public HiveConf getHiveConf(boolean call) {
     HiveConf conf = new HiveConf();
-    BufferedRows rows = getConfInternal();
-    while (rows.hasNext()) {
+    BufferedRows rows = getConfInternal(call);
+    while (rows != null && rows.hasNext()) {
       addConf((Rows.Row) rows.next(), conf);
     }
     return conf;
   }
 
-  private BufferedRows getConfInternal() {
+  /**
+   * Use call statement to retrieve the configurations for substitution and sql for the substitution.
+   *
+   * @param call
+   * @return
+   */
+  private BufferedRows getConfInternal(boolean call) {
     Statement stmnt = null;
     BufferedRows rows = null;
     try {
-      stmnt = beeLine.createStatement();
-      boolean hasResults = stmnt.execute("set");
+      boolean hasResults;
+      if (call) {
+        stmnt = beeLine.getDatabaseConnection().getConnection().prepareCall("set");
+        hasResults = ((CallableStatement) stmnt).execute();
+      } else {
+        stmnt = beeLine.createStatement();
+        hasResults = stmnt.execute("set");
+      }
       if (hasResults) {
         ResultSet rs = stmnt.getResultSet();
         rows = new BufferedRows(beeLine, rs);
       }
     } catch (SQLException e) {
       beeLine.error(e);
+    } finally {
       if (stmnt != null) {
         try {
           stmnt.close();
@@ -802,7 +820,7 @@ public class Commands {
     String[] tokens = tokenizeCmd(cmd);
     String cmd_1 = getFirstCmd(cmd, tokens[0].length());
 
-    cmd_1 = substituteVariables(getHiveConf(), cmd_1);
+    cmd_1 = substituteVariables(getHiveConf(false), cmd_1);
     File sourceFile = new File(cmd_1);
     if (!sourceFile.isFile()) {
       return false;
@@ -1020,7 +1038,7 @@ public class Commands {
     }
 
     line = line.substring("sh".length()).trim();
-    line = substituteVariables(getHiveConf(), line.trim());
+    line = substituteVariables(getHiveConf(false), line.trim());
 
     try {
       ShellCmdExecutor executor = new ShellCmdExecutor(line, beeLine.getOutputStream(),

http://git-wip-us.apache.org/repos/asf/hive/blob/eccfdf0e/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index ff8ab17..fa94c89 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -78,7 +78,8 @@ public class TestHiveCli {
       int retCode) {
     executeCMD(options, CMD, retCode);
     String output = os.toString();
-    Assert.assertTrue(output.contains(keywords));
+    Assert.assertTrue("The expected keyword doesn't occur in the output: " + output,
+        output.contains(keywords));
   }
 
   @Test


[25/33] hive git commit: HIVE-11770: Use the static variable from beeline instead of untils from JDBC(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11770: Use the static variable from beeline instead of untils from JDBC(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6380de2b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6380de2b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6380de2b

Branch: refs/heads/master
Commit: 6380de2bcaf300d24d55fcc86c23fc2fd6bf68c3
Parents: 5c39d07
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Sep 9 21:45:17 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Sep 9 21:45:17 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java     | 3 +--
 beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java | 4 ----
 jdbc/src/java/org/apache/hive/jdbc/Utils.java             | 4 ++--
 3 files changed, 3 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/6380de2b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 5db1bf7..d8e44de 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -92,7 +92,6 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
-import org.apache.hive.jdbc.Utils;
 
 import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME;
 
@@ -881,7 +880,7 @@ public class BeeLine implements Closeable {
   }
 
   private int embeddedConnect() {
-    if (!execCommandWithPrefix("!connect " + Utils.URL_PREFIX + " '' ''")) {
+    if (!execCommandWithPrefix("!connect " + BEELINE_DEFAULT_JDBC_URL + " '' ''")) {
       return ERRNO_OTHER;
     } else {
       return ERRNO_OK;

http://git-wip-us.apache.org/repos/asf/hive/blob/6380de2b/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java b/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
index 3e0da77..1e7f068 100644
--- a/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
+++ b/beeline/src/java/org/apache/hive/beeline/cli/HiveCli.java
@@ -18,13 +18,9 @@
 package org.apache.hive.beeline.cli;
 
 import org.apache.hive.beeline.BeeLine;
-import org.apache.hive.jdbc.Utils;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 public class HiveCli {
   private BeeLine beeLine;

http://git-wip-us.apache.org/repos/asf/hive/blob/6380de2b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
index e4df7f4..d8368a4 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
@@ -36,12 +36,12 @@ import org.apache.hive.service.cli.thrift.TStatusCode;
 import org.apache.http.client.CookieStore;
 import org.apache.http.cookie.Cookie;
 
-public class Utils {
+class Utils {
   static final Log LOG = LogFactory.getLog(Utils.class.getName());
   /**
     * The required prefix for the connection URL.
     */
-  public static final String URL_PREFIX = "jdbc:hive2://";
+  static final String URL_PREFIX = "jdbc:hive2://";
 
   /**
     * If host is provided, without a port.


[02/33] hive git commit: Merge branch 'master' into beeline-cli

Posted by xu...@apache.org.
Merge branch 'master' into beeline-cli


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/753b2b30
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/753b2b30
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/753b2b30

Branch: refs/heads/master
Commit: 753b2b308afeb3808a3c10de5474f863d975a46f
Parents: 2ddd86d 3e713bc
Author: Xuefu Zhang <xz...@Cloudera.com>
Authored: Thu May 14 21:31:01 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
Committed: Thu May 14 21:31:01 2015 -0700

----------------------------------------------------------------------
 .../src/test/templates/TestAccumuloCliDriver.vm |    19 +-
 .../apache/hadoop/hive/ant/QTestGenTask.java    |    25 +
 .../java/org/apache/hive/beeline/BeeLine.java   |    10 +-
 bin/beeline.cmd                                 |    11 +-
 bin/ext/hiveserver2.cmd                         |     2 +-
 bin/ext/orcfiledump.sh                          |     9 +-
 bin/hive                                        |     2 +-
 .../org/apache/hadoop/hive/conf/HiveConf.java   |    27 +-
 data/files/tjoin1.txt                           |     3 +
 data/files/tjoin2.txt                           |     4 +
 dev-support/jenkins-execute-build.sh            |     2 +-
 dev-support/jenkins-execute-hms-test.sh         |     4 +-
 .../src/test/templates/TestHBaseCliDriver.vm    |    18 +-
 .../templates/TestHBaseNegativeCliDriver.vm     |    19 +-
 .../apache/hive/hcatalog/common/HCatUtil.java   |    37 +-
 .../hive/hcatalog/common/HiveClientCache.java   |    94 +-
 .../DefaultOutputCommitterContainer.java        |     6 +-
 .../mapreduce/FileOutputCommitterContainer.java |    22 +-
 .../mapreduce/FileOutputFormatContainer.java    |     8 +-
 .../hcatalog/mapreduce/HCatBaseInputFormat.java |    50 +-
 .../hcatalog/mapreduce/HCatOutputFormat.java    |     6 +-
 .../hcatalog/mapreduce/HCatRecordReader.java    |     4 +-
 .../hive/hcatalog/mapreduce/HCatSplit.java      |    21 +-
 .../hive/hcatalog/mapreduce/HCatTableInfo.java  |    12 +
 .../hcatalog/mapreduce/InitializeInput.java     |     6 +-
 .../hive/hcatalog/mapreduce/InputJobInfo.java   |     5 +
 .../hive/hcatalog/mapreduce/PartInfo.java       |   117 +-
 .../hive/hcatalog/mapreduce/Security.java       |    10 +-
 .../mapreduce/TaskCommitContextRegistry.java    |     6 +-
 .../hcatalog/common/TestHiveClientCache.java    |    37 +-
 .../hcatalog/mapreduce/HCatMapReduceTest.java   |     3 +-
 .../mapreduce/TestHCatOutputFormat.java         |     5 +-
 .../hcatalog/mapreduce/TestHCatPartitioned.java |    32 +-
 .../hcatalog/mapreduce/TestPassProperties.java  |     5 +-
 .../apache/hive/hcatalog/pig/PigHCatUtil.java   |    10 +-
 .../deployers/config/webhcat/webhcat-site.xml   |     9 +-
 .../templeton/deployers/deploy_e2e_artifacts.sh |     3 +
 .../src/test/e2e/templeton/deployers/env.sh     |     1 +
 .../streaming/AbstractRecordWriter.java         |    11 +-
 .../hive/hcatalog/streaming/HiveEndPoint.java   |     9 +-
 .../hive/hcatalog/api/HCatClientHMSImpl.java    |    17 +-
 .../hcatalog/api/repl/TestReplicationTask.java  |    14 +-
 hcatalog/webhcat/svr/pom.xml                    |    13 +-
 .../svr/src/main/config/webhcat-default.xml     |    10 +-
 .../hcatalog/templeton/CompleteDelegator.java   |     6 +-
 .../hcatalog/templeton/SecureProxySupport.java  |     9 +-
 .../hcatalog/templeton/tool/LaunchMapper.java   |     2 +-
 .../templeton/tool/TempletonControllerJob.java  |    15 +-
 .../hive/metastore/TestHiveMetaStore.java       |    30 +
 .../hive/beeline/TestBeeLineWithArgs.java       |    12 +
 .../test/resources/testconfiguration.properties |     9 +-
 .../org/apache/hadoop/hive/ql/QTestUtil.java    |    46 +
 .../org/apache/hive/jdbc/HiveConnection.java    |     3 +-
 metastore/dbs/derby/execute.sh                  |    37 +
 metastore/dbs/derby/prepare.sh                  |    63 +
 metastore/dbs/postgres/execute.sh               |    29 +
 metastore/dbs/postgres/prepare.sh               |    72 +
 .../upgrade/mssql/006-HIVE-9456.mssql.sql       |   323 +
 .../upgrade/mssql/hive-schema-1.2.0.mssql.sql   |   256 +-
 .../upgrade/mssql/hive-schema-1.3.0.mssql.sql   |   256 +-
 .../mssql/upgrade-1.1.0-to-1.2.0.mssql.sql      |     1 +
 .../upgrade/mysql/021-HIVE-7018.mysql.sql       |    53 -
 .../upgrade/mysql/hive-schema-1.2.0.mysql.sql   |    10 +-
 .../upgrade/mysql/hive-schema-1.3.0.mysql.sql   |    10 +-
 .../mysql/upgrade-1.1.0-to-1.2.0.mysql.sql      |     2 +-
 .../hive/metastore/AggregateStatsCache.java     |    33 +-
 .../hadoop/hive/metastore/HiveMetaStore.java    |    27 +-
 .../hive/metastore/HiveMetaStoreClient.java     |     6 +-
 .../hadoop/hive/metastore/IMetaStoreClient.java |     3 +
 .../hive/metastore/MetaStoreDirectSql.java      |    24 +-
 .../hive/metastore/RetryingMetaStoreClient.java |    89 +-
 .../hadoop/hive/metastore/txn/TxnHandler.java   |    35 +-
 .../hive/metastore/TestHiveMetastoreCli.java    |    63 +
 .../hive/metastore/txn/TestTxnHandler.java      |    39 +-
 packaging/src/main/assembly/bin.xml             |     1 +
 pom.xml                                         |     5 +
 .../java/org/apache/hadoop/hive/ql/Context.java |    10 +-
 .../hive/ql/exec/CommonMergeJoinOperator.java   |    54 +-
 .../hadoop/hive/ql/exec/FunctionRegistry.java   |     7 +-
 .../hadoop/hive/ql/exec/HashTableLoader.java    |     4 +-
 .../hadoop/hive/ql/exec/MapJoinOperator.java    |   227 +-
 .../apache/hadoop/hive/ql/exec/ObjectCache.java |     7 +
 .../apache/hadoop/hive/ql/exec/Operator.java    |     4 +
 .../hadoop/hive/ql/exec/ReduceSinkOperator.java |     3 +-
 .../apache/hadoop/hive/ql/exec/Registry.java    |    29 +-
 .../apache/hadoop/hive/ql/exec/Utilities.java   |    18 +
 .../hadoop/hive/ql/exec/mr/ExecDriver.java      |     1 +
 .../hadoop/hive/ql/exec/mr/HashTableLoader.java |     2 +-
 .../hadoop/hive/ql/exec/mr/ObjectCache.java     |     5 +
 .../persistence/BytesBytesMultiHashMap.java     |     1 +
 .../exec/persistence/HybridHashTableConf.java   |    86 +
 .../persistence/HybridHashTableContainer.java   |   248 +-
 .../ql/exec/persistence/KeyValueContainer.java  |    31 +-
 .../ql/exec/persistence/ObjectContainer.java    |    31 +-
 .../hive/ql/exec/spark/HashTableLoader.java     |     2 +-
 .../hadoop/hive/ql/exec/tez/DagUtils.java       |     1 +
 .../hive/ql/exec/tez/HashTableLoader.java       |    65 +-
 .../hadoop/hive/ql/exec/tez/ObjectCache.java    |     6 +
 .../hive/ql/exec/tez/TezSessionState.java       |    13 +-
 .../ql/exec/vector/VectorColumnSetInfo.java     |     3 +-
 .../exec/vector/VectorMapJoinBaseOperator.java  |   185 +
 .../ql/exec/vector/VectorMapJoinOperator.java   |   127 +-
 .../VectorMapJoinOuterFilteredOperator.java     |   120 +
 .../mapjoin/VectorMapJoinCommonOperator.java    |    16 +-
 .../VectorMapJoinGenerateResultOperator.java    |    34 +-
 .../VectorMapJoinInnerBigOnlyLongOperator.java  |     5 +
 ...ctorMapJoinInnerBigOnlyMultiKeyOperator.java |     5 +
 ...VectorMapJoinInnerBigOnlyStringOperator.java |     5 +
 ...ectorMapJoinInnerGenerateResultOperator.java |    15 +
 .../mapjoin/VectorMapJoinInnerLongOperator.java |     4 +
 .../VectorMapJoinInnerMultiKeyOperator.java     |     4 +
 .../VectorMapJoinInnerStringOperator.java       |     4 +
 .../VectorMapJoinLeftSemiLongOperator.java      |     5 +
 .../VectorMapJoinLeftSemiMultiKeyOperator.java  |     5 +
 .../VectorMapJoinLeftSemiStringOperator.java    |     5 +
 ...ectorMapJoinOuterGenerateResultOperator.java |    31 +-
 .../mapjoin/VectorMapJoinOuterLongOperator.java |     4 +
 .../VectorMapJoinOuterMultiKeyOperator.java     |     4 +
 .../VectorMapJoinOuterStringOperator.java       |     4 +
 .../mapjoin/VectorMapJoinRowBytesContainer.java |     2 +-
 .../fast/VectorMapJoinFastBytesHashMap.java     |     4 +-
 .../VectorMapJoinFastBytesHashMultiSet.java     |     4 +-
 .../fast/VectorMapJoinFastBytesHashSet.java     |     4 +-
 .../fast/VectorMapJoinFastBytesHashTable.java   |     4 +-
 .../mapjoin/fast/VectorMapJoinFastHashMap.java  |     4 +-
 .../fast/VectorMapJoinFastHashMultiSet.java     |     4 +-
 .../mapjoin/fast/VectorMapJoinFastHashSet.java  |     4 +-
 .../fast/VectorMapJoinFastHashTable.java        |     4 +-
 .../fast/VectorMapJoinFastHashTableLoader.java  |     4 +-
 .../fast/VectorMapJoinFastLongHashMap.java      |     4 +-
 .../fast/VectorMapJoinFastLongHashMultiSet.java |     4 +-
 .../fast/VectorMapJoinFastLongHashSet.java      |     4 +-
 .../fast/VectorMapJoinFastLongHashTable.java    |     4 +-
 .../fast/VectorMapJoinFastMultiKeyHashMap.java  |     6 +-
 .../VectorMapJoinFastMultiKeyHashMultiSet.java  |     4 +-
 .../fast/VectorMapJoinFastMultiKeyHashSet.java  |     4 +-
 .../fast/VectorMapJoinFastStringHashMap.java    |     4 +-
 .../VectorMapJoinFastStringHashMultiSet.java    |     4 +-
 .../fast/VectorMapJoinFastStringHashSet.java    |     4 +-
 .../fast/VectorMapJoinFastTableContainer.java   |    23 +-
 .../hive/ql/io/orc/ColumnStatisticsImpl.java    |    33 +-
 .../hive/ql/io/orc/DateColumnStatistics.java    |     6 +-
 .../apache/hadoop/hive/ql/io/orc/FileDump.java  |    91 +-
 .../hadoop/hive/ql/io/orc/JsonFileDump.java     |   365 +
 .../hadoop/hive/ql/io/orc/RecordReaderImpl.java |   222 +-
 .../hive/ql/io/sarg/SearchArgumentImpl.java     |    85 +-
 .../ql/lockmgr/zookeeper/ZooKeeperHiveLock.java |    22 +
 .../BucketingSortingReduceSinkOptimizer.java    |    13 +
 .../optimizer/ConstantPropagateProcFactory.java |    83 +-
 .../ql/optimizer/IdentityProjectRemover.java    |    12 +
 .../ql/optimizer/LimitPushdownOptimizer.java    |     9 +-
 .../ql/optimizer/NonBlockingOpDeDupProc.java    |    11 +
 .../hadoop/hive/ql/optimizer/Optimizer.java     |    12 +-
 .../ql/optimizer/calcite/cost/HiveCost.java     |    16 +-
 .../calcite/reloperators/HiveSortExchange.java  |    37 +-
 .../rules/HiveInsertExchange4JoinRule.java      |     6 +-
 .../calcite/translator/HiveOpConverter.java     |    28 +-
 .../translator/HiveOpConverterPostProc.java     |    10 +
 .../hive/ql/optimizer/physical/Vectorizer.java  |    23 +-
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |     1 +
 .../apache/hadoop/hive/ql/parse/HiveParser.g    |    19 +-
 .../org/apache/hadoop/hive/ql/parse/QB.java     |    10 +-
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |   104 +-
 .../hadoop/hive/ql/parse/WindowingSpec.java     |     7 +-
 .../apache/hadoop/hive/ql/plan/MapJoinDesc.java |     2 +-
 .../apache/hadoop/hive/ql/plan/PlanUtils.java   |    46 +-
 .../MetaStoreAuthzAPIAuthorizerEmbedOnly.java   |     3 +-
 .../hadoop/hive/ql/session/SessionState.java    |    31 +-
 .../hadoop/hive/ql/txn/compactor/Cleaner.java   |    38 +-
 .../hive/ql/txn/compactor/CompactorThread.java  |    12 +-
 .../hadoop/hive/ql/txn/compactor/Initiator.java |    11 +-
 .../hadoop/hive/ql/txn/compactor/Worker.java    |    42 +-
 .../org/apache/hadoop/hive/ql/udf/UDFMd5.java   |    79 +
 .../hive/ql/udf/generic/GenericUDFQuarter.java  |    85 +
 .../apache/hadoop/hive/ql/TestTxnCommands2.java |    18 +-
 .../fast/TestVectorMapJoinFastLongHashMap.java  |    14 +-
 .../TestVectorMapJoinFastMultiKeyHashMap.java   |    14 +-
 .../hive/ql/io/orc/TestColumnStatistics.java    |    20 +-
 .../hadoop/hive/ql/io/orc/TestJsonFileDump.java |   138 +
 .../hive/ql/io/orc/TestRecordReaderImpl.java    |   170 +-
 .../hive/ql/io/sarg/TestSearchArgumentImpl.java |   104 +-
 ...tedCharsInColumnNameCreateTableNegative.java |    87 +
 .../hadoop/hive/ql/plan/TestViewEntity.java     |   108 +
 .../hive/ql/txn/compactor/TestCleaner.java      |    56 +-
 .../hive/ql/txn/compactor/TestInitiator.java    |    63 +-
 .../hive/ql/txn/compactor/TestWorker.java       |    45 +
 .../hadoop/hive/ql/udf/TestGenericUDFDate.java  |    92 -
 .../hive/ql/udf/TestGenericUDFDateAdd.java      |   145 -
 .../hive/ql/udf/TestGenericUDFDateDiff.java     |   116 -
 .../hive/ql/udf/TestGenericUDFDateSub.java      |   143 -
 .../hadoop/hive/ql/udf/TestGenericUDFUtils.java |    58 -
 .../apache/hadoop/hive/ql/udf/TestUDFMd5.java   |    57 +
 .../hive/ql/udf/generic/TestGenericUDFDate.java |    92 +
 .../ql/udf/generic/TestGenericUDFDateAdd.java   |   143 +
 .../ql/udf/generic/TestGenericUDFDateDiff.java  |   116 +
 .../ql/udf/generic/TestGenericUDFDateSub.java   |   143 +
 .../ql/udf/generic/TestGenericUDFQuarter.java   |   182 +
 .../ql/udf/generic/TestGenericUDFUtils.java     |    57 +
 .../clientpositive/auto_sortmerge_join_13.q     |     2 +
 .../test/queries/clientpositive/bucket_many.q   |    16 +
 .../test/queries/clientpositive/explainuser_2.q |     1 +
 .../extrapolate_part_stats_partial.q            |     2 +
 .../extrapolate_part_stats_partial_ndv.q        |     2 +
 ql/src/test/queries/clientpositive/fold_case.q  |    12 +
 ql/src/test/queries/clientpositive/fold_when.q  |    31 +
 .../clientpositive/hybridgrace_hashjoin_1.q     |   258 +
 .../clientpositive/hybridgrace_hashjoin_2.q     |   152 +
 .../queries/clientpositive/hybridhashjoin.q     |   250 -
 .../clientpositive/insert_overwrite_directory.q |   141 +
 .../queries/clientpositive/limit_pushdown.q     |     4 +
 .../queries/clientpositive/mapjoin_mapjoin.q    |     1 +
 ql/src/test/queries/clientpositive/mergejoin.q  |    17 +
 .../test/queries/clientpositive/tez_join_hash.q |     2 +
 .../test/queries/clientpositive/tez_smb_main.q  |     6 +
 ql/src/test/queries/clientpositive/udf_md5.q    |    13 +
 .../test/queries/clientpositive/udf_quarter.q   |   100 +
 .../clientpositive/vector_binary_join_groupby.q |    55 +
 .../clientpositive/vector_left_outer_join2.q    |    62 +
 .../clientpositive/vector_leftsemi_mapjoin.q    |   403 +
 .../clientpositive/windowing_windowspec.q       |     2 +
 ql/src/test/resources/orc-file-dump.json        |  1354 ++
 .../annotate_stats_join_pkfk.q.out              |    20 +-
 .../results/clientpositive/bucket_many.q.out    |   230 +
 .../encryption_insert_partition_static.q.out    |    14 +-
 .../test/results/clientpositive/fold_case.q.out |   301 +
 .../test/results/clientpositive/fold_when.q.out |   480 +
 .../insert_overwrite_directory.q.out            |  1813 +++
 ql/src/test/results/clientpositive/join32.q.out |    84 +-
 .../clientpositive/join32_lessSize.q.out        |   423 +-
 ql/src/test/results/clientpositive/join33.q.out |    84 +-
 .../clientpositive/join_alt_syntax.q.out        |   306 +-
 .../clientpositive/join_cond_pushdown_2.q.out   |   150 +-
 .../clientpositive/join_cond_pushdown_4.q.out   |   150 +-
 .../results/clientpositive/limit_pushdown.q.out |    88 +
 .../test/results/clientpositive/mergejoin.q.out |   844 +-
 .../ql_rewrite_gbtoidx_cbo_2.q.out              |    14 +-
 .../results/clientpositive/show_functions.q.out |     3 +
 .../results/clientpositive/spark/cbo_gby.q.out  |     4 +-
 .../clientpositive/spark/cbo_udf_udaf.q.out     |     2 +-
 ...pby_complex_types_multi_single_reducer.q.out |    38 +-
 .../results/clientpositive/spark/join32.q.out   |    88 +-
 .../clientpositive/spark/join32_lessSize.q.out  |   286 +-
 .../results/clientpositive/spark/join33.q.out   |    88 +-
 .../clientpositive/spark/join_alt_syntax.q.out  |   210 +-
 .../spark/join_cond_pushdown_2.q.out            |    98 +-
 .../spark/join_cond_pushdown_4.q.out            |    98 +-
 .../spark/lateral_view_explode2.q.out           |     4 +-
 .../clientpositive/spark/limit_pushdown.q.out   |    94 +
 .../clientpositive/spark/union_remove_25.q.out  |     2 +-
 .../clientpositive/spark/union_top_level.q.out  |    16 +-
 .../spark/vector_cast_constant.q.java1.7.out    |    16 +-
 .../spark/vector_cast_constant.q.java1.8.out    |    16 +-
 .../spark/vectorized_timestamp_funcs.q.out      |     4 +-
 .../clientpositive/tez/auto_join29.q.out        |   500 +
 .../clientpositive/tez/explainuser_2.q.out      |  1529 +-
 .../tez/hybridgrace_hashjoin_1.q.out            |  1587 ++
 .../tez/hybridgrace_hashjoin_2.q.out            |  1417 ++
 .../clientpositive/tez/hybridhashjoin.q.out     |  1566 --
 .../clientpositive/tez/limit_pushdown.q.out     |    94 +
 .../results/clientpositive/tez/mergejoin.q.out  |   844 +-
 .../tez/vector_binary_join_groupby.q.out        |   303 +
 .../tez/vector_left_outer_join2.q.out           |   553 +
 .../tez/vector_leftsemi_mapjoin.q.out           | 13807 +++++++++++++++++
 .../test/results/clientpositive/udf_md5.q.out   |    61 +
 .../results/clientpositive/udf_quarter.q.out    |   246 +
 .../vector_binary_join_groupby.q.out            |   293 +
 .../vector_left_outer_join2.q.out               |   568 +
 .../vector_leftsemi_mapjoin.q.out               | 13572 ++++++++++++++++
 .../clientpositive/windowing_windowspec.q.out   |   108 +
 ql/src/test/templates/TestCliDriver.vm          |    18 +-
 ql/src/test/templates/TestCompareCliDriver.vm   |    21 +-
 ql/src/test/templates/TestNegativeCliDriver.vm  |    18 +-
 ql/src/test/templates/TestParseNegative.vm      |    17 +-
 .../hadoop/hive/ql/io/sarg/PredicateLeaf.java   |    19 +-
 service/pom.xml                                 |     5 +
 .../auth/LdapAuthenticationProviderImpl.java    |     2 +-
 .../thrift/EmbeddedThriftBinaryCLIService.java  |     5 +
 .../cli/thrift/ThriftBinaryCLIService.java      |     1 -
 .../apache/hive/service/server/HiveServer2.java |   106 +-
 .../service/cli/session/TestSessionHooks.java   |     3 +-
 testutils/metastore/execute-test-on-lxc.sh      |     7 +-
 .../ptest2/src/main/resources/source-prep.vm    |    11 +
 .../hive/ptest/execution/TestScripts.java       |    23 +
 .../TestScripts.testPrepGit.approved.txt        |     2 +-
 .../TestScripts.testPrepHadoop1.approved.txt    |   111 +
 .../TestScripts.testPrepNone.approved.txt       |     2 +-
 .../TestScripts.testPrepSvn.approved.txt        |     2 +-
 287 files changed, 47828 insertions(+), 6152 deletions(-)
----------------------------------------------------------------------



[21/33] hive git commit: HIVE-11637: Support hive.cli.print.current.db in new CLI[beeline-cli branch](Ferdinand Xu, reviewed by Dong Chen)

Posted by xu...@apache.org.
HIVE-11637: Support hive.cli.print.current.db in new CLI[beeline-cli branch](Ferdinand Xu, reviewed by Dong Chen)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3d088de0
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3d088de0
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3d088de0

Branch: refs/heads/master
Commit: 3d088de024ee277e9bb1d650ffef71c300266e7f
Parents: 1f5c745
Author: Ferdinand Xu <ch...@intel.com>
Authored: Wed Aug 26 23:18:43 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Wed Aug 26 23:18:43 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/hive/beeline/BeeLine.java   |  62 ++++++-----
 .../hive/beeline/ClientCommandHookFactory.java  |  85 +++++++++++++++
 .../org/apache/hive/beeline/ClientHook.java     |  33 ++++++
 .../java/org/apache/hive/beeline/Commands.java  |   8 ++
 .../beeline/TestClientCommandHookFactory.java   |  32 ++++++
 .../apache/hive/beeline/cli/TestHiveCli.java    | 103 ++++++++++++++-----
 6 files changed, 269 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index 406059d..1e4759b 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -94,6 +94,8 @@ import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
 import org.apache.hive.jdbc.Utils;
 
+import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME;
+
 /**
  * A console SQL shell with command completion.
  * <p>
@@ -132,6 +134,7 @@ public class BeeLine implements Closeable {
   private List<String> batch = null;
   private final Reflector reflector;
   private String dbName = null;
+  private String currentDatabase = null;
 
   private History history;
   private boolean isBeeLine = true;
@@ -1121,32 +1124,8 @@ public class BeeLine implements Closeable {
       return cmdMap.values().iterator().next()
           .execute(line);
     } else {
-      boolean needsUpdate = isConfNeedsUpdate(line);
-      boolean res = commands.sql(line, getOpts().getEntireLineAsCommand());
-      if (needsUpdate) {
-        getOpts().setHiveConf(getCommands().getHiveConf(false));
-      }
-      return res;
-    }
-  }
-
-  /**
-   * Update the configurations for the CLI mode in the client side
-   *
-   * @param line
-   */
-  private boolean isConfNeedsUpdate(String line) {
-    if (isBeeLine) {
-      return false;
-    }
-    String[] cmds = line.split(";");
-    boolean containsSetCMD = false;
-    for (String s : cmds) {
-      if (s.toLowerCase().startsWith("set")) {
-        return true;
-      }
+      return commands.sql(line, getOpts().getEntireLineAsCommand());
     }
-    return containsSetCMD;
   }
 
   /**
@@ -1410,7 +1389,27 @@ public class BeeLine implements Closeable {
     HiveConf conf = getCommands().getHiveConf(true);
     prompt = conf.getVar(HiveConf.ConfVars.CLIPROMPT);
     prompt = getCommands().substituteVariables(conf, prompt);
-    return prompt + "> ";
+    return prompt + getFormattedDb(conf) + "> ";
+  }
+
+  /**
+   * Retrieve the current database name string to display, based on the
+   * configuration value.
+   *
+   * @param conf storing whether or not to show current db
+   * @return String to show user for current db value
+   */
+  String getFormattedDb(HiveConf conf) {
+    if (!HiveConf.getBoolVar(conf, HiveConf.ConfVars.CLIPRINTCURRENTDB)) {
+      return "";
+    }
+    String currDb = getCurrentDatabase();
+
+    if (currDb == null) {
+      return "";
+    }
+
+    return " (" + currDb + ")";
   }
 
   String getPromptForBeeline() {
@@ -2158,4 +2157,15 @@ public class BeeLine implements Closeable {
   public void setBeeLine(boolean isBeeLine) {
     this.isBeeLine = isBeeLine;
   }
+
+  public String getCurrentDatabase() {
+    if (currentDatabase == null) {
+      currentDatabase = DEFAULT_DATABASE_NAME;
+    }
+    return currentDatabase;
+  }
+
+  public void setCurrentDatabase(String currentDatabase) {
+    this.currentDatabase = currentDatabase;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/java/org/apache/hive/beeline/ClientCommandHookFactory.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/ClientCommandHookFactory.java b/beeline/src/java/org/apache/hive/beeline/ClientCommandHookFactory.java
new file mode 100644
index 0000000..c4d97bc
--- /dev/null
+++ b/beeline/src/java/org/apache/hive/beeline/ClientCommandHookFactory.java
@@ -0,0 +1,85 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline;
+
+/**
+ * We need to update some client side information after executing some Hive Commands
+ */
+public class ClientCommandHookFactory {
+  private final static ClientCommandHookFactory instance = new ClientCommandHookFactory();
+
+  private ClientCommandHookFactory() {
+  }
+
+  public static ClientCommandHookFactory get() {
+    return instance;
+  }
+
+  public class SetCommandHook extends ClientHook {
+
+    public SetCommandHook(String sql) {
+      super(sql);
+    }
+
+    @Override
+    public void postHook(BeeLine beeLine) {
+      if (!beeLine.isBeeLine()) {
+        beeLine.getOpts().setHiveConf(beeLine.getCommands().getHiveConf(false));
+      }
+    }
+  }
+
+  public class UseCommandHook extends ClientHook {
+
+    public UseCommandHook(String sql) {
+      super(sql);
+    }
+
+    @Override
+    public void postHook(BeeLine beeLine) {
+      if (!beeLine.isBeeLine()) {
+        // Handler multi-line sql
+        String line = sql.replaceAll("\\s+", " ");
+        String strs[] = line.split(" ");
+        String dbName;
+        if (strs == null || strs.length != 2) {
+          // unable to parse the use command
+          dbName = "";
+        } else {
+          dbName = strs[1];
+        }
+        beeLine.setCurrentDatabase(dbName);
+      }
+    }
+  }
+
+  public ClientHook getHook(String cmdLine) {
+    if (cmdLine.toLowerCase().startsWith("set")) {
+      // Only set A = B command needs updating the configuration stored in client side.
+      if (cmdLine.contains("=")) {
+        return new SetCommandHook(cmdLine);
+      } else {
+        return null;
+      }
+    } else if (cmdLine.toLowerCase().startsWith("use")) {
+      return new UseCommandHook(cmdLine);
+    } else {
+      return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/java/org/apache/hive/beeline/ClientHook.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/ClientHook.java b/beeline/src/java/org/apache/hive/beeline/ClientHook.java
new file mode 100644
index 0000000..3de6def
--- /dev/null
+++ b/beeline/src/java/org/apache/hive/beeline/ClientHook.java
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline;
+
+/**
+ * This is the client's hook and used for new Hive CLI. For some configurations like
+ * set and use, it may change some prompt information in the client side. So the hook
+ * will be executed after some of the commands are used.
+ */
+public abstract class ClientHook {
+  protected String sql;
+
+  public ClientHook(String sql) {
+    this.sql = sql;
+  }
+
+  abstract void postHook(BeeLine beeLine);
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/java/org/apache/hive/beeline/Commands.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java
index 01349e2..5e5cfec 100644
--- a/beeline/src/java/org/apache/hive/beeline/Commands.java
+++ b/beeline/src/java/org/apache/hive/beeline/Commands.java
@@ -921,6 +921,11 @@ public class Commands {
       return true;
     }
 
+    ClientHook hook = null;
+    if (!beeLine.isBeeLine()) {
+      hook = ClientCommandHookFactory.get().getHook(sql);
+    }
+
     try {
       Statement stmnt = null;
       boolean hasResults;
@@ -988,6 +993,9 @@ public class Commands {
       return beeLine.error(e);
     }
     beeLine.showWarnings();
+    if (hook != null) {
+      hook.postHook(beeLine);
+    }
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/test/org/apache/hive/beeline/TestClientCommandHookFactory.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/TestClientCommandHookFactory.java b/beeline/src/test/org/apache/hive/beeline/TestClientCommandHookFactory.java
new file mode 100644
index 0000000..c86de0a
--- /dev/null
+++ b/beeline/src/test/org/apache/hive/beeline/TestClientCommandHookFactory.java
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hive.beeline;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+public class TestClientCommandHookFactory {
+  @Test
+  public void testGetHook() {
+    Assert.assertNull(ClientCommandHookFactory.get().getHook("set a;"));
+    Assert.assertTrue(ClientCommandHookFactory.get()
+        .getHook("set a=b;") instanceof ClientCommandHookFactory.SetCommandHook);
+    Assert.assertTrue(ClientCommandHookFactory.get()
+        .getHook("USE a.b") instanceof ClientCommandHookFactory.UseCommandHook);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/3d088de0/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
----------------------------------------------------------------------
diff --git a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
index 7f6ab13..e06d2ea 100644
--- a/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
+++ b/beeline/src/test/org/apache/hive/beeline/cli/TestHiveCli.java
@@ -74,92 +74,111 @@ public class TestHiveCli {
     }
   }
 
-  private void verifyCMD(String CMD, String keywords, OutputStream os, String[] options,
-      int retCode) {
+  /**
+   * This method is used for verifying CMD to see whether the output contains the keywords provided.
+   *
+   * @param CMD
+   * @param keywords
+   * @param os
+   * @param options
+   * @param retCode
+   * @param contains
+   */
+  private void verifyCMD(String CMD, String keywords, OutputStream os, String[] options, int retCode,
+      boolean contains) {
     executeCMD(options, CMD, retCode);
     String output = os.toString();
     LOG.debug(output);
-    Assert.assertTrue(
-        "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
-        output.contains(keywords));
+    if (contains) {
+      Assert.assertTrue(
+          "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
+          output.contains(keywords));
+    } else {
+      Assert.assertFalse(
+          "The expected keyword \"" + keywords + "\" doesn't occur in the output: " + output,
+          output.contains(keywords));
+    }
   }
 
   @Test
   public void testInValidCmd() {
-    verifyCMD("!lss\n", "Unknown command: lss", errS, null, ERRNO_OK);
+    verifyCMD("!lss\n", "Unknown command: lss", errS, null, ERRNO_OK, true);
   }
 
   @Test
   public void testSetPromptValue() {
-    verifyCMD("set hive.cli.prompt=MYCLI;SHOW\nTABLES;", "MYCLI> ", os, null, ERRNO_OK);
+    verifyCMD("set hive.cli.prompt=MYCLI;SHOW\nTABLES;", "MYCLI> ", os, null,
+        ERRNO_OK, true);
   }
 
   @Test
   public void testSetHeaderValue() {
     verifyCMD(
         "create database if not exists test;\ncreate table if not exists test.testTbl(a string, b string);\nset hive.cli.print.header=true;\n select * from test.testTbl;\n",
-        "testtbl.a testtbl.b", os, null, ERRNO_OK);
+        "testtbl.a testtbl.b", os, null, ERRNO_OK, true);
   }
 
   @Test
   public void testHelp() {
-    verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS);
+    verifyCMD(null, "usage: hive", os, new String[] { "-H" }, ERRNO_ARGS, true);
   }
 
   @Test
   public void testInvalidDatabaseOptions() {
-    verifyCMD("\nshow tables;\nquit;\n", "Database does not exist: invalidDB", errS,
-        new String[] { "--database", "invalidDB" }, ERRNO_OK);
+    verifyCMD("\nshow tables;\nquit;\n", "Database does not exist: invalidDB",
+        errS, new String[] { "--database", "invalidDB" }, ERRNO_OK, true);
   }
 
   @Test
   public void testDatabaseOptions() {
-    verifyCMD("\nshow tables;\nquit;", "testtbl", os, new String[] { "--database", "test" },
-        ERRNO_OK);
+    verifyCMD("\nshow tables;\nquit;", "testtbl", os,
+        new String[] { "--database", "test" }, ERRNO_OK, true);
   }
 
   @Test
   public void testSourceCmd() {
     File f = generateTmpFile(SOURCE_CONTEXT);
-    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl;\nquit;\n", "sc1", os,
-        new String[] { "--database", "test" }, ERRNO_OK);
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl;\nquit;\n",
+        "sc1", os, new String[] { "--database", "test" }, ERRNO_OK, true);
     f.delete();
   }
 
   @Test
   public void testSourceCmd2() {
     File f = generateTmpFile(SOURCE_CONTEXT3);
-    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl3;\nquit;\n", "sc3", os,
-        new String[] { "--database", "test" }, ERRNO_OK);
+    verifyCMD("source " + f.getPath() + ";" + "desc testSrcTbl3;\nquit;\n",
+        "sc3", os, new String[] { "--database", "test" }, ERRNO_OK, true);
     f.delete();
   }
 
   @Test
   public void testSqlFromCmd() {
-    verifyCMD(null, "", os, new String[] { "-e", "show databases;" }, ERRNO_OK);
+    verifyCMD(null, "", os, new String[] { "-e", "show databases;" }, ERRNO_OK, true);
   }
 
   @Test
   public void testSqlFromCmdWithDBName() {
-    verifyCMD(null, "testtbl", os, new String[] { "-e", "show tables;", "--database", "test" },
-        ERRNO_OK);
+    verifyCMD(null, "testtbl", os,
+        new String[] { "-e", "show tables;", "--database", "test" }, ERRNO_OK, true);
   }
 
   @Test
   public void testInvalidOptions() {
-    verifyCMD(null, "The '-e' and '-f' options cannot be specified simultaneously", errS,
-        new String[] { "-e", "show tables;", "-f", "path/to/file" }, ERRNO_ARGS);
+    verifyCMD(null,
+        "The '-e' and '-f' options cannot be specified simultaneously", errS,
+        new String[] { "-e", "show tables;", "-f", "path/to/file" }, ERRNO_ARGS, true);
   }
 
   @Test
   public void testInvalidOptions2() {
-    verifyCMD(null, "Unrecognized option: -k", errS, new String[] { "-k" }, ERRNO_ARGS);
+    verifyCMD(null, "Unrecognized option: -k", errS, new String[] { "-k" },
+        ERRNO_ARGS, true);
   }
 
   @Test
   public void testVariables() {
-    verifyCMD("set system:xxx=5;\nset system:yyy=${system:xxx};\nset system:yyy;", "", os, null,
-        ERRNO_OK);
+    verifyCMD(
+        "set system:xxx=5;\nset system:yyy=${system:xxx};\nset system:yyy;", "", os, null, ERRNO_OK, true);
   }
 
   @Test
@@ -167,14 +186,42 @@ public class TestHiveCli {
     File f = generateTmpFile(SOURCE_CONTEXT2);
     verifyCMD(
         "set hiveconf:zzz=" + f.getAbsolutePath() + ";\nsource ${hiveconf:zzz};\ndesc testSrcTbl2;",
-        "sc2", os, new String[] { "--database", "test" }, ERRNO_OK);
+        "sc2", os, new String[] { "--database", "test" }, ERRNO_OK, true);
     f.delete();
   }
 
   @Test
   public void testErrOutput() {
-    verifyCMD("show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
-        "cannot recognize input near 'lss' '<EOF>' '<EOF>'", errS, null, ERRNO_OK);
+    verifyCMD(
+        "show tables;set system:xxx=5;set system:yyy=${system:xxx};\nlss;",
+        "cannot recognize input near 'lss' '<EOF>' '<EOF>'", errS, null, ERRNO_OK, true);
+  }
+
+  @Test
+  public void testUseCurrentDB1() {
+    verifyCMD(
+        "create database if not exists testDB; set hive.cli.print.current.db=true;use testDB;\n"
+            + "use default;drop if exists testDB;", "hive (testDB)>", os, null, ERRNO_OK, true);
+  }
+
+  @Test
+  public void testUseCurrentDB2() {
+    verifyCMD(
+        "create database if not exists testDB; set hive.cli.print.current.db=true;use\ntestDB;\nuse default;drop if exists testDB;",
+        "hive (testDB)>", os, null, ERRNO_OK, true);
+  }
+
+  @Test
+  public void testUseCurrentDB3() {
+    verifyCMD(
+        "create database if not exists testDB; set hive.cli.print.current.db=true;use  testDB;\n"
+            + "use default;drop if exists testDB;", "hive (testDB)>", os, null, ERRNO_OK, true);
+  }
+
+  @Test
+  public void testUseInvalidDB() {
+    verifyCMD("set hive.cli.print.current.db=true;use invalidDB;",
+        "hive (invalidDB)>", os, null, ERRNO_OK, false);
   }
 
   private void redirectOutputStream() {


[30/33] hive git commit: HIVE-11944: Address the review items on HIVE-11778(Ferdinand Xu, reviewed by Xuefu Zhang)

Posted by xu...@apache.org.
HIVE-11944: Address the review items on HIVE-11778(Ferdinand Xu, reviewed by Xuefu Zhang)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/18579569
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/18579569
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/18579569

Branch: refs/heads/master
Commit: 185795696fda8c587d9994ca3f16cbac699832ea
Parents: dc9ca29
Author: Ferdinand Xu <ch...@intel.com>
Authored: Thu Sep 24 20:45:57 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 24 20:45:57 2015 -0400

----------------------------------------------------------------------
 beeline/src/java/org/apache/hive/beeline/BeeLine.java | 3 +--
 ql/src/java/org/apache/hadoop/hive/ql/Driver.java     | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/18579569/beeline/src/java/org/apache/hive/beeline/BeeLine.java
----------------------------------------------------------------------
diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
index e96d933..f2aeac5 100644
--- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java
+++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java
@@ -93,8 +93,6 @@ import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.beeline.cli.CliOptionsProcessor;
 
-import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME;
-
 /**
  * A console SQL shell with command completion.
  * <p>
@@ -142,6 +140,7 @@ public class BeeLine implements Closeable {
 
   public static final String BEELINE_DEFAULT_JDBC_DRIVER = "org.apache.hive.jdbc.HiveDriver";
   public static final String BEELINE_DEFAULT_JDBC_URL = "jdbc:hive2://";
+  public static final String DEFAULT_DATABASE_NAME = "default";
 
   private static final String SCRIPT_OUTPUT_PREFIX = ">>>";
   private static final int SCRIPT_OUTPUT_PAD_SIZE = 5;

http://git-wip-us.apache.org/repos/asf/hive/blob/18579569/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
index 9ee6023..db5fa62 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -390,7 +390,7 @@ public class Driver implements CommandProcessor {
     try {
       // Initialize the transaction manager.  This must be done before analyze is called.
       SessionState.get().initTxnMgr(conf);
-      
+
       command = new VariableSubstitution(new HiveVariableSource() {
         @Override
         public Map<String, String> getHiveVariable() {