Release Notes - Hive - Version 3.1.0

** Sub-task
    * [HIVE-12192] - Hive should carry out timestamp computations in UTC
    * [HIVE-17227] - Incremental replication load should create tasks in execution phase rather than semantic phase 
    * [HIVE-17657] - export/import for MM tables is broken
    * [HIVE-18193] - Migrate existing ACID tables to use write id per table rather than global transaction id
    * [HIVE-18748] - Rename table impacts the ACID behavior as table names are not updated in meta-tables.
    * [HIVE-18840] - CachedStore: Prioritize loading of recently accessed tables during prewarm
    * [HIVE-18946] - Fix columnstats merge NPE
    * [HIVE-18988] - Support bootstrap replication of ACID tables
    * [HIVE-19009] - Retain and use runtime statistics during hs2 lifetime
    * [HIVE-19096] - query result cache interferes with explain analyze 
    * [HIVE-19126] - CachedStore: Use memory estimation to limit cache size during prewarm
    * [HIVE-19128] - Update golden files for spark perf tests
    * [HIVE-19135] - Need tool to allow admins to create catalogs and move existing dbs to catalog during upgrade
    * [HIVE-19141] - TestNegativeCliDriver insert_into_notnull_constraint, insert_into_acid_notnull failing
    * [HIVE-19159] - TestMTQueries.testMTQueries1 failure
    * [HIVE-19164] - TestMetastoreVersion failures
    * [HIVE-19171] - Persist runtime statistics in metastore
    * [HIVE-19193] - TestActivePassiveHA fails
    * [HIVE-19194] - TestDruidStorageHandler fails
    * [HIVE-19195] - Fix flaky tests and cleanup testconfiguration to run llap specific tests in llap only.
    * [HIVE-19196] - TestTriggersMoveWorkloadManager is flaky
    * [HIVE-19206] - Automatic memory management for open streaming writers
    * [HIVE-19209] - Streaming ingest record writers should accept input stream
    * [HIVE-19210] - Create separate module for streaming ingest
    * [HIVE-19211] - New streaming ingest API and support for dynamic partitioning
    * [HIVE-19214] - High throughput ingest ORC format
    * [HIVE-19222] - TestNegativeCliDriver tests are failing due to "java.lang.OutOfMemoryError: GC overhead limit exceeded"
    * [HIVE-19243] - Upgrade hadoop.version to 3.1.0
    * [HIVE-19252] - TestJdbcWithMiniKdcCookie.testCookieNegative is failing consistently
    * [HIVE-19274] - Add an OpTreeSignature persistence checker hook
    * [HIVE-19332] - Disable compute.query.using.stats for external table
    * [HIVE-19336] - Disable SMB/Bucketmap join for external tables
    * [HIVE-19340] - Disable timeout of transactions opened by replication task at target cluster
    * [HIVE-19347] - TestTriggersWorkloadManager tests are failing consistently
    * [HIVE-19348] -  org.apache.hadoop.hive.ql.plan.mapping.TestOperatorCmp are failing
    * [HIVE-19366] - Vectorization causing TestStreaming.testStreamBucketingMatchesRegularBucketing to fail
    * [HIVE-19374] - Parse and process ALTER TABLE SET OWNER command syntax
    * [HIVE-19409] - Disable incremental rewriting with outdated materialized views
    * [HIVE-19472] - HiveStreamingConnection swallows exception on partition creation
    * [HIVE-19494] - Accept shade prefix during reflective instantiation of output format
    * [HIVE-19495] - Arrow SerDe itest failure
    * [HIVE-19499] - Bootstrap REPL LOAD shall add tasks to create checkpoints for db/tables/partitions.
    * [HIVE-19500] - Prevent multiple selectivity estimations for the same variable in conjuctions
    * [HIVE-19562] - Flaky test: TestMiniSparkOnYarn FileNotFoundException in spark-submit
    * [HIVE-19598] - Add Acid V1 to V2 upgrade module
    * [HIVE-19637] - Add slow test report script to testutils
    * [HIVE-19688] - Make catalogs updatable
    * [HIVE-19727] - Fix Signature matching of table aliases
    * [HIVE-19739] - Bootstrap REPL LOAD to use checkpoints to validate and skip the loaded data/metadata.
    * [HIVE-19758] - Set hadoop.version=3.1.0 in standalone-metastore
    * [HIVE-19768] - Utility to convert tables to conform to Hive strict managed tables mode
    * [HIVE-19799] - remove jasper dependency
    * [HIVE-19815] - Repl dump should not propagate the checkpoint and repl source properties
    * [HIVE-19851] - upgrade jQuery version
    * [HIVE-19852] - update jackson to latest
    * [HIVE-19868] - Add support for float aggregator
    * [HIVE-19892] - Disable query results cache for for HiveServer2 doAs=true
    * [HIVE-19923] - Follow up of HIVE-19615, use UnaryFunction instead of prefix


** Bug
    * [HIVE-15190] - Field names are not preserved in ORC files written with ACID
    * [HIVE-18434] - Type is not determined correctly for comparison between decimal column and string constant
    * [HIVE-18816] - CREATE TABLE (ACID) doesn't work with TIMESTAMPLOCALTZ column type
    * [HIVE-19016] - Vectorization and Parquet: Disable vectorization for nested complex types
    * [HIVE-19054] - Function replication shall use "hive.repl.replica.functions.root.dir" as root
    * [HIVE-19108] - Vectorization and Parquet: Turning on vectorization in parquet_ppd_decimal.q causes Wrong Query Results
    * [HIVE-19109] - Vectorization: Enabling vectorization causes TestCliDriver delete_orig_table.q to produce Wrong Results
    * [HIVE-19110] - Vectorization: Enabling vectorization causes TestContribCliDriver udf_example_arraymapstruct.q to produce Wrong Results
    * [HIVE-19118] - Vectorization: Turning on vectorization in escape_crlf produces wrong results
    * [HIVE-19120] - catalog not properly set for some tables in SQL upgrade scripts
    * [HIVE-19131] - DecimalColumnStatsMergerTest comparison review
    * [HIVE-19155] - Day time saving cause Druid inserts to fail with org.apache.hive.druid.io.druid.java.util.common.UOE: Cannot add overlapping segments
    * [HIVE-19157] - Assert that Insert into Druid Table fails if the publishing of metadata by HS2 fails
    * [HIVE-19167] - Map data type doesn't keep the order of the key/values pairs as read (Part 2, The Sequel or SQL)   
    * [HIVE-19168] - Ranger changes for llap commands
    * [HIVE-19186] - Multi Table INSERT statements query has a flaw for partitioned table when INSERT INTO and INSERT OVERWRITE are used
    * [HIVE-19200] - Vectorization: Disable vectorization for LLAP I/O when a non-VECTORIZED_INPUT_FILE_FORMAT mode is needed (i.e. rows) and data type conversion is needed
    * [HIVE-19219] - Incremental REPL DUMP should throw error if requested events are cleaned-up.
    * [HIVE-19230] - Schema column width inconsistency in Oracle 
    * [HIVE-19231] - Beeline generates garbled output when using UnsupportedTerminal
    * [HIVE-19237] - Only use an operatorId once in a plan
    * [HIVE-19247] - StatsOptimizer: Missing stats fast-path for Date
    * [HIVE-19248] - REPL LOAD couldn't copy file from source CM path and also doesn't throw error if file copy fails.
    * [HIVE-19258] - add originals support to MM tables (and make the conversion a metadata only operation)
    * [HIVE-19264] - Vectorization: Reenable vectorization in vector_adaptor_usage_mode.q
    * [HIVE-19269] - Vectorization: Turn On by Default
    * [HIVE-19275] - Vectorization: Defer Wrong Results / Execution Failures when Vectorization turned on
    * [HIVE-19277] - Active/Passive HA web endpoints does not allow cross origin requests
    * [HIVE-19312] - MM tables don't work with BucketizedHIF
    * [HIVE-19317] - Handle schema evolution from int like types to decimal
    * [HIVE-19327] - qroupby_rollup_empty.q fails for insert-only transactional tables
    * [HIVE-19331] - Repl load config in "with" clause not pass to Context.getStagingDir
    * [HIVE-19350] - Vectorization: Turn off vectorization for explainuser_1.q / spark_explainuser_1
    * [HIVE-19352] - Vectorization: Disable vectorization for org.apache.hive.jdbc.TestJdbcDriver2.testResultSetMetaData
    * [HIVE-19357] - Vectorization: assert_true HiveException erroneously gets suppressed to NULL
    * [HIVE-19358] - CBO decorrelation logic should generate Hive operators
    * [HIVE-19365] - Index on COMPLETED_TXN_COMPONENTS in Metastore RDBMS has different names in different scripts
    * [HIVE-19370] - Issue: ADD Months function on timestamp datatype fields in hive
    * [HIVE-19381] - Function replication in cloud fail when download resource from AWS
    * [HIVE-19382] - Acquire locks before generating valid transaction list for some operations
    * [HIVE-19384] - Vectorization: IfExprTimestamp* do not handle NULLs correctly
    * [HIVE-19385] - Optional hive env variable to redirect bin/hive to use Beeline
    * [HIVE-19389] - Schematool: For Hive's Information Schema, use embedded HS2 as default
    * [HIVE-19410] - don't create serde reader in LLAP if there's no cache
    * [HIVE-19418] - add background stats updater similar to compactor
    * [HIVE-19423] - REPL LOAD creates staging directory in source dump directory instead of table data location
    * [HIVE-19433] - HiveJoinPushTransitivePredicatesRule hangs
    * [HIVE-19435] - Incremental replication cause data loss if a table is dropped followed by create and insert-into with different partition type.
    * [HIVE-19454] - Test failure : org.apache.hadoop.hive.ql.TestTxnCommands2.testNonAcidToAcidConversion1 fails with java.lang.AssertionError
    * [HIVE-19460] - Improve stats estimations for NOT IN operator
    * [HIVE-19463] - TezTask - getting groups may fail (PartialGroupNameException in some tests)
    * [HIVE-19467] - Make storage format configurable for temp tables created using LLAP external client
    * [HIVE-19474] - Decimal type should be casted as part of the CTAS or INSERT Clause.
    * [HIVE-19479] - encoded stream seek is incorrect for 0-length RGs in LLAP IO
    * [HIVE-19481] - Tablesample uses incorrect logic to pick files corresponding to buckets.
    * [HIVE-19485] - dump directory for non native tables should not be created
    * [HIVE-19493] - VectorUDFDateDiffColCol copySelected does not handle nulls correctly
    * [HIVE-19496] - Check untar folder
    * [HIVE-19498] - Vectorization: CAST expressions produce wrong results
    * [HIVE-19504] - Change default value for hive.auto.convert.join.shuffle.max.size property
    * [HIVE-19516] - TestNegative merge_negative_5 and mm_concatenate are causing timeouts
    * [HIVE-19529] - Vectorization: Date/Timestamp NULL issues
    * [HIVE-19557] - stats: filters for dates are not taking advantage of min/max values
    * [HIVE-19565] - Vectorization: Fix NULL / Wrong Results issues in STRING Functions
    * [HIVE-19567] - Fix flakiness in TestTriggers
    * [HIVE-19569] - alter table db1.t1 rename db2.t2 generates MetaStoreEventListener.onDropTable()
    * [HIVE-19575] - TestAutoPurgeTables seems flaky
    * [HIVE-19577] - CREATE TEMPORARY TABLE LIKE  and INSERT generate output format mismatch errors
    * [HIVE-19578] - HLL merges tempList on every add
    * [HIVE-19588] - Several invocation of file listing when creating VectorizedOrcAcidRowBatchReader
    * [HIVE-19589] - Disable TestAutoPurge tests and annotate TestTriggersWorkloadManager with retry
    * [HIVE-19590] - mask stats in llap_smb
    * [HIVE-19592] - TestWorkloadManager - add retry for now
    * [HIVE-19594] - Add custom tmp folders to tests to avoid collisions
    * [HIVE-19595] - Regenerate webui port in MiniHS2
    * [HIVE-19604] - Incorrect Handling of Boolean in DruidSerde
    * [HIVE-19605] - TAB_COL_STATS table has no index on db/table name
    * [HIVE-19608] - disable flaky tests 2
    * [HIVE-19613] - GenericUDTFGetSplits should handle fetch task with temp table rewrite
    * [HIVE-19614] - GenericUDTFGetSplits does not honor ORDER BY
    * [HIVE-19615] - Proper handling of is null and not is null predicate when pushed to Druid
    * [HIVE-19619] - Allow comparisons between doubles and bigints
    * [HIVE-19629] - Enable Decimal64 reader after orc version upgrade
    * [HIVE-19631] - reduce epic locking in AbstractService
    * [HIVE-19632] - Remove webapps directory from standalone jar
    * [HIVE-19639] - a transactional Hive table cannot be imported as an external table
    * [HIVE-19643] - MM table conversion doesn't need full ACID structure checks
    * [HIVE-19644] - change WM syntax to avoid conflicts with identifiers starting with a number
    * [HIVE-19646] - Filesystem closed error in HiveProtoLoggingHook
    * [HIVE-19660] - update branch-3 to be version 3.1 and fix storage-api mismatch
    * [HIVE-19675] - Cast to timestamps on Druid time column leads to an exception
    * [HIVE-19677] - Disable sample6.q
    * [HIVE-19680] - Push down limit is not applied for Druid storage handler.
    * [HIVE-19684] - Hive stats optimizer wrongly uses stats against non native tables
    * [HIVE-19687] - Export table on acid partitioned table is failing
    * [HIVE-19690] - multi-insert query with multiple GBY, and distinct in only some branches can produce incorrect results
    * [HIVE-19691] - Start SessionState in materialized views registry
    * [HIVE-19695] - Year Month Day extraction functions need to add an implicit cast for column that are String types
    * [HIVE-19697] - TestReOptimization#testStatCachingMetaStore is flaky
    * [HIVE-19698] - TestAMReporter#testMultipleAM is flaky
    * [HIVE-19700] - Workaround for JLine issue with UnsupportedTerminal
    * [HIVE-19713] - itests/hive-jmh should not reference a concreate storage-api version
    * [HIVE-19723] - Arrow serde: "Unsupported data type: Timestamp(NANOSECOND, null)"
    * [HIVE-19726] - ORC date PPD is broken
    * [HIVE-19728] - beeline with USE_BEELINE_FOR_HIVE_CLI fails when trying to set hive.aux.jars.path
    * [HIVE-19734] - Beeline: When beeline-site.xml is present, beeline does not honor -n (username) and -p (password) arguments
    * [HIVE-19744] - In Beeline if -u is specified the default connection should not be tried at all
    * [HIVE-19750] - Initialize NEXT_WRITE_ID. NWI_NEXT on converting an existing table to full acid
    * [HIVE-19753] - Strict managed tables mode in Hive
    * [HIVE-19754] - vector_decimal_2 failing on branch-3
    * [HIVE-19755] - insertsel_fail.q.out needs to be updated on branch-3
    * [HIVE-19762] - Druid Queries containing Joins gives wrong results. 
    * [HIVE-19771] - allowNullColumnForMissingStats should not be false when column stats are estimated
    * [HIVE-19772] - Streaming ingest V2 API can generate invalid orc file if interrupted
    * [HIVE-19773] - CBO exception while running queries with tables that are not present in materialized views
    * [HIVE-19777] - NPE in TezSessionState
    * [HIVE-19789] - reenable orc_llap test
    * [HIVE-19793] - disable LLAP IO batch-to-row wrapper for ACID deletes/updates
    * [HIVE-19794] - Disable removing order by from subquery in GenericUDTFGetSplits
    * [HIVE-19796] - Push Down TRUNC Fn to Druid Storage Handler
    * [HIVE-19801] - JDBC: Add some missing classes to jdbc standalone jar and remove hbase classes
    * [HIVE-19808] - GenericUDTFGetSplits should support ACID reads in the temp. table read path
    * [HIVE-19810] - StorageHandler fail to ship jars in Tez intermittently
    * [HIVE-19813] - SessionState.start don't have to be synchronized
    * [HIVE-19817] - Hive streaming API + dynamic partitioning + json/regex writer does not work
    * [HIVE-19826] - OrcRawRecordMerger doesn't work for more than one file in non vectorized case
    * [HIVE-19827] - hiveserver2 startup should provide a way to override TEZ_CONF_DIR
    * [HIVE-19833] - reduce LLAP IO min allocation to match ORC variable CB size
    * [HIVE-19837] - Setting to have different default location for external tables
    * [HIVE-19838] - simplify & fix ColumnizedDeleteEventRegistry load loop
    * [HIVE-19853] - Arrow serializer needs to create a TimeStampMicroTZVector instead of TimeStampMicroVector
    * [HIVE-19857] - Set 3.1.0 for sys db version
    * [HIVE-19859] - Inspect lock components for DBHiveLock while verifying whether transaction list is valid
    * [HIVE-19861] - Fix temp table path generation for acid table export
    * [HIVE-19862] - Postgres init script has a glitch around UNIQUE_DATABASE
    * [HIVE-19864] - Address TestTriggersWorkloadManager flakiness
    * [HIVE-19866] - improve LLAP cache purge
    * [HIVE-19869] - Remove double formatting bug followup of HIVE-19382
    * [HIVE-19872] - hive-schema-3.1.0.hive.sql is missing on master and branch-3
    * [HIVE-19873] - Cleanup operation log on query cancellation after some delay
    * [HIVE-19875] - increase LLAP IO queue size for perf
    * [HIVE-19876] - Multiple fixes for Driver.isValidTxnListState
    * [HIVE-19877] - Remove setting hive.execution.engine as mr in HiveStreamingConnection
    * [HIVE-19879] - Remove unused calcite sql operator.
    * [HIVE-19884] - Invalidation cache may throw NPE when there is no data in table used by materialized view
    * [HIVE-19889] - Wrong results due to PPD of non deterministic functions with CBO
    * [HIVE-19890] - ACID: Inherit bucket-id from original ROW_ID for delete deltas
    * [HIVE-19898] - Disable TransactionalValidationListener when the table is not in the Hive catalog
    * [HIVE-19903] - Disable temporary insert-only transactional table
    * [HIVE-19904] - Load data rewrite into Tez job fails for ACID
    * [HIVE-19908] - Block Insert Overwrite with Union All on full CRUD ACID tables using HIVE_UNION_SUBDIR_
    * [HIVE-19912] - Schema evolution checks prints a log line in INFO mode for each vectorized rowbatch, impacts performance
    * [HIVE-19917] - Export of full CRUD transactional table fails if table is not in default database
    * [HIVE-19920] - Schematool fails in embedded mode when auth is on
    * [HIVE-19921] - Fix perf duration and queue name in HiveProtoLoggingHook
    * [HIVE-19938] - Upgrade scripts for information schema
    * [HIVE-19941] - Row based Filters added via Hive Ranger policies are not pushed to druid
    * [HIVE-19946] - VectorizedRowBatchCtx.recordIdColumnVector cannot be shared between different JVMs
    * [HIVE-19951] - Vectorization: Need to disable encoded LLAP I/O for ORC when there is data type conversion  (Schema Evolution)
    * [HIVE-19956] - Include yarn registry classes to jdbc standalone jar
    * [HIVE-19964] - Apply resource plan fails if trigger expression has quotes
    * [HIVE-19965] - Make HiveEndPoint use IMetaStoreClient.add_partition
    * [HIVE-19972] - Followup to HIVE-19928 : Fix the check for managed table
    * [HIVE-19973] - Enable materialized view rewriting by default
    * [HIVE-19980] - GenericUDTFGetSplits fails when order by query returns 0 rows
    * [HIVE-19997] - Batches for TestMiniDruidCliDriver
    * [HIVE-20002] - Shipping jdbd-storage-handler dependency jars in LLAP
    * [HIVE-20010] - Fix create view over literals
    * [HIVE-20076] - ACID: Fix Synthetic ROW__ID generation for vectorized orc readers


** New Feature
    * [HIVE-18739] - Add support for Import/Export from Acid table
    * [HIVE-19307] - Support ArrowOutputStream in LlapOutputFormatService


** Improvement
    * [HIVE-17824] - msck repair table should drop the missing partitions from metastore
    * [HIVE-18079] - Statistics: Allow HyperLogLog to be merged to the lowest-common-denominator bit-size
    * [HIVE-18394] - Materialized view: "Create Materialized View" should default to rewritable ones
    * [HIVE-18410] - [Performance][Avro] Reading flat Avro tables is very expensive in Hive
    * [HIVE-18743] - CREATE TABLE on S3 data can be extremely slow. DO_NOT_UPDATE_STATS workaround is buggy.
    * [HIVE-18792] - Allow standard compliant syntax for insert on partitioned tables
    * [HIVE-18866] - Semijoin and analyze: Implement a Long -> Hash64 vector fast-path
    * [HIVE-19027] - Make materializations invalidation cache work with multiple active remote metastores
    * [HIVE-19161] - Add authorizations to information schema
    * [HIVE-19228] - Remove commons-httpclient 3.x usage
    * [HIVE-19259] - Create view on tables having union all fail with "Table not found"
    * [HIVE-19344] - Change default value of msck.repair.batch.size 
    * [HIVE-19390] - Useless error messages logged for dummy table stats
    * [HIVE-19415] - Support CORS for all HS2 web endpoints
    * [HIVE-19421] - Upgrade version of Jetty to 9.3.20.v20170531
    * [HIVE-19440] - Make StorageBasedAuthorizer work with information schema
    * [HIVE-19462] - Fix mapping for char_length function to enable pushdown to Druid. 
    * [HIVE-19464] - Upgrade Parquet to 1.10.0
    * [HIVE-19465] - Upgrade ORC to 1.5.0
    * [HIVE-19466] - Update constraint violation error message
    * [HIVE-19490] - Locking on Insert into for non native and managed tables.
    * [HIVE-19534] - Allow implementations to access member variables of AbstractRecordWriter
    * [HIVE-19560] - Retry test runner and retry rule for flaky tests
    * [HIVE-19572] - Add option to mask stats and data size in q files
    * [HIVE-19586] - Optimize Count(distinct X) pushdown based on the storage capabilities 
    * [HIVE-19669] - Upgrade ORC to 1.5.1
    * [HIVE-19682] - Provide option for GenericUDTFGetSplits to return only schema metadata
    * [HIVE-19775] - Schematool should use HS2 embedded mode in privileged auth mode
    * [HIVE-19776] - HiveServer2.startHiveServer2 retries of start has concurrency issues
    * [HIVE-19824] - Improve online datasize estimations for MapJoins
    * [HIVE-19885] - Druid Kafka Ingestion - Allow user to set kafka consumer properties via table properties
    * [HIVE-20102] - Add a couple of additional tests for query parsing
    * [HIVE-20135] - Fix incompatible change in TimestampColumnVector to default to UTC

** Test
    * [HIVE-19271] - TestMiniLlapLocalCliDriver default_constraint and check_constraint failing
    * [HIVE-19515] - TestRpc.testServerPort is consistently failing
    * [HIVE-19555] - Enable TestMiniLlapLocalCliDriver#tez_dynpart_hashjoin_1.q and TestMiniLlapLocalCliDriver#tez_vector_dynpart_hashjoin_1.q
    * [HIVE-19573] - Fix flaky TestMiniLlapLocalCliDriver#explainuser_4.q
    * [HIVE-19612] - Add option to mask lineage in q files
    * [HIVE-19617] - Rename test tables to avoid collisions during execution in batches
    * [HIVE-19620] - Change tmp directory used by PigServer in HCat tests
    * [HIVE-19626] - Change tmp staging mapred directory for CliDriver
    * [HIVE-19654] - Change tmp staging mapred directory for TestBlobstoreCliDriver
    * [HIVE-19655] - Mask stats for TestMiniLlapLocalCliDriver#smb_mapjoin_15
    * [HIVE-19699] - Re-enable TestReOptimization
    * [HIVE-19706] - Disable TestJdbcWithMiniHS2#testHttpRetryOnServerIdleTimeout
    * [HIVE-19731] - Change staging tmp directory used by TestHCatLoaderComplexSchema
    * [HIVE-20123] - Fix masking tests after HIVE-19617


** Task
    * [HIVE-18875] - Enable SMB Join by default in Tez
    * [HIVE-19134] - Update copyright NOTICE and fix rat check failures
    * [HIVE-19140] - Update metastore upgrade scripts to prepare for 3.1.0 development
    * [HIVE-19257] - HIVE-19157 commit references wrong jira
    * [HIVE-19306] - Arrow batch serializer
    * [HIVE-19308] - Provide an Arrow stream reader for external LLAP clients 
    * [HIVE-19323] - Create metastore SQL install and upgrade scripts for 3.1
    * [HIVE-19488] - Enable CM root based on db parameter, identifying a db as source of replication.
    * [HIVE-19509] - Disable tests that are failing continuously
    * [HIVE-19512] - If parallel execution is enabled, metastore is throwing out of sequence error.
    * [HIVE-19708] - Repl copy retrying with cm path even if the failure is due to network issue
    * [HIVE-19725] - Add ability to dump non-native tables in replication metadata dump
    * [HIVE-19880] - Repl Load to return recoverable vs non-recoverable error codes
    * [HIVE-19881] - Allow metadata-only dump for database which are not source of replication
    * [HIVE-19928] - Load Data for managed tables should set the owner of loaded files to a configurable user
    * [HIVE-19978] - Backport HIVE-18037 to branch-3


Release Notes - Hive - Version 3.0.0

** Sub-task
    * [HIVE-11133] - Support hive.explain.user for Spark
    * [HIVE-11418] - Dropping a database in an encryption zone with CASCADE and trash enabled fails
    * [HIVE-13567] - Enable auto-gather column stats by default
    * [HIVE-13583] - E061-14: Search Conditions
    * [HIVE-13673] - LLAP: handle case where no service instance is found on the host specified in the input split
    * [HIVE-14412] - Add timestamp with time zone
    * [HIVE-14487] - Add REBUILD statement for materialized views
    * [HIVE-14495] - Add SHOW MATERIALIZED VIEWS statement
    * [HIVE-14498] - Freshness period for query rewriting using materialized views
    * [HIVE-14518] - Support 'having' translation for Druid GroupBy queries
    * [HIVE-14747] - Remove JAVA paths from profiles by sending them from ptest-client
    * [HIVE-14947] - Add support for Acid 2 in Merge
    * [HIVE-15016] - Run tests with Hadoop 3.0.0-beta1
    * [HIVE-15018] - ALTER rewriting flag in materialized view 
    * [HIVE-15051] - Test framework integration with findbugs, rat checks etc.
    * [HIVE-15173] - Allow dec as an alias for decimal
    * [HIVE-15212] - merge branch into master
    * [HIVE-15326] - Hive shims report Unrecognized Hadoop major version number: 3.0.0-alpha2-SNAPSHOT
    * [HIVE-15436] - Enhancing metastore APIs to retrieve only materialized views
    * [HIVE-15490] - REPL LOAD & DUMP support for INSERT events with change management
    * [HIVE-15619] - Column pruner should handle DruidQuery
    * [HIVE-15642] - Replicate Insert Overwrites, Dynamic Partition Inserts and Loads
    * [HIVE-15673] - Allow multiple queries with disjunction
    * [HIVE-15705] - Event replication for constraints
    * [HIVE-15725] - Make it possible to run checkstyle for a specific module
    * [HIVE-15758] - Allow correlated scalar subqueries with aggregates which has non-equi join predicates
    * [HIVE-15834] - Add unit tests for org.json usage on master
    * [HIVE-15899] - Make CTAS with acid target table and insert into acid_tbl select ... union all ... work
    * [HIVE-15939] - Make cast expressions comply more to sql2011
    * [HIVE-15982] - Support the width_bucket function
    * [HIVE-15986] - Support "is [not] distinct from"
    * [HIVE-16171] - Support replication of truncate table
    * [HIVE-16186] - REPL DUMP shows last event ID of the database even if we use LIMIT option.
    * [HIVE-16197] - Incremental insert into a partitioned table doesn't get replicated.
    * [HIVE-16207] - Add support for Complex Types in Fast SerDe
    * [HIVE-16228] - Support subqueries in complex expression in SELECT clause
    * [HIVE-16256] - Flaky test: TestCliDriver.testCliDriver[comments]
    * [HIVE-16266] - Enable function metadata to be written during bootstrap
    * [HIVE-16267] - Enable bootstrap function metadata to be loaded in repl load
    * [HIVE-16268] - enable incremental repl dump to handle functions metadata
    * [HIVE-16269] - enable incremental function dump to be loaded via repl load 
    * [HIVE-16272] - support for drop function in incremental replication 
    * [HIVE-16276] - Fix NoSuchMethodError: com.amazonaws.services.s3.transfer.TransferManagerConfiguration.setMultipartUploadThreshold(I)V
    * [HIVE-16294] - Support snapshot for truncate table
    * [HIVE-16312] - Flaky test: TestHCatClient.testTransportFailure
    * [HIVE-16313] - Flaky test: TestBeeLineDriver[drop_with_concurrency]
    * [HIVE-16320] - Flaky test: TestBeeLineDriver.testCliDriver[escape_comments]
    * [HIVE-16330] - Improve plans for scalar subquery with aggregates
    * [HIVE-16344] - Test and support replication of exchange partition
    * [HIVE-16372] - Enable DDL statement for non-native tables (add/remove table properties)
    * [HIVE-16400] - Fix the MDC reference to use slf4j rather than log4j
    * [HIVE-16416] - Service: move constants out from HiveAuthFactory
    * [HIVE-16467] - Flaky test: TestCliDriver.testCliDriver[vector_order_null]
    * [HIVE-16488] - Support replicating into existing db if the db is empty
    * [HIVE-16493] - Skip column stats when colStats is empty
    * [HIVE-16504] - Addition of binary licenses broke rat check
    * [HIVE-16530] - Add HS2 operation logs and improve logs for REPL commands
    * [HIVE-16532] - HIVE on hadoop 3 build failed due to hdfs client/server jar separation
    * [HIVE-16535] - Hive fails to build from source code tarball
    * [HIVE-16542] - make merge that targets acid 2.0 table fail-fast 
    * [HIVE-16555] - Add a new thrift API call for get_metastore_uuid
    * [HIVE-16556] - Modify schematool scripts to initialize and create METASTORE_DB_PROPERTIES table
    * [HIVE-16566] - Set column stats default as true when creating new tables/partitions
    * [HIVE-16568] - Support complex types in external LLAP InputFormat
    * [HIVE-16579] - CachedStore: improvements to partition col stats caching and cache column stats for unpartitioned table
    * [HIVE-16586] - Fix Unit test failures when CachedStore is enabled
    * [HIVE-16591] - DR for function Binaries on HDFS 
    * [HIVE-16600] - Refactor SetSparkReducerParallelism#needSetParallelism to enable parallel order by in multi_insert cases
    * [HIVE-16601] - Display Session Id and Query Name / Id in Spark UI
    * [HIVE-16617] - Clean up javadoc from errors in module hive-shims
    * [HIVE-16618] - Clean up javadoc from errors in module hive-common
    * [HIVE-16619] - Clean up javadoc from errors in module hive-serde
    * [HIVE-16628] - Fix query25 when it uses a mix of MergeJoin and MapJoin
    * [HIVE-16637] - Improve end-of-data checking for LLAP input format
    * [HIVE-16642] - New Events created as part of replv2 potentially break replv1
    * [HIVE-16644] - Hook Change Manager to Insert Overwrite
    * [HIVE-16647] - Improve the validation output to make the output to stderr and stdout more consistent
    * [HIVE-16651] - LlapProtocolClientProxy stack trace when using llap input format
    * [HIVE-16652] - LlapInputFormat: Seeing "output error" WARN message
    * [HIVE-16653] - Mergejoin should give itself a correct tag
    * [HIVE-16672] - Parquet vectorization doesn't work for tables with partition info
    * [HIVE-16684] - Bootstrap REPL DUMP shouldn't fail when table is dropped after fetching the table names.
    * [HIVE-16686] - repl invocations of distcp needs additional handling
    * [HIVE-16688] - Make sure Alter Table to set transaction=true acquires X lock
    * [HIVE-16691] - Add test for more datatypes for LlapInputFormat
    * [HIVE-16697] - Schema table validator should return a sorted list of missing tables 
    * [HIVE-16702] - Use LazyBinarySerDe for LLAP InputFormat
    * [HIVE-16706] - Bootstrap REPL DUMP shouldn't fail when a partition is dropped/renamed when dump in progress.
    * [HIVE-16714] - make Task Dependency on Repl Load more intuitive
    * [HIVE-16715] - Clean up javadoc from errors in modules llap-client, metastore, spark-client
    * [HIVE-16722] - Converting bucketed non-acid table to acid should perform validation
    * [HIVE-16727] - REPL DUMP for insert event should't fail if the table is already dropped.
    * [HIVE-16729] - Improve location validator to check for blank paths.
    * [HIVE-16747] - Remove YETUS*.sh files after a YETUS release
    * [HIVE-16748] - Integreate YETUS to Pre-Commit
    * [HIVE-16750] - Support change management for rename table/partition.
    * [HIVE-16764] - Support numeric as same as decimal
    * [HIVE-16765] - ParquetFileReader should be closed to avoid resource leak
    * [HIVE-16774] - Support position in ORDER BY when using SELECT *
    * [HIVE-16775] - Fix HiveFilterAggregateTransposeRule when filter is always false
    * [HIVE-16779] - CachedStore leak PersistenceManager resources
    * [HIVE-16782] - Flaky Test: TestMiniLlapLocalCliDriver[subquery_scalar]
    * [HIVE-16785] - Ensure replication actions are idempotent if any series of events are applied again.
    * [HIVE-16797] - Enhance HiveFilterSetOpTransposeRule to remove union branches
    * [HIVE-16813] - Incremental REPL LOAD should load the events in the same sequence as it is dumped.
    * [HIVE-16827] - Merge stats task and column stats task into a single task
    * [HIVE-16837] - MetadataOnly optimizer conflicts with count distinct rewrite
    * [HIVE-16838] - Improve plans for subqueries with non-equi co-related predicates
    * [HIVE-16848] - NPE during CachedStore refresh
    * [HIVE-16892] - Move creation of _files from ReplCopyTask to analysis phase for boostrap replication 
    * [HIVE-16893] - move replication dump related work in semantic analysis phase to execution phase using a task
    * [HIVE-16895] -  Multi-threaded execution of bootstrap dump of partitions
    * [HIVE-16896] - move replication load related work in semantic analysis phase to execution phase using a task
    * [HIVE-16901] - Distcp optimization - One distcp per ReplCopyTask 
    * [HIVE-16912] - Improve table validator's performance against Oracle
    * [HIVE-16926] - LlapTaskUmbilicalExternalClient should not start new umbilical server for every fragment request
    * [HIVE-16974] - Change the sort key for the schema tool validator to be <ID>
    * [HIVE-16981] - hive.optimize.bucketingsorting should compare the schema before removing RS
    * [HIVE-16990] - REPL LOAD should update last repl ID only after successful copy of data files.
    * [HIVE-16992] - LLAP: monitoring and better default lambda for LRFU policy
    * [HIVE-16996] - Add HLL as an alternative to FM sketch to compute stats
    * [HIVE-16997] - Extend object store to store and use bit vectors
    * [HIVE-16998] - Add config to enable HoS DPP only for map-joins
    * [HIVE-17005] - Ensure REPL DUMP and REPL LOAD are authorized properly
    * [HIVE-17021] - Support replication of concatenate operation.
    * [HIVE-17087] - Remove unnecessary HoS DPP trees during map-join conversion
    * [HIVE-17091] - "Timed out getting readerEvents" error from external LLAP client
    * [HIVE-17100] - Improve HS2 operation logs for REPL commands.
    * [HIVE-17112] - Reduce logging in HiveSparkClientFactory and RemoteHiveSparkClient
    * [HIVE-17132] - Add InterfaceAudience and InterfaceStability annotations for UDF APIs
    * [HIVE-17137] - Fix javolution conflict
    * [HIVE-17153] - Flaky test: TestMiniSparkOnYarnCliDriver[spark_dynamic_partition_pruning]
    * [HIVE-17157] - Add InterfaceAudience and InterfaceStability annotations for ObjectInspector APIs
    * [HIVE-17167] - Create metastore specific configuration tool
    * [HIVE-17168] - Create separate module for stand alone metastore
    * [HIVE-17170] - Move thrift generated code to stand alone metastore
    * [HIVE-17178] - Spark Partition Pruning Sink Operator can't target multiple Works
    * [HIVE-17183] - Disable rename operations during bootstrap dump
    * [HIVE-17185] - TestHiveMetaStoreStatsMerge.testStatsMerge is failing
    * [HIVE-17195] - Long chain of tasks created by REPL LOAD shouldn't cause stack corruption.
    * [HIVE-17196] - CM: ReplCopyTask should retain the original file names even if copied from CM path.
    * [HIVE-17205] - add functional support for unbucketed tables
    * [HIVE-17212] - Dynamic add partition by insert shouldn't generate INSERT event.
    * [HIVE-17214] - check/fix conversion of unbucketed non-acid to acid
    * [HIVE-17215] - Streaming Ingest API writing unbucketed tables
    * [HIVE-17216] - Additional qtests for HoS DPP
    * [HIVE-17224] - Move JDO classes to standalone metastore
    * [HIVE-17225] - HoS DPP pruning sink ops can target parallel work objects
    * [HIVE-17241] - Change metastore classes to not use the shims
    * [HIVE-17247] - HoS DPP: UDFs on the partition column side does not evaluate correctly
    * [HIVE-17256] - add a notion of a guaranteed task to LLAP
    * [HIVE-17289] - EXPORT and IMPORT shouldn't perform distcp with doAs privileged user.
    * [HIVE-17292] - Change TestMiniSparkOnYarnCliDriver test configuration to use the configured cores
    * [HIVE-17297] - allow AM to use LLAP guaranteed tasks
    * [HIVE-17307] - Change the metastore to not use the metrics code in hive/common
    * [HIVE-17316] - Use String.startsWith for the hidden configuration variables
    * [HIVE-17318] - Make Hikari CP configurable using hive properties in hive-site.xml
    * [HIVE-17319] - Make BoneCp configurable using hive properties in hive-site.xml
    * [HIVE-17330] - refactor TezSessionPoolManager to separate its multiple functions
    * [HIVE-17346] - TestMiniSparkOnYarnCliDriver[spark_dynamic_partition_pruning] is failing every time
    * [HIVE-17347] - TestMiniSparkOnYarnCliDriver[spark_dynamic_partition_pruning_mapjoin_only] is failing every time
    * [HIVE-17359] - Deal with TypeInfo dependencies in the metastore
    * [HIVE-17371] - Move tokenstores to metastore module
    * [HIVE-17375] - stddev_samp,var_samp standard compliance
    * [HIVE-17380] - refactor LlapProtocolClientProxy to be usable with other protocols
    * [HIVE-17381] - When we enable Parquet Writer Version V2, hive throws an exception: Unsupported encoding: DELTA_BYTE_ARRAY.
    * [HIVE-17382] - Change startsWith relation introduced in HIVE-17316
    * [HIVE-17387] - implement Tez AM registry in Hive
    * [HIVE-17405] - HoS DPP ConstantPropagate should use ConstantPropagateOption.SHORTCUT
    * [HIVE-17409] - refactor LLAP ZK registry to make the ZK-registry part reusable
    * [HIVE-17414] - HoS DPP + Vectorization generates invalid explain plan due to CombineEquivalentWorkResolver
    * [HIVE-17428] - REPL LOAD of ALTER_PARTITION event doesn't create import tasks if the partition doesn't exist during analyze phase.
    * [HIVE-17455] - External LLAP client: connection to HS2 should be kept open until explicitly closed
    * [HIVE-17456] - Set current database for external LLAP interface
    * [HIVE-17473] - implement workload management pools
    * [HIVE-17482] - External LLAP client: acquire locks for tables queried directly by LLAP
    * [HIVE-17488] - Move first set of classes to standalone metastore
    * [HIVE-17494] - Bootstrap REPL DUMP throws exception if a partitioned table is dropped while reading partitions.
    * [HIVE-17495] - CachedStore: prewarm improvement (avoid multiple sql calls to read partition column stats), refactoring and caching some aggregate stats
    * [HIVE-17506] - Fix standalone-metastore pom.xml to not depend on hive's main pom
    * [HIVE-17508] - Implement global execution triggers based on counters
    * [HIVE-17514] - Use SHA-256 for cookie signer to improve security
    * [HIVE-17515] - Use SHA-256 for GenericUDFMaskHash to improve security
    * [HIVE-17527] - Support replication for rename/move table across database
    * [HIVE-17528] - Add more q-tests for Hive-on-Spark with Parquet vectorized reader
    * [HIVE-17534] - Add a config to turn off parquet vectorization
    * [HIVE-17537] - Move Warehouse class to standalone metastore
    * [HIVE-17541] - Move testing related methods from MetaStoreUtils to some testing related utility
    * [HIVE-17566] - Create schema required for workload management.
    * [HIVE-17581] - Replace some calcite dependencies with native ones
    * [HIVE-17607] - remove ColumnStatsDesc usage from columnstatsupdatetask
    * [HIVE-17608] - REPL LOAD should overwrite the data files if exists instead of duplicating it
    * [HIVE-17617] - Rollup of an empty resultset should contain the grouping of the empty grouping set
    * [HIVE-17629] - CachedStore - wait for prewarm at use time, not init time
    * [HIVE-17645] - MM tables patch conflicts with HIVE-17482 (Spark/Acid integration)
    * [HIVE-17647] - DDLTask.generateAddMmTasks(Table tbl) and other random code should not start transactions
    * [HIVE-17651] - TableScanOperator might miss vectorization on flag
    * [HIVE-17652] - retire ANALYZE TABLE ... PARTIALSCAN
    * [HIVE-17661] - DBTxnManager.acquireLocks() - MM tables should use shared lock for Insert
    * [HIVE-17671] - TableScanDesc.isAcidTable is restricted to FullAcid tables
    * [HIVE-17681] - Need to log bootstrap dump progress state property to HS2 logs.
    * [HIVE-17692] - Block HCat on Acid tables
    * [HIVE-17696] - Vectorized reader does not seem to be pushing down projection columns in certain code paths
    * [HIVE-17698] - FileSinkDesk.getMergeInputDirName() uses stmtId=0
    * [HIVE-17708] - Upgrade surefire to 2.20.1
    * [HIVE-17728] - TestHCatClient should use hive.metastore.transactional.event.listeners as per recommendation.
    * [HIVE-17733] - Move RawStore to standalone metastore
    * [HIVE-17743] - Add InterfaceAudience and InterfaceStability annotations for Thrift generated APIs
    * [HIVE-17748] - ReplCopyTask doesn't support multi-file CopyWork
    * [HIVE-17750] - add a flag to automatically create most tables as MM 
    * [HIVE-17756] - Enable subquery related Qtests for Hive on Spark
    * [HIVE-17757] - REPL LOAD need to use customised configurations to execute distcp/remote copy.
    * [HIVE-17771] - Implement commands to manage resource plan
    * [HIVE-17778] - Add support for custom counters in trigger expression
    * [HIVE-17809] - Implement per pool trigger validation and move sessions across pools
    * [HIVE-17812] - Move remaining classes that HiveMetaStore depends on 
    * [HIVE-17835] - HS2 Logs print unnecessary stack trace when HoS query is cancelled
    * [HIVE-17837] - Explicitly check if the HoS Remote Driver has been lost in the RemoteSparkJobMonitor 
    * [HIVE-17841] - implement applying the resource plan
    * [HIVE-17842] - Run checkstyle on ptest2 module with proper configuration
    * [HIVE-17850] - can VectorizedOrcAcidRowReader be removed once HIVE-17458 is done?
    * [HIVE-17856] - MM tables - IOW is not ACID compliant
    * [HIVE-17858] - MM - some union cases are broken
    * [HIVE-17874] - Parquet vectorization fails on tables with complex columns when there are no projected columns
    * [HIVE-17884] - Implement create, alter and drop workload management triggers
    * [HIVE-17887] - Incremental REPL LOAD with Drop partition event on timestamp type partition column fails.
    * [HIVE-17888] - Display the reason for query cancellation
    * [HIVE-17897] - "repl load" in bootstrap phase fails when partitions have whitespace
    * [HIVE-17902] - add notions of default pool and start adding unmanaged mapping
    * [HIVE-17904] - handle internal Tez AM restart in registry and WM
    * [HIVE-17905] - propagate background LLAP cluster changes to WM
    * [HIVE-17906] - use kill query mechanics to kill queries in WM
    * [HIVE-17907] - enable and apply resource plan commands in HS2
    * [HIVE-17913] - Cleanup unused methods in Driver
    * [HIVE-17926] - Support triggers for non-pool sessions
    * [HIVE-17929] - Use sessionId for HoS Remote Driver Client id
    * [HIVE-17931] - Implement Parquet vectorization reader for Array type
    * [HIVE-17933] - make antlr output directory to use a top-level sourceset
    * [HIVE-17934] - Merging Statistics are promoted to COMPLETE (most of the time)
    * [HIVE-17945] - Support column projection for index access when using Parquet Vectorization
    * [HIVE-17950] - Implement resource plan fetching from metastore
    * [HIVE-17954] - Implement pool, user, group and trigger to pool management API's.
    * [HIVE-17961] - NPE during initialization of VectorizedParquetRecordReader when input split is null
    * [HIVE-17967] - Move HiveMetaStore class
    * [HIVE-17970] - MM LOAD DATA with OVERWRITE doesn't use base_n directory concept
    * [HIVE-17972] - Implement Parquet vectorization reader for Map type
    * [HIVE-17980] - Move HiveMetaStoreClient plus a few remaining classes.
    * [HIVE-17981] - Create a set of builders for Thrift classes
    * [HIVE-17982] - Move metastore specific itests
    * [HIVE-17983] - Make the standalone metastore generate tarballs etc.
    * [HIVE-17990] - Add Thrift and DB storage for Schema Registry objects
    * [HIVE-17991] - Remove CommandNeedRetryException
    * [HIVE-17995] - Run checkstyle on standalone-metastore module with proper configuration
    * [HIVE-17996] - Fix ASF headers
    * [HIVE-17997] - Add rat plugin and configuration to standalone metastore pom
    * [HIVE-18002] - add group support for pool mappings
    * [HIVE-18003] - add explicit jdbc connection string args for mappings
    * [HIVE-18004] - investigate deriving app name from JDBC connection for pool mapping
    * [HIVE-18005] - Improve size estimation for array() to be not 0
    * [HIVE-18025] - Push resource plan changes to tez/unmanaged sessions
    * [HIVE-18028] - fix WM based on cluster smoke test; add logging
    * [HIVE-18029] - beeline - support proper usernames based on the URL arg
    * [HIVE-18031] - Support replication for Alter Database operation.
    * [HIVE-18034] - Improving logging with HoS executors spend lots of time in GC
    * [HIVE-18036] - Stats: Remove usage of clone() methods
    * [HIVE-18053] - Support different table types for MVs
    * [HIVE-18056] - CachedStore: Have a whitelist/blacklist config to allow selective caching of tables/partitions and allow read while prewarming
    * [HIVE-18057] - remove PostExecute / PreExecute hook support
    * [HIVE-18063] - Make CommandProcessorResponse an exception instead of a return class
    * [HIVE-18071] - add HS2 jmx information about pools and current resource plan
    * [HIVE-18072] - fix various WM bugs based on cluster testing - part 2
    * [HIVE-18073] - AM may assert when its guaranteed task count is reduced
    * [HIVE-18075] - verify commands on a cluster
    * [HIVE-18076] - killquery doesn't actually work for non-trigger WM kills
    * [HIVE-18078] - WM getSession needs some retry logic
    * [HIVE-18084] - Upgrade checkstyle version to support lambdas
    * [HIVE-18085] - Run checkstyle on storage-api module with proper configuration
    * [HIVE-18088] - Add WM event traces at query level for debugging
    * [HIVE-18092] - Fix exception on tables handled by HBaseHandler if columnsstats are auto-gathered
    * [HIVE-18093] - Improve logging when HoS application is killed
    * [HIVE-18095] - add a unmanaged flag to triggers (applies to container based sessions)
    * [HIVE-18096] - add a user-friendly show plan command
    * [HIVE-18125] - Support arbitrary file names in input to Load Data
    * [HIVE-18133] - Parametrize TestTxnNoBuckets wrt Vectorization
    * [HIVE-18134] - some alter resource plan fixes
    * [HIVE-18138] - Fix columnstats problem in case schema evolution
    * [HIVE-18141] - Fix StatsUtils.combineRange to combine intervals
    * [HIVE-18149] - Stats: rownum estimation from datasize underestimates in most cases
    * [HIVE-18153] - refactor reopen and file management in TezTask
    * [HIVE-18161] - Remove hive.stats.atomic
    * [HIVE-18163] - Stats: create materialized view should also collect stats
    * [HIVE-18170] - User mapping not initialized correctly on start
    * [HIVE-18179] - Implement validate resource plan (part 1)
    * [HIVE-18187] - Add jamon generated-sources as source folder
    * [HIVE-18190] - Consider looking at ORC file schema rather than using _metadata_acid file
    * [HIVE-18192] - Introduce WriteID per table rather than using global transaction ID
    * [HIVE-18193] - Migrate existing ACID tables to use write id per table rather than global transaction id
    * [HIVE-18202] - Automatically migrate hbase.table.name to hbase.mapreduce.hfileoutputformat.table.name for hbase-based table
    * [HIVE-18203] - change the way WM is enabled and allow dropping the last resource plan
    * [HIVE-18209] - Fix API call in VectorizedListColumnReader to get value from BytesColumnVector
    * [HIVE-18211] - Support to read multiple level definition for Map type in Parquet file
    * [HIVE-18212] - Make sure Yetus check always has a full log
    * [HIVE-18214] - Flaky test: TestSparkClient
    * [HIVE-18222] - Update checkstyle rules to be less peeky
    * [HIVE-18224] - Introduce interface above driver
    * [HIVE-18229] - add the unmanaged mapping command
    * [HIVE-18230] - create plan like plan, and replace plan commands for easy modification
    * [HIVE-18235] - Columnstats gather on mm tables: re-enable disabled test
    * [HIVE-18237] - missing results for insert_only table after DP insert
    * [HIVE-18238] - Driver execution may not have configuration changing sideeffects 
    * [HIVE-18245] - clean up acid_vectorization_original.q
    * [HIVE-18257] - implement scheduling policy configuration instead of hardcoding fair scheduling
    * [HIVE-18273] - add LLAP-level counters for WM
    * [HIVE-18274] - add AM level metrics for WM
    * [HIVE-18275] - add HS2-level WM metrics
    * [HIVE-18286] - java.lang.ClassCastException: org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector cannot be cast to org.apache.hadoop.hive.ql.exec.vector.LongColumnVector
    * [HIVE-18288] - merge/concat not supported on Acid table
    * [HIVE-18294] - add switch to make acid table the default
    * [HIVE-18315] - update tests use non-acid tables
    * [HIVE-18317] - Improve error messages in TransactionalValidationListerner
    * [HIVE-18323] - Vectorization: add the support of timestamp in VectorizedPrimitiveColumnReader for parquet
    * [HIVE-18366] - Update HBaseSerDe to use hbase.mapreduce.hfileoutputformat.table.name instead of hbase.table.name as the table name property
    * [HIVE-18368] - Improve Spark Debug RDD Graph
    * [HIVE-18372] - Create testing infra to test different HMS instances
    * [HIVE-18389] - Print out Spark Web UI URL to the console log
    * [HIVE-18411] - Fix ArrayIndexOutOfBoundsException for VectorizedListColumnReader
    * [HIVE-18418] - clean up plugin between DAGs
    * [HIVE-18437] - use plan parallelism for the default pool if both are present
    * [HIVE-18438] - WM RP: it's impossible to unset things
    * [HIVE-18443] - Ensure git gc finished in ptest prep phase before copying repo
    * [HIVE-18457] - improve show plan output (triggers, mappings)
    * [HIVE-18458] - Workload manager initializes even when interactive queue is not set
    * [HIVE-18468] - Create tests to cover alterPartition and renamePartition methods
    * [HIVE-18478] - Data files deleted from temp table should not be recycled to CM path
    * [HIVE-18479] - Create tests to cover dropPartition methods
    * [HIVE-18480] - Create tests for function related methods
    * [HIVE-18481] - Create tests for table related methods (get, list, exists)
    * [HIVE-18483] - Create tests to cover getPartition(s) methods
    * [HIVE-18484] - Create tests to cover listPartition(s) methods
    * [HIVE-18486] - Create tests to cover add partition methods
    * [HIVE-18489] - Automatically migrate s3n URIs to s3a URIs
    * [HIVE-18495] - JUnit rule to enable Driver level testing
    * [HIVE-18496] - Create tests to cover add/alter/drop index methods
    * [HIVE-18498] - Create tests to cover get and list index methods
    * [HIVE-18509] - Create tests for table manipulation related methods (create, alter, drop)
    * [HIVE-18511] - Fix generated checkstyle errors
    * [HIVE-18536] - IOW + DP is broken for insert-only ACID
    * [HIVE-18541] - Secure HS2 web UI with PAM
    * [HIVE-18542] - Create tests to cover getTableMeta method
    * [HIVE-18544] - Create tests to cover appendPartition methods
    * [HIVE-18550] - Keep the hbase table name property as hbase.table.name
    * [HIVE-18553] - Support schema evolution in Parquet Vectorization reader
    * [HIVE-18566] - Create tests to cover adding partitions from PartitionSpec
    * [HIVE-18580] - Create tests to cover exchange partitions
    * [HIVE-18596] - Synchronize value of hive.spark.client.connect.timeout across unit tests
    * [HIVE-18609] - Results cache invalidation based on ACID table updates
    * [HIVE-18633] - Service discovery for Active/Passive HA mode
    * [HIVE-18635] - Generalize hook dispatch logics in Driver
    * [HIVE-18651] - Expose additional Spark metrics
    * [HIVE-18663] - Logged Spark Job Id contains a UUID instead of the actual id
    * [HIVE-18672] - Printed state in RemoteSparkJobMonitor is ambiguous
    * [HIVE-18673] - ErrorMsg.SPARK_JOB_MONITOR_TIMEOUT isn't formatted correctly
    * [HIVE-18677] - SparkClientImpl usage of SessionState.LogHelper doesn't respect isSilent value
    * [HIVE-18679] - create/replicate open transaction event
    * [HIVE-18703] - Make Operator comparision to be based on some primitive
    * [HIVE-18715] - Remove index support from metastore
    * [HIVE-18720] - Replicate Commit Txn operation (without writes)
    * [HIVE-18745] - Fix MetaStore creation in tests, so multiple MetaStores can be started on the same machine
    * [HIVE-18747] - Cleaner for TXN_TO_WRITE_ID table entries using MIN_HISTORY_LEVEL.
    * [HIVE-18749] - Need to replace transactionId with writeId in RecordIdentifier and other relevant contexts.
    * [HIVE-18750] - Exchange partition should be disabled on ACID/Insert-only tables with per table write ID.
    * [HIVE-18751] - ACID table scan through get_splits UDF doesn't receive ValidWriteIdList configuration.
    * [HIVE-18753] - Correct methods and variables names which uses writeId instead of transactionId.
    * [HIVE-18755] - Modifications to the metastore for catalogs
    * [HIVE-18765] - SparkClientImpl swallows exception messages from the RemoteDriver
    * [HIVE-18771] - Refactor tests, so only 1 MetaStore instance will be started per test class and test configuration
    * [HIVE-18781] - Create/Replicate Open, Commit (without writes) and Abort Txn events
    * [HIVE-18805] - Add ConstantPropagate before stats annotation
    * [HIVE-18824] - ValidWriteIdList config should be defined on tables which has to collect stats after insert
    * [HIVE-18830] - RemoteSparkJobMonitor failures are logged twice
    * [HIVE-18832] - Support change management for trashing data files from ACID tables.
    * [HIVE-18840] - CachedStore: Prioritize loading of recently accessed tables during prewarm
    * [HIVE-18846] - Query results cache: Allow queries to refer to the pending results of a query that has not finished yet
    * [HIVE-18855] - Fix unit test TestMiniLlapLocalCliDriver.testCliDriver[results_cache_1]
    * [HIVE-18861] - druid-hdfs-storage is pulling in hadoop-aws-2.7.x and aws SDK, creating classpath problems on hadoop 3.x
    * [HIVE-18864] - ValidWriteIdList snapshot seems incorrect if obtained after allocating writeId by current transaction.
    * [HIVE-18899] - Separate FetchWork required for each query that uses the results cache
    * [HIVE-18909] - Metrics for results cache
    * [HIVE-18926] - Imporve operator-tree matching
    * [HIVE-18946] - Fix columnstats merge NPE
    * [HIVE-18961] - Error in results cache when query has identifiers with spaces
    * [HIVE-18982] - Provide a CLI option to manually trigger failover
    * [HIVE-18988] - Support bootstrap replication of ACID tables
    * [HIVE-18994] - Handle client connections on failover
    * [HIVE-19009] - Retain and use runtime statistics during hs2 lifetime
    * [HIVE-19031] - Mark duplicate configs in HiveConf as deprecated
    * [HIVE-19083] - Make partition clause optional for INSERT
    * [HIVE-19089] - Create/Replicate Allocate write-id event
    * [HIVE-19112] - Support Analyze table for partitioned tables without partition spec
    * [HIVE-19126] - CachedStore: Use memory estimation to limit cache size during prewarm
    * [HIVE-19127] - Concurrency fixes in QueryResultsCache
    * [HIVE-19128] - Update golden files for spark perf tests
    * [HIVE-19129] - Support DEFAULT keyword with MERGE
    * [HIVE-19135] - Need tool to allow admins to create catalogs and move existing dbs to catalog during upgrade
    * [HIVE-19138] - Results cache: allow queries waiting on pending cache entries to check cache again if pending query fails
    * [HIVE-19141] - TestNegativeCliDriver insert_into_notnull_constraint, insert_into_acid_notnull failing
    * [HIVE-19144] - TestSparkCliDriver:subquery_scalar - golden file needs to be udpated
    * [HIVE-19145] - Stabilize statsoptimizer.q test
    * [HIVE-19146] - Delete dangling q.out 
    * [HIVE-19147] - Fix PerfCliDrivers: Tpcds30T missed CAT_NAME change
    * [HIVE-19153] - Update golden files for few tests
    * [HIVE-19154] - Poll notification events to invalidate the results cache
    * [HIVE-19156] - TestMiniLlapLocalCliDriver.vectorized_dynamic_semijoin_reduction.q is broken
    * [HIVE-19159] - TestMTQueries.testMTQueries1 failure
    * [HIVE-19164] - TestMetastoreVersion failures
    * [HIVE-19171] - Persist runtime statistics in metastore
    * [HIVE-19175] - TestMiniLlapLocalCliDriver.testCliDriver update_access_time_non_current_db failing
    * [HIVE-19178] - TestMiniTezCliDriver.testCliDriver[explainanalyze_5] failure
    * [HIVE-19193] - TestActivePassiveHA fails
    * [HIVE-19194] - TestDruidStorageHandler fails
    * [HIVE-19195] - Fix flaky tests and cleanup testconfiguration to run llap specific tests in llap only.
    * [HIVE-19196] - TestTriggersMoveWorkloadManager is flaky
    * [HIVE-19197] - TestReplicationScenarios is flaky
    * [HIVE-19206] - Automatic memory management for open streaming writers
    * [HIVE-19209] - Streaming ingest record writers should accept input stream
    * [HIVE-19210] - Create separate module for streaming ingest
    * [HIVE-19211] - New streaming ingest API and support for dynamic partitioning
    * [HIVE-19214] - High throughput ingest ORC format
    * [HIVE-19222] - TestNegativeCliDriver tests are failing due to "java.lang.OutOfMemoryError: GC overhead limit exceeded"
    * [HIVE-19232] - results_cache_invalidation2 is failing
    * [HIVE-19274] - Add an OpTreeSignature persistence checker hook
    * [HIVE-19319] - RuntimeStats fixes
    * [HIVE-19322] - broken test: TestNegativeMinimrCliDriver#testCliDriver[minimr_broken_pipe]
    * [HIVE-19335] - Disable runtime filtering (semijoin reduction opt with bloomfilter) for external tables
    * [HIVE-19346] - TestMiniLlapLocalCliDriver.testCliDriver[materialized_view_create_rewrite_5] failling
    * [HIVE-19347] - TestTriggersWorkloadManager tests are failing consistently
    * [HIVE-19348] -  org.apache.hadoop.hive.ql.plan.mapping.TestOperatorCmp are failing
    * [HIVE-19371] - Add table ownerType to HMS thrift API
    * [HIVE-19372] - Add table ownerType to JDO/SQL and ObjectStore
    * [HIVE-19374] - Parse and process ALTER TABLE SET OWNER command syntax
    * [HIVE-19400] - Adjust Hive 1.0 to 2.0 conversion utility to the upgrade
    * [HIVE-19471] - bucket_map_join_tez1 and  bucket_map_join_tez2 are failing
    * [HIVE-19472] - HiveStreamingConnection swallows exception on partition creation
    * [HIVE-19494] - Accept shade prefix during reflective instantiation of output format


** Bug
    * [HIVE-4577] - hive CLI can't handle hadoop dfs command  with space and quotes.
    * [HIVE-6348] - Order by/Sort by in subquery
    * [HIVE-6590] - Hive does not work properly with boolean partition columns (wrong results and inserts to incorrect HDFS path)
    * [HIVE-6990] - Direct SQL fails when the explicit schema setting is different from the default one
    * [HIVE-8937] - fix description of hive.security.authorization.sqlstd.confwhitelist.* params
    * [HIVE-9815] - Metastore column"SERDE_PARAMS"."PARAM_VALUE"  limited to 4000 bytes
    * [HIVE-10616] - TypeInfoUtils doesn't handle DECIMAL with just precision specified
    * [HIVE-10865] - Beeline needs to support DELIMITER command
    * [HIVE-11064] - ALTER TABLE CASCADE ERROR unbalanced calls to openTransaction/commitTransaction
    * [HIVE-11266] - count(*) wrong result based on table statistics for external tables
    * [HIVE-11297] - Combine op trees for partition info generating tasks
    * [HIVE-11609] - Capability to add a filter to hbase scan via composite key doesn't work
    * [HIVE-12408] - SQLStdAuthorizer should not require external table creator to be owner of directory, in addition to rw permissions
    * [HIVE-12425] - OrcRecordUpdater.close(true) leaves the file open
    * [HIVE-12631] - LLAP IO: support ORC ACID tables
    * [HIVE-12719] - As a hive user, I am facing issues using permanent UDAF's.
    * [HIVE-12734] - Remove redundancy in HiveConfs serialized to UDFContext
    * [HIVE-13000] - Hive returns useless parsing error 
    * [HIVE-13652] - Import table change order of dynamic partitions
    * [HIVE-14032] - INSERT OVERWRITE command failed with case sensitive partition key names
    * [HIVE-14052] - Cleanup structures when external clients use LLAP
    * [HIVE-14077] - add implicit decimal arithmetic q test, fix issues if found 
    * [HIVE-14455] - upgrade httpclient, httpcore to match updated hadoop dependency
    * [HIVE-14560] - Support exchange partition between s3 and hdfs tables
    * [HIVE-14564] - Column Pruning generates out of order columns in SelectOperator which cause ArrayIndexOutOfBoundsException.
    * [HIVE-14678] - Hive-on-MR deprecation warning  is not diplayed when engine is set to capital letter 'MR'
    * [HIVE-14731] - Use Tez cartesian product edge in Hive (unpartitioned case only)
    * [HIVE-14792] - AvroSerde reads the remote schema-file at least once per mapper, per table reference.
    * [HIVE-14813] - Make TransactionBatchImpl.toString() include state of each txn: commit/abort
    * [HIVE-14988] - Support INSERT OVERWRITE into a partition on transactional tables
    * [HIVE-15077] - Acid LockManager is unfair
    * [HIVE-15104] - Hive on Spark generate more shuffle data than hive on mr
    * [HIVE-15144] - JSON.org license is now CatX
    * [HIVE-15160] - Can't order by an unselected column
    * [HIVE-15176] - Small typo in hiveserver2 webui
    * [HIVE-15249] - HIve 2.1.0 is throwing InvalidObjectException(message:Invalid column type name is too long
    * [HIVE-15267] - Make query length calculation logic more accurate in TxnUtils.needNewQuery()
    * [HIVE-15343] - Spelling errors in logging and exceptions for beeline, common, hbase-handler, hcatalog, llap-server, orc, serde and shims
    * [HIVE-15344] - Spelling errors in logging and exceptions for metastore and service directories
    * [HIVE-15442] - Driver.java has a redundancy  code
    * [HIVE-15483] - Database and table name is case sensitive when used in show grant
    * [HIVE-15504] - ArrayIndexOutOfBoundsException in GenericUDFTrunc::initialize
    * [HIVE-15515] - Remove the docs directory
    * [HIVE-15552] - Unable to coalesce DATE and TIMESTAMP types
    * [HIVE-15630] - add operation handle before operation.run instead of after operation.run
    * [HIVE-15632] - Hive/Druid integration: Incorrect result - Limit on timestamp disappears
    * [HIVE-15635] - Hive/Druid integration: timeseries query shows all days, even if no data
    * [HIVE-15636] - Hive/Druid integration: wrong semantics of topN query limit with granularity
    * [HIVE-15637] - Hive/Druid integration: wrong semantics of groupBy query limit with granularity
    * [HIVE-15639] - Hive/Druid integration: wrong semantics for ordering within groupBy queries
    * [HIVE-15680] - Incorrect results when hive.optimize.index.filter=true and same ORC table is referenced twice in query
    * [HIVE-15724] - getPrimaryKeys and getForeignKeys in metastore does not normalize db and table name
    * [HIVE-15739] - Incorrect exception message in PartExprEvalUtils
    * [HIVE-15761] - ObjectStore.getNextNotification could return an empty NotificationEventResponse causing TProtocolException 
    * [HIVE-15767] - Hive On Spark is not working on secure clusters from Oozie
    * [HIVE-15829] - LLAP text cache: disable memory tracking on the writer
    * [HIVE-15883] - HBase mapped table in Hive insert fail for decimal
    * [HIVE-15995] - Syncing metastore table with serde schema
    * [HIVE-16007] - When the query does not complie the LogRunnable never stops
    * [HIVE-16025] - Where IN clause throws exception
    * [HIVE-16026] - Generated query will timeout and/or kill the druid cluster.
    * [HIVE-16027] - <timestamp> BETWEEN <string> AND <string> must cast to TIMESTMAP
    * [HIVE-16044] - LLAP: Shuffle Handler keep-alive connections are closed from the server side
    * [HIVE-16053] - Remove newRatio from llap JAVA_OPTS_BASE
    * [HIVE-16057] - SchemaTool ignores --passWord argument if hadoop.security.credential.provider.path is configured
    * [HIVE-16061] - When hive.async.log.enabled is set to true, some output is not printed to the beeline console
    * [HIVE-16077] - UPDATE/DELETE fails with numBuckets > numReducers
    * [HIVE-16113] - PartitionPruner::removeNonPartCols needs to handle AND/OR cases
    * [HIVE-16117] - SortProjectTransposeRule should check for monotonicity preserving CAST
    * [HIVE-16125] - Split work between reducers.
    * [HIVE-16130] - Remove jackson classes from hive-jdbc standalone jar
    * [HIVE-16147] - Rename a partitioned table should not drop its partition columns stats
    * [HIVE-16174] - Update MetricsConstant.WAITING_COMPILE_OPS metric when we aquire lock failed in Driver
    * [HIVE-16177] - non Acid to acid conversion doesn't handle _copy_N files
    * [HIVE-16188] - beeline should block the connection if given invalid database name.
    * [HIVE-16193] - Hive show compactions not reflecting the status of the application
    * [HIVE-16213] - ObjectStore can leak Queries when rollbackTransaction throws an exception
    * [HIVE-16219] - metastore notification_log contains serialized message with  non functional fields
    * [HIVE-16222] - add a setting to disable row.serde for specific formats; enable for others
    * [HIVE-16225] - Memory leak in webhcat service (FileSystem CACHE entries)
    * [HIVE-16233] - llap: Query failed with AllocatorOutOfMemoryException
    * [HIVE-16254] - metadata for values temporary tables for INSERTs are getting replicated during bootstrap
    * [HIVE-16275] - Vectorization: Add ReduceSink support for TopN (in specialized native classes)
    * [HIVE-16282] - Semijoin: Disable slow-start for the bloom filter aggregate task
    * [HIVE-16287] - Alter table partition rename with location - moves partition back to hive warehouse
    * [HIVE-16290] - Stats: StatsRulesProcFactory::evaluateComparator estimates are wrong when minValue == filterValue
    * [HIVE-16291] - Hive fails when unions a parquet table with itself
    * [HIVE-16296] - use LLAP executor count to configure reducer auto-parallelism
    * [HIVE-16298] - Add config to specify multi-column joins have correlated columns
    * [HIVE-16299] - MSCK REPAIR TABLE should enforce partition key order when adding unknown partitions
    * [HIVE-16302] - Add junit dependency to hive-shims-common to compile with Hadoop 2.8+
    * [HIVE-16305] - Additional Datanucleus ClassLoaderResolverImpl leaks causing HS2 OOM
    * [HIVE-16307] - add IO memory usage report to LLAP UI
    * [HIVE-16308] - PreExecutePrinter and PostExecutePrinter should log to INFO level instead of ERROR
    * [HIVE-16309] - Hive Test Commands failure should be printed in hive.log in addition to stderr
    * [HIVE-16315] - Describe table doesn't show num of partitions
    * [HIVE-16316] - Prepare master branch for 3.0.0 development.
    * [HIVE-16317] - CASE .. NULL in JOIN condition can trigger SemanticException
    * [HIVE-16318] - LLAP cache: address some issues in 2.2/2.3
    * [HIVE-16319] - LLAP: Better handling of an empty wait queue, should try scheduling checks
    * [HIVE-16321] - Possible deadlock in metastore with Acid enabled
    * [HIVE-16323] - HS2 JDOPersistenceManagerFactory.pmCache leaks after HIVE-14204
    * [HIVE-16324] - Truncate table should not work when EXTERNAL property of table is true
    * [HIVE-16325] - Tez session refresh based on a time interval fails
    * [HIVE-16328] - HoS: more aggressive mapjoin optimization when hive.spark.use.ts.stats.for.mapjoin is true
    * [HIVE-16329] - TopN: use local executor info for LLAP memory checks
    * [HIVE-16333] - remove the redundant symbol "\" to appear red in sublime text 3
    * [HIVE-16335] - Beeline user HS2 connection file should use /etc/hive/conf instead of /etc/conf/hive
    * [HIVE-16336] - Rename hive.spark.use.file.size.for.mapjoin to hive.spark.use.ts.stats.for.mapjoin
    * [HIVE-16341] - Tez Task Execution Summary has incorrect input record counts on some operators
    * [HIVE-16347] - HiveMetastoreChecker should skip listing partitions which are not valid when hive.msck.path.validation is set to skip or ignore
    * [HIVE-16353] - Jetty 9 upgrade breaks hive master LLAP
    * [HIVE-16357] - Failed folder creation when creating a new table is reported incorrectly
    * [HIVE-16363] - QueryLifeTimeHooks should catch parse exceptions
    * [HIVE-16368] - Unexpected java.lang.ArrayIndexOutOfBoundsException from query with LaterView Operation for hive on MR.
    * [HIVE-16369] - Vectorization: Support PTF (Part 1: No Custom Window Framing -- Default Only)
    * [HIVE-16380] - removing global test dependency of jsonassert
    * [HIVE-16384] - Remove jdk7 build from travis
    * [HIVE-16385] - StatsNoJobTask could exit early before all partitions have been processed
    * [HIVE-16388] - LLAP: Log rotation for daemon, history and gc files
    * [HIVE-16389] - Allow HookContext to access SQLOperationDisplay
    * [HIVE-16390] - LLAP IO should take job config into account; also LLAP config should load defaults
    * [HIVE-16393] - Fix visibility of CodahaleReporter interface
    * [HIVE-16394] - HoS does not support queue name change in middle of session
    * [HIVE-16396] - Sync storage-api version in pom.xml
    * [HIVE-16399] - create an index for tc_txnid in TXN_COMPONENTS
    * [HIVE-16402] - Upgrade to Hadoop 2.8.0
    * [HIVE-16403] - LLAP UI shows the wrong number of executors
    * [HIVE-16404] - Renaming of public classes in Calcite 12 breeaking druid integration
    * [HIVE-16406] - Remove unwanted interning when creating PartitionDesc
    * [HIVE-16409] - TestEventHandlerFactory  has lacked the ASF header
    * [HIVE-16413] - Create table as select does not check ownership of the location
    * [HIVE-16421] - Runtime filtering breaks user-level explain
    * [HIVE-16422] - Should kill running Spark Jobs when a query is cancelled.
    * [HIVE-16425] - Vectorization: unload old hashtables before reloadHashTable
    * [HIVE-16427] - Fix multi-insert query and write qtests
    * [HIVE-16433] - Not nullify variable "rj" to avoid NPE due to race condition in ExecDriver.
    * [HIVE-16436] - Response times in "Task Execution Summary" at the end of the job is not correct
    * [HIVE-16448] - Vectorization: Vectorized order_null.q fails with deserialize EOF exception below TEZ ReduceRecordSource.processVectorGroup
    * [HIVE-16450] - Some metastore operations are not retried even with desired underlining exceptions
    * [HIVE-16451] - Race condition between HiveStatement.getQueryLog and HiveStatement.runAsyncOnServer
    * [HIVE-16459] - Forward channelInactive to RpcDispatcher
    * [HIVE-16461] - DagUtils checks local resource size on the remote fs
    * [HIVE-16462] - Vectorization: Enabling hybrid grace disables specialization of all reduce side joins
    * [HIVE-16465] - NullPointer Exception when enable vectorization for Parquet file format
    * [HIVE-16468] - BeeLineDriver should be able to run tests against an externally created cluster
    * [HIVE-16471] - Add metrics for "waiting compilation time"
    * [HIVE-16473] - Hive-on-Tez may fail to write to an HBase table
    * [HIVE-16482] - Druid Ser/Des need to use dimension output name
    * [HIVE-16483] - HoS should populate split related configurations to HiveConf
    * [HIVE-16485] - Enable outputName for RS operator in explain formatted
    * [HIVE-16487] - Serious Zookeeper exception is logged when a race condition happens
    * [HIVE-16491] - CBO cant handle join involving complex types in on condition
    * [HIVE-16494] - udaf percentile_approx() may fail on CBO
    * [HIVE-16497] - FileUtils. isActionPermittedForFileHierarchy, isOwnerOfFileHierarchy file system operations should be impersonated
    * [HIVE-16507] - Hive Explain User-Level may print out "Vertex dependency in root stage" twice
    * [HIVE-16510] - Vectorization: Add vectorized PTF tests in preparation for HIVE-16369
    * [HIVE-16511] - CBO looses inner casts on constants of complex type
    * [HIVE-16513] - width_bucket issues
    * [HIVE-16518] - Insert override for druid does not replace all existing segments
    * [HIVE-16519] - Fix exception thrown by checkOutputSpecs
    * [HIVE-16523] - VectorHashKeyWrapper hash code for strings is not so good
    * [HIVE-16524] - Remove the redundant item type in hiveserver2.jsp and QueryProfileTmpl.jamon
    * [HIVE-16533] - Vectorization: Avoid evaluating empty groupby keys
    * [HIVE-16534] - Add capability to tell aborted transactions apart from open transactions in ValidTxnList
    * [HIVE-16538] - TestExecDriver fails if run after TestOperators#testScriptOperator
    * [HIVE-16539] - Add PTF tests for blobstores
    * [HIVE-16545] - LLAP: bug in arena size determination logic
    * [HIVE-16546] - LLAP: Fail map join tasks if hash table memory exceeds threshold
    * [HIVE-16547] - LLAP: may not unlock buffers in some cases
    * [HIVE-16553] - Change default value for hive.tez.bigtable.minsize.semijoin.reduction
    * [HIVE-16554] - ACID: Make HouseKeeperService threads daemon
    * [HIVE-16557] - Vectorization: Specialize ReduceSink empty key case
    * [HIVE-16559] - Parquet schema evolution for partitioned tables may break if table and partition serdes differ
    * [HIVE-16562] - Issues with nullif / fetch task
    * [HIVE-16563] - Alter table partition set location should use fully qualified path for non-default FS
    * [HIVE-16572] - Rename a partition should not drop its column stats
    * [HIVE-16573] - In-place update for HoS can't be disabled
    * [HIVE-16576] - Fix encoding of intervals when fetching select query candidates from druid
    * [HIVE-16577] - Syntax error in the metastore init scripts for mssql
    * [HIVE-16578] - Semijoin Hints should use column name, if provided for partition key check
    * [HIVE-16581] -  a bug in HIVE-16523
    * [HIVE-16584] - Warning messages should use LogHelper.printInfo instead of printing to the infoStream directly
    * [HIVE-16588] - Resource leak by druid http client
    * [HIVE-16589] - Vectorization: Support Complex Types and GroupBy modes PARTIAL2, FINAL, and COMPLETE  for AVG, VARIANCE
    * [HIVE-16590] - Make initializing dag names in SparkWork thread safe for parallel compilation (HIVE-13512)
    * [HIVE-16592] - Vectorization: Long hashCodes should bit-mix into lower bits
    * [HIVE-16593] - SparkClientFactory.stop may prevent JVM from exiting
    * [HIVE-16598] - LlapServiceDriver - create directories and warn of errors
    * [HIVE-16599] - NPE in runtime filtering cost when handling SMB Joins
    * [HIVE-16603] - Enforce foreign keys to refer to primary keys or unique keys
    * [HIVE-16607] - ColumnStatsAutoGatherContext regenerates HiveConf.HIVEQUERYID
    * [HIVE-16609] - col='__HIVE_DEFAULT_PARTITION__' condition in select statement may produce wrong result
    * [HIVE-16610] - Semijoin Hint : Should be able to handle more than one hint per alias
    * [HIVE-16613] - SaslClientHandler.sendHello is eating exceptions
    * [HIVE-16625] - Extra '\0' characters in the output, when SeparatedValuesOutputFormat is used and the quoting is disabled
    * [HIVE-16633] - username for ATS data shall always be the uid who submit the job
    * [HIVE-16634] - LLAP Use a pool of connections to a single AM from a daemon
    * [HIVE-16640] - The ASF Headers have some errors in some class
    * [HIVE-16645] - Commands.java has missed the catch statement and has some code format errors
    * [HIVE-16646] - Alias in transform ... as clause shouldn't be case sensitive
    * [HIVE-16654] - Optimize a combination of avg(), sum(), count(distinct) etc
    * [HIVE-16658] - TestTimestampTZ.java has missed the ASF header
    * [HIVE-16659] - Query plan should reflect hive.spark.use.groupby.shuffle
    * [HIVE-16660] - Not able to add partition for views in hive when sentry is enabled
    * [HIVE-16665] - Race condition in Utilities.GetInputPathsCallable --> createDummyFileForEmptyPartition
    * [HIVE-16667] - PostgreSQL metastore handling of CLOB types for COLUMNS_V2.TYPE_NAME and other field is incorrect
    * [HIVE-16671] - LLAP IO: BufferUnderflowException may happen in very rare(?) cases due to ORC end-of-CB estimation
    * [HIVE-16675] - Fix ConcurrentModificationException in SparkClientImpl#startDriver
    * [HIVE-16677] - CTAS with no data fails in Druid
    * [HIVE-16678] - Truncate on temporary table fails with "table not found" error.
    * [HIVE-16679] - Missing ASF header on properties file in ptest2 project
    * [HIVE-16689] - Correlated scalar subquery with comparison to constant in predicate fails
    * [HIVE-16692] - LLAP: Keep alive connection in shuffle handler should not be closed until entire data is flushed out
    * [HIVE-16693] - beeline "source" command freezes if you have a comment in it?
    * [HIVE-16696] - Fix JoinCondDesc explain string
    * [HIVE-16698] - HoS should avoid mapjoin optimization in case of union and using table stats
    * [HIVE-16703] - Hive may add the same file to the session and vertex in Tez
    * [HIVE-16708] - Exception while renewing a Delegation Token
    * [HIVE-16721] - Inconsistent behavior in dealing with Timestamp stats
    * [HIVE-16724] - increase session timeout for LLAP ZK token manager
    * [HIVE-16730] - Vectorization: Schema Evolution for Text Vectorization / Complex Types
    * [HIVE-16731] - Vectorization: Make "CASE WHEN (day_name='Sunday') THEN column1 ELSE null end" that involves a column name or expression THEN or ELSE vectorize
    * [HIVE-16732] - Transactional tables should block LOAD DATA 
    * [HIVE-16737] - LLAP: Shuffle handler TCP listen queue overflows
    * [HIVE-16738] - Notification ID generation in DBNotification might not be unique across HS2 instances.
    * [HIVE-16742] - cap the number of reducers for LLAP at the configured value
    * [HIVE-16743] - BitSet set() is incorrectly used in TxnUtils.createValidCompactTxnList()
    * [HIVE-16744] - LLAP index update may be broken after ORC switch
    * [HIVE-16745] - Syntax error in 041-HIVE-16556.mysql.sql script
    * [HIVE-16746] - Reduce number of index lookups for same table in IndexWhereTaskDispatcher
    * [HIVE-16751] - Support different types for grouping columns in GroupBy Druid queries
    * [HIVE-16755] - LLAP IO: incorrect assert may trigger in tests
    * [HIVE-16756] - Vectorization: LongColModuloLongColumn throws "java.lang.ArithmeticException: / by zero"
    * [HIVE-16757] - Use of deprecated getRows() instead of new estimateRowCount(RelMetadataQuery..) has serious performance impact
    * [HIVE-16761] - LLAP IO: SMB joins fail elevator 
    * [HIVE-16769] - Possible hive service startup due to the existing file /tmp/stderr
    * [HIVE-16776] - Strange cast behavior for table backed by druid
    * [HIVE-16777] - LLAP: Use separate tokens and UGI instances when an external client is used
    * [HIVE-16778] - LLAP IO: better refcount management
    * [HIVE-16780] - Case "multiple sources, single key" in spark_dynamic_pruning.q fails 
    * [HIVE-16784] - Missing lineage information when hive.blobstore.optimizations.enabled is true
    * [HIVE-16788] - ODBC call SQLForeignKeys leads to NPE if you use PK arguments rather than FK arguments
    * [HIVE-16793] - Scalar sub-query: sq_count_check not required if gby keys are constant
    * [HIVE-16801] - Vectorization: throwExpandError should be an immediate fatal 
    * [HIVE-16803] - Alter table change column comment should not try to get column stats for update
    * [HIVE-16804] - Semijoin hint : Needs support for target table.
    * [HIVE-16808] - WebHCat statusdir parameter doesn't properly handle Unicode characters when using relative path
    * [HIVE-16820] - TezTask may not shut down correctly before submit
    * [HIVE-16821] - Vectorization: support Explain Analyze in vectorized mode
    * [HIVE-16824] - PrimaryToReplicaResourceFunctionTest.java has missed the ASF header
    * [HIVE-16826] - Improvements for SeparatedValuesOutputFormat
    * [HIVE-16828] - With CBO enabled, Query on partitioned views throws IndexOutOfBoundException
    * [HIVE-16832] - duplicate ROW__ID possible in multi insert into transactional table
    * [HIVE-16835] - Addendum to HIVE-16745
    * [HIVE-16844] - Fix Connection leak in ObjectStore when new Conf object is used
    * [HIVE-16845] - INSERT OVERWRITE a table with dynamic partitions on S3 fails with NPE
    * [HIVE-16846] - TestJdbcWithMiniHS2#testHttpHeaderSize test case is not testing in HTTP mode
    * [HIVE-16847] - LLAP queue order issue
    * [HIVE-16851] - Scalar subquery with group by missing sq_count_check UDF
    * [HIVE-16854] - SparkClientFactory is locked too aggressively
    * [HIVE-16864] - add validation to stream position search in LLAP IO
    * [HIVE-16869] - Hive returns wrong result when predicates on non-existing columns are pushed down to Parquet reader
    * [HIVE-16871] - CachedStore.get_aggr_stats_for has side affect
    * [HIVE-16875] - Query against view with partitioned child on HoS fails with privilege exception.
    * [HIVE-16876] - HoS: Make Rpc configs immutable at runtime
    * [HIVE-16877] - NPE when issue query like alter table ... cascade onto non-partitioned table 
    * [HIVE-16886] - HMS log notifications may have duplicated event IDs if multiple HMS are running concurrently
    * [HIVE-16888] - Upgrade Calcite to 1.13 and Avatica to 1.10
    * [HIVE-16898] - Validation of source file after distcp in repl load 
    * [HIVE-16902] - investigate "failed to remove operation log" errors
    * [HIVE-16903] - LLAP: Fix config name issue in SHUFFLE_MANAGE_OS_CACHE
    * [HIVE-16908] - Failures in TestHcatClient due to HIVE-16844
    * [HIVE-16910] - RpcConfiguration - Improper Cast From Long To Int
    * [HIVE-16915] - partition column count is not determined correctly in LLAP IO non-vectorized wrapper
    * [HIVE-16918] - Skip ReplCopyTask distcp for _metadata copying. Also enable -pb for distcp
    * [HIVE-16920] - remove useless uri.getScheme() from EximUtil
    * [HIVE-16922] - Typo in serde.thrift: COLLECTION_DELIM = "colelction.delim"
    * [HIVE-16927] - LLAP: Slider takes down all daemons when some daemons fail repeatedly
    * [HIVE-16930] - HoS should verify the value of Kerberos principal and keytab file before adding them to spark-submit command parameters
    * [HIVE-16935] - Hive should strip comments from input before choosing which CommandProcessor to run.
    * [HIVE-16937] - INFORMATION_SCHEMA usability: everything is currently a string
    * [HIVE-16938] - INFORMATION_SCHEMA usability: difficult to access # of table records
    * [HIVE-16939] - metastore error: 'export: -Dproc_metastore : not a valid identifier'
    * [HIVE-16942] - INFORMATION_SCHEMA: schematool for setting it up is not idempotent
    * [HIVE-16943] - MoveTask should separate src FileSystem from dest FileSystem 
    * [HIVE-16947] - Semijoin Reduction : Task cycle created due to multiple semijoins in conjunction with hashjoin
    * [HIVE-16948] - Invalid explain when running dynamic partition pruning query in Hive On Spark
    * [HIVE-16949] - Leak of threads from Get-Input-Paths and Get-Input-Summary thread pool
    * [HIVE-16954] - LLAP IO: better debugging
    * [HIVE-16958] - Setting hive.merge.sparkfiles=true will retrun an error when generating parquet databases 
    * [HIVE-16960] - Hive throws an ugly error exception when HDFS sticky bit is set
    * [HIVE-16961] - Hive on Spark leaks spark application in case user cancels query and closes session
    * [HIVE-16964] - _orc_acid_version file is missing
    * [HIVE-16965] - SMB join may produce incorrect results
    * [HIVE-16973] - Fetching of Delegation tokens (Kerberos) for AccumuloStorageHandler fails in HS2
    * [HIVE-16975] - Vectorization: Fully vectorize CAST date as TIMESTAMP so VectorUDFAdaptor is now used
    * [HIVE-16978] - HoS: add current thread ID to the log redirector for the RemoteDriver
    * [HIVE-16982] - WebUI "Show Query" tab prints "UNKNOWN" instead of explaining configuration option
    * [HIVE-16985] - LLAP IO: enable SMB join in elevator after the former is fixed
    * [HIVE-16991] - HiveMetaStoreClient needs a 2-arg constructor for backwards compatibility
    * [HIVE-17002] - decimal (binary) is not working when creating external table for hbase
    * [HIVE-17006] - LLAP: Parquet caching v1
    * [HIVE-17007] - NPE introduced by HIVE-16871
    * [HIVE-17008] - Fix boolean flag switchup in DropTableEvent
    * [HIVE-17010] - Fix the overflow problem of Long type in SetSparkReducerParallelism
    * [HIVE-17013] - Delete request with a subquery based on select over a view
    * [HIVE-17050] - Multiline queries that have comment in middle fail when executed via "beeline -e"
    * [HIVE-17052] - Remove logging of predicate filters
    * [HIVE-17066] - Query78 filter wrong estimatation is generating bad plan
    * [HIVE-17067] - LLAP: Add http endpoint to provide system level configurations
    * [HIVE-17069] - Refactor OrcRawRecrodMerger.ReaderPair
    * [HIVE-17070] - remove .orig files from src
    * [HIVE-17073] - Incorrect result with vectorization and SharedWorkOptimizer
    * [HIVE-17076] - typo in itests/src/test/resources/testconfiguration.properties
    * [HIVE-17079] - LLAP: Use FQDN by default for work submission
    * [HIVE-17083] - DagUtils overwrites any credentials already added
    * [HIVE-17085] - ORC file merge/concatenation should do full schema check
    * [HIVE-17086] - LLAP: JMX Metric for max file descriptors used so far
    * [HIVE-17088] - HS2 WebUI throws a NullPointerException when opened
    * [HIVE-17090] - spark.only.query.files are not being run by ptest
    * [HIVE-17093] - LLAP ssl configs need to be localized to talk to a wire encrypted hdfs
    * [HIVE-17095] - Long chain repl loads do not complete in a timely fashion
    * [HIVE-17097] - Fix SemiJoinHint parsing in SemanticAnalyzer
    * [HIVE-17098] - Race condition in Hbase tables
    * [HIVE-17099] - Update golden files for spark.only.query.files
    * [HIVE-17109] - Remove calls to RelMetadataQuery.instance() after Calcite 1.13 upgrade
    * [HIVE-17110] - BucketCodec should enforce value ranges
    * [HIVE-17111] - Add TestLocalSparkCliDriver
    * [HIVE-17113] - Duplicate bucket files can get written to table by runaway task
    * [HIVE-17114] - HoS: Possible skew in shuffling when data is not really skewed
    * [HIVE-17115] - MetaStoreUtils.getDeserializer doesn't catch the java.lang.ClassNotFoundException
    * [HIVE-17116] - Vectorization: Add infrastructure for vectorization of ROW__ID struct
    * [HIVE-17117] - Metalisteners are not notified when threadlocal metaconf is cleanup 
    * [HIVE-17128] - Operation Logging leaks file descriptors as the log4j Appender is never closed
    * [HIVE-17144] - export of temporary tables not working and it seems to be using distcp rather than filesystem copy
    * [HIVE-17147] - Vectorization: Add code for testing MapJoin operator in isolation and measuring its performance with JMH
    * [HIVE-17148] - Incorrect result for Hive join query with COALESCE in WHERE condition
    * [HIVE-17149] - Hdfs directory is not cleared if partition creation failed on HMS
    * [HIVE-17150] - CREATE INDEX execute HMS out-of-transaction listener calls inside a transaction
    * [HIVE-17152] - Improve security of random generator for HS2 cookies
    * [HIVE-17155] - findConfFile() in HiveConf.java has some issues with the conf path
    * [HIVE-17169] - Avoid extra call to KeyProvider::getMetadata()
    * [HIVE-17172] - add ordering checks to DiskRangeList
    * [HIVE-17176] - Add ASF header for LlapAllocatorBuffer.java
    * [HIVE-17177] - move TestSuite.java to the right position
    * [HIVE-17181] - HCatOutputFormat should expose complete output-schema (including partition-keys) for dynamic-partitioning MR jobs
    * [HIVE-17184] - Unexpected new line in beeline output when running with -f option
    * [HIVE-17188] - ObjectStore runs out of memory for large batches of addPartitions().
    * [HIVE-17189] - Fix backwards incompatibility in HiveMetaStoreClient
    * [HIVE-17208] - Repl dump should pass in db/table information to authorization API
    * [HIVE-17209] - ObjectCacheFactory should return null when tez shared object registry is not setup
    * [HIVE-17213] - HoS: file merging doesn't work for union all
    * [HIVE-17217] - SMB Join : Assert if paths are different in TezGroupedSplit in KeyValueInputMerger
    * [HIVE-17218] - Canonical-ize hostnames for Hive metastore, and HS2 servers.
    * [HIVE-17220] - Bloomfilter probing in semijoin reduction is thrashing L1 dcache
    * [HIVE-17222] - Llap: Iotrace throws  java.lang.UnsupportedOperationException with IncompleteCb
    * [HIVE-17228] - Bump tez version to 0.9.0
    * [HIVE-17233] - Set "mapred.input.dir.recursive" for HCatInputFormat-based jobs.
    * [HIVE-17235] - Add ORC Decimal64 Serialization/Deserialization (Part 1)
    * [HIVE-17240] - Function ACOS(2) and ASIN(2) should be null
    * [HIVE-17254] - Skip updating AccessTime of recycled files in ReplChangeManager
    * [HIVE-17257] - Hive should merge empty files
    * [HIVE-17258] - Incorrect log messages in the Hive.java
    * [HIVE-17259] - Hive JDBC does not recognize UNIONTYPE columns
    * [HIVE-17260] - Typo: exception has been created and lost in the ThriftJDBCBinarySerDe
    * [HIVE-17265] - Cache merged column stats from retrieved partitions
    * [HIVE-17267] - Make HMS Notification Listeners typesafe
    * [HIVE-17268] - WebUI / QueryPlan: query plan is sometimes null when explain output conf is on
    * [HIVE-17270] - Qtest results show wrong number of executors
    * [HIVE-17272] - when hive.vectorized.execution.enabled is true, query on empty partitioned table fails with NPE
    * [HIVE-17274] - RowContainer spills for timestamp column throws exception
    * [HIVE-17275] - Auto-merge fails on writes of UNION ALL output to ORC file with dynamic partitioning
    * [HIVE-17276] - Check max shuffle size when converting to dynamically partitioned hash join
    * [HIVE-17277] - HiveMetastoreClient Log name is wrong
    * [HIVE-17280] - Data loss in CONCATENATE ORC created by Spark
    * [HIVE-17281] - LLAP external client not properly handling KILLED notification that occurs when a fragment is rejected
    * [HIVE-17283] - Enable parallel edges of semijoin along with mapjoins
    * [HIVE-17285] - Fixes for bit vector retrievals and merging
    * [HIVE-17286] - Avoid expensive String serialization/deserialization for bitvectors
    * [HIVE-17290] - Should use equals() rather than == to compare strings
    * [HIVE-17298] - export when running distcp for large number of files should not run as privileged user 
    * [HIVE-17301] - Make JSONMessageFactory.getTObj method thread safe
    * [HIVE-17302] - ReduceRecordSource should not add batch string to Exception message
    * [HIVE-17303] - Missmatch between roaring bitmap library used by druid and the one coming from tez
    * [HIVE-17305] - New insert overwrite dynamic partitions qtest need to have the golden file regenerated
    * [HIVE-17309] - alter partition onto a table not in current database throw InvalidOperationException
    * [HIVE-17311] - Numeric overflow in the HiveConf
    * [HIVE-17313] - Potentially possible 'case fall through' in the ObjectInspectorConverters
    * [HIVE-17314] - LazySimpleSerializeWrite.writeString() contains if with an empty body
    * [HIVE-17321] - HoS: analyze ORC table doesn't compute raw data size when noscan/partialscan is not specified
    * [HIVE-17322] - Serialise BeeLine qtest execution to prevent flakyness
    * [HIVE-17327] - LLAP IO: restrict native file ID usage to default FS to avoid hypothetical collisions when HDFS federation is used
    * [HIVE-17331] - Path must be used as key type of the pathToAlises
    * [HIVE-17333] - Schema changes in HIVE-12274 for Oracle may not work for upgrade
    * [HIVE-17336] - Missing class 'org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat' from Hive on Spark when inserting into hbase based table
    * [HIVE-17338] - Utilities.get*Tasks multiple methods duplicate code
    * [HIVE-17344] - LocalCache element memory usage is not calculated properly.
    * [HIVE-17348] - Remove unnecessary GenSparkUtils.java.orig file
    * [HIVE-17351] - use new slider package installation command in run.sh
    * [HIVE-17352] - HiveSever2 error with "Illegal Operation state transition from CLOSED to FINISHED"
    * [HIVE-17354] - Fix "alter view" for incremental replication
    * [HIVE-17356] - Missing ASF headers 3 classes
    * [HIVE-17357] - Plugin jars are not properly added for LocalHiveSparkClient
    * [HIVE-17360] - Tez session reopen appears to use a wrong conf object
    * [HIVE-17364] - Add unit test to "alter view" replication
    * [HIVE-17365] - Druid CTAS should support CHAR/VARCHAR type
    * [HIVE-17367] - IMPORT table doesn't load from data dump if a metadata-only dump was already imported.
    * [HIVE-17368] - DBTokenStore fails to connect in Kerberos enabled remote HMS environment
    * [HIVE-17372] - update druid dependency to druid 0.10.1
    * [HIVE-17377] - SharedWorkOptimizer might not iterate through TS operators deterministically
    * [HIVE-17378] - CBO: HiveReduceExpressionsWithStatsRule can operate on IS_NULL and IS_NOT_NULL
    * [HIVE-17385] - Fix incremental repl error for non-native tables
    * [HIVE-17389] - Yetus is always failing on rat checks
    * [HIVE-17391] - Compaction fails if there is an empty value in tblproperties
    * [HIVE-17392] - SharedWorkOptimizer might merge TS operators filtered by not equivalent semijoin operators
    * [HIVE-17393] - AMReporter need hearbeat every external 'AM'
    * [HIVE-17394] - AvroSerde is regenerating TypeInfo objects for each nullable Avro field for every row
    * [HIVE-17401] - Hive session idle timeout doesn't function properly
    * [HIVE-17403] - Fail concatenation for unmanaged and transactional tables
    * [HIVE-17410] - repl load task during subsequent DAG generation does not start from the last partition processed
    * [HIVE-17411] - LLAP IO may incorrectly release a refcount in some rare cases
    * [HIVE-17412] - Add "-- SORT_QUERY_RESULTS" for spark_vectorized_dynamic_partition_pruning.q
    * [HIVE-17413] - predicate involving CAST affects value returned by the SELECT statement
    * [HIVE-17415] - Hit error "SemanticException View xxx is corresponding to LIMIT, rather than a SelectOperator." in Hive queries
    * [HIVE-17417] - LazySimple Timestamp is very expensive
    * [HIVE-17419] - ANALYZE TABLE...COMPUTE STATISTICS FOR COLUMNS command shows computed stats for masked tables
    * [HIVE-17420] - bootstrap - get replid before object dump
    * [HIVE-17421] - Clear incorrect stats after replication
    * [HIVE-17429] - Hive JDBC doesn't return rows when querying Impala
    * [HIVE-17450] - rename TestTxnCommandsBase 
    * [HIVE-17452] - HPL/SQL function variable block is not initialized
    * [HIVE-17453] - Missing ASF headers 2 classes
    * [HIVE-17457] - IOW Acid Insert Overwrite when the transaction fails
    * [HIVE-17459] - View deletion operation failed to replicate on target cluster
    * [HIVE-17460] - `insert overwrite` should support table schema evolution (e.g. add columns)
    * [HIVE-17463] - ORC: include orc-shims in hive-exec.jar
    * [HIVE-17464] - Fix to be able to disable max shuffle size DHJ config
    * [HIVE-17465] - Statistics: Drill-down filters don't reduce row-counts progressively
    * [HIVE-17468] - Shade and package appropriate jackson version for druid storage handler
    * [HIVE-17471] - Vectorization: Enable hive.vectorized.row.identifier.enabled to true by default
    * [HIVE-17472] - Drop-partition for multi-level partition fails, if data does not exist.
    * [HIVE-17475] - Disable mapjoin using hint
    * [HIVE-17479] - Staging directories do not get cleaned up for update/delete queries
    * [HIVE-17483] - HS2 kill command to kill queries using query id
    * [HIVE-17485] - Hive-Druid table on indexing for few segments- DruidRecordWriter.pushSegments throws ArrayIndexOutOfBoundsException
    * [HIVE-17489] - Separate client-facing and server-side Kerberos principals, to support HA
    * [HIVE-17496] - Bootstrap repl is not cleaning up staging dirs
    * [HIVE-17504] - Skip ACID table for replication
    * [HIVE-17510] - Make comparison of filter predicates in q files deterministic
    * [HIVE-17512] - Not use doAs if distcp privileged user same as user running hive
    * [HIVE-17522] - cleanup old 'repl dump' dirs
    * [HIVE-17523] - Insert into druid table  hangs Hive server2 in an infinite loop
    * [HIVE-17529] - Bucket Map Join : Sets incorrect edge type causing execution failure
    * [HIVE-17530] - ClassCastException when converting uniontype
    * [HIVE-17535] - Select 1 EXCEPT Select 1 fails with NPE
    * [HIVE-17553] - CBO wrongly type cast decimal literal to int
    * [HIVE-17554] - Occurr java.lang.ArithmeticException: / by zero at hplsql component
    * [HIVE-17556] - The test udf_mask_hash.q is failing
    * [HIVE-17558] - Skip non-native/temporary tables for constraint related scenarios
    * [HIVE-17560] - HiveMetastore doesn't start in secure cluster if repl change manager is enabled
    * [HIVE-17563] - CodahaleMetrics.JsonFileReporter is not updating hive.service.metrics.file.location
    * [HIVE-17568] - HiveJoinPushTransitivePredicatesRule may exchange predicates which are not valid on the other branch
    * [HIVE-17571] - update sql standard authorization config whitelist to include distcp options for replication
    * [HIVE-17576] - Improve progress-reporting in TezProcessor
    * [HIVE-17582] - Followup of HIVE-15708
    * [HIVE-17584] - fix mapred.job.queue.name in sql standard authorization config whitelist
    * [HIVE-17585] - Improve thread safety when loading dynamic partitions in parallel
    * [HIVE-17588] - LlapRowRecordReader doing name-based field lookup for every column of every row
    * [HIVE-17594] - Unit format error in Copy.java
    * [HIVE-17595] - Correct DAG for updating the last.repl.id for a database during bootstrap load
    * [HIVE-17601] - improve error handling in LlapServiceDriver
    * [HIVE-17602] - Explain plan not working
    * [HIVE-17610] - LLAP IO: an exception in exception handling can hide the original exception
    * [HIVE-17613] - remove object pools for short, same-thread allocations
    * [HIVE-17615] - Task.executeTask has to be thread safe for parallel execution
    * [HIVE-17619] - Exclude avatica-core.jar dependency from avatica shaded jar
    * [HIVE-17620] - Use the default MR scratch directory (HDFS) in the only case when hive.blobstore.optimizations.enabled=true AND isFinalJob=true
    * [HIVE-17621] - Hive-site settings are ignored during HCatInputFormat split-calculation
    * [HIVE-17623] - Fix Select query Fix Double column serde and some refactoring
    * [HIVE-17624] - MapredLocakTask running in separate JVM could throw ClassNotFoundException 
    * [HIVE-17625] - Replication: update hive.repl.partitions.dump.parallelism to 100
    * [HIVE-17627] - Use druid scan query instead of the select query.
    * [HIVE-17628] - always use fully qualified path for tables/partitions/etc.
    * [HIVE-17633] - Make it possible to override the query results directory in TestBeeLineDriver
    * [HIVE-17635] - Add unit tests to CompactionTxnHandler and use PreparedStatements for queries
    * [HIVE-17639] - don't reuse planner context when re-parsing the query
    * [HIVE-17643] - recent WM changes broke reopen due to spurious overloads
    * [HIVE-17644] - directSQL errors out on key constraints until the DB is initialized
    * [HIVE-17649] - Export/Import: Move export data write to a task
    * [HIVE-17653] - Druid storage handler CTAS with boolean type columns fails. 
    * [HIVE-17659] - get_token thrift call fails for DBTokenStore in remote HMS mode
    * [HIVE-17664] - Refactor and add new tests
    * [HIVE-17665] - Update netty-all to latest 4.0.x.Final
    * [HIVE-17679] - http-generic-click-jacking for WebHcat server
    * [HIVE-17682] - Vectorization: IF stmt produces wrong results
    * [HIVE-17690] - Add distcp.options.p* in sql standard authorization config whitelist
    * [HIVE-17701] - Added restriction to historic queries on web UI
    * [HIVE-17702] - incorrect isRepeating handling in decimal reader in ORC
    * [HIVE-17706] - Add a possibility to run the BeeLine tests on the default database
    * [HIVE-17715] - Exception when pushing postaggregates into Druid
    * [HIVE-17720] - Bitvectors are not shown in describe statement on beeline
    * [HIVE-17721] - with Postgres rdbms for metastore and dbnotification enabled, hive DDL SQL query fails 
    * [HIVE-17723] - Update Accumulo drive q.out files
    * [HIVE-17725] - Fix misnamed tests which are not run during precommit runs. 
    * [HIVE-17726] - Using exists may lead to incorrect results
    * [HIVE-17731] - add a backward compat option for external users to HIVE-11985
    * [HIVE-17735] - ObjectStore.addNotificationEvent is leaking queries
    * [HIVE-17746] - Regenerate spark_explainuser_1.q.out
    * [HIVE-17749] - Multiple class have missed the ASF header
    * [HIVE-17758] - NOTIFICATION_SEQUENCE_LOCK_RETRY_SLEEP_INTERVAL.defaultLongVal is -1
    * [HIVE-17761] - Deprecate hive.druid.select.distribute property for Druid
    * [HIVE-17762] - Exclude older jackson-annotation.jar from druid-handler shaded jar
    * [HIVE-17764] - alter view fails when hive.metastore.disallow.incompatible.col.type.changes set to true
    * [HIVE-17765] - expose Hive keywords 
    * [HIVE-17777] - Add maven coordinates in itests/pom.xml
    * [HIVE-17781] - Map MR settings to Tez settings via DeprecatedKeys
    * [HIVE-17782] - Inconsistent cast behavior from string to numeric types with regards to leading/trailing spaces
    * [HIVE-17785] - Encription tests are not running
    * [HIVE-17792] - Enable Bucket Map Join when there are extra keys other than bucketed columns
    * [HIVE-17795] - Add distribution management tag in pom
    * [HIVE-17798] - When replacing the src table names in BeeLine testing, the table names shouldn't be changed to lower case
    * [HIVE-17803] - With Pig multi-query, 2 HCatStorers writing to the same table will trample each other's outputs
    * [HIVE-17804] - Vectorization: Bug erroneously causes match for 1st row in batch (SelectStringColLikeStringScalar)
    * [HIVE-17806] - Create directory for metrics file if it doesn't exist
    * [HIVE-17807] - Execute maven commands in batch mode for ptests
    * [HIVE-17813] - hive.exec.move.files.from.source.dir does not work with partitioned tables
    * [HIVE-17815] - prevent OOM with Atlas Hive hook 
    * [HIVE-17817] - Stabilize crossproduct warning message output order
    * [HIVE-17822] - Provide an option to skip shading of jars
    * [HIVE-17825] - Socket not closed when trying to read files to copy over in replication from metadata
    * [HIVE-17826] - Error writing to RandomAccessFile after operation log is closed
    * [HIVE-17828] - Metastore: mysql upgrade scripts to 3.0.0 is broken
    * [HIVE-17829] - ArrayIndexOutOfBoundsException - HBASE-backed tables with Avro schema in Hive2
    * [HIVE-17830] - dbnotification fails to work with rdbms other than postgres
    * [HIVE-17831] - HiveSemanticAnalyzerHookContext does not update the HiveOperation after sem.analyze() is called
    * [HIVE-17832] - Allow hive.metastore.disallow.incompatible.col.type.changes to be changed in metastore
    * [HIVE-17833] - Publish split generation counters
    * [HIVE-17834] - Fix flaky triggers test
    * [HIVE-17836] - Persisting nulls in bit vector field fails for postgres backed metastore
    * [HIVE-17839] - Cannot generate thrift definitions in standalone-metastore
    * [HIVE-17843] - UINT32 Parquet columns are handled as signed INT32-s, silently reading incorrect data
    * [HIVE-17845] - insert fails if target table columns are not lowercase
    * [HIVE-17853] - RetryingMetaStoreClient loses UGI impersonation-context when reconnecting after timeout
    * [HIVE-17864] - PTestClient cannot start during Precommit tests
    * [HIVE-17867] - Exception in windowing functions with TIMESTAMP WITH LOCAL TIME ZONE type
    * [HIVE-17868] - Make queries in spark_local_queries.q have deterministic output
    * [HIVE-17872] - Ignoring schema autostart doesn't work (HIVE-14152 used the wrong setting)
    * [HIVE-17873] - External LLAP client: allow same handleID to be used more than once
    * [HIVE-17882] - Resource plan retrieval looks incorrect
    * [HIVE-17891] - HIVE-13076 uses create table if not exists for the postgres script
    * [HIVE-17900] - analyze stats on columns triggered by Compactor generates malformed SQL with > 1 partition column
    * [HIVE-17908] - LLAP External client not correctly handling killTask for pending requests
    * [HIVE-17918] - NPE during semijoin reduction optimization when LLAP caching disabled
    * [HIVE-17936] - Dynamic Semijoin Reduction : markSemiJoinForDPP marks unwanted semijoin branches
    * [HIVE-17937] - llap_acid_fast test is flaky
    * [HIVE-17939] - Bucket map join not being selected when bucketed tables is missing bucket files
    * [HIVE-17942] - HiveAlterHandler not using conf from HMS Handler
    * [HIVE-17952] - Fix license headers to avoid dangling javadoc warnings
    * [HIVE-17953] - Metrics should move to destination atomically
    * [HIVE-17963] - Fix for HIVE-17113 can be improved for non-blobstore filesystems
    * [HIVE-17966] - org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveArrayInspector - Review
    * [HIVE-17973] - Fix small bug in multi_insert_union_src.q
    * [HIVE-17976] - HoS: don't set output collector if there's no data to process
    * [HIVE-17978] - Shared work optimizer may leave useless operator branches in the plan
    * [HIVE-17994] - Vectorization: Serialization bottlenecked on irrelevant hashmap lookup
    * [HIVE-18001] - InvalidObjectException while creating Primary Key constraint on partition key column
    * [HIVE-18006] - Optimize memory footprint of HLLDenseRegister
    * [HIVE-18007] - Address maven warnings
    * [HIVE-18012] - fix ct_noperm_loc test
    * [HIVE-18016] - org.apache.hadoop.hive.ql.util.ResourceDownloader - Review
    * [HIVE-18017] - HS2 materialized view registry init loading all tables from metastore
    * [HIVE-18026] - Hive webhcat principal configuration optimization
    * [HIVE-18046] - Metastore: default IS_REWRITE_ENABLED=false instead of NULL
    * [HIVE-18050] - LlapServiceDriver shoud split HIVE_AUX_JARS_PATH by ':' instead of ','
    * [HIVE-18054] -  Make Lineage work with concurrent queries on a Session
    * [HIVE-18060] - UpdateInputAccessTimeHook fails for non-current database
    * [HIVE-18067] - Remove extraneous golden files
    * [HIVE-18068] - Upgrade to Calcite 1.15
    * [HIVE-18069] - MetaStoreDirectSql to get tables has misplaced comma
    * [HIVE-18077] - Vectorization: Add string conversion case for UDFToDouble
    * [HIVE-18090] - acid heartbeat fails when metastore is connected via hadoop credential
    * [HIVE-18109] - fix identifier usage in parser
    * [HIVE-18111] - Fix temp path for Spark DPP sink
    * [HIVE-18124] -  clean up isAcidTable() API vs isInsertOnlyTable()
    * [HIVE-18127] - Do not strip '--' comments from shell commands issued from CliDriver
    * [HIVE-18136] - WorkloadManagerMxBean is missing the Apache license header
    * [HIVE-18146] - Vectorization: VectorMapJoinOperator Decimal64ColumnVector key/value cast bug
    * [HIVE-18147] - Tests can fail with java.net.BindException: Address already in use
    * [HIVE-18148] - NPE in SparkDynamicPartitionPruningResolver
    * [HIVE-18150] - Upgrade Spark Version to 2.2.0
    * [HIVE-18151] - LLAP external client: Better error message propagation during submission failures
    * [HIVE-18157] - Vectorization : Insert in bucketed table is broken with vectorization
    * [HIVE-18160] - Jar localization during session initialization is slow
    * [HIVE-18166] - Result of hive.query.string is encoded.
    * [HIVE-18188] - Fix TestSSL failures in master
    * [HIVE-18189] - Order by position does not work when cbo is disabled
    * [HIVE-18191] - Vectorization: Add validation of TableScanOperator (gather statistics) back
    * [HIVE-18194] - Migrate existing ACID tables to use write id per table rather than global transaction id
    * [HIVE-18195] - Hive schema broken on postgres
    * [HIVE-18196] - Druid Mini Cluster to run Qtests integrations tests.
    * [HIVE-18198] - TablePropertyEnrichmentOptimizer.java is missing the Apache license header
    * [HIVE-18207] - Fix the test failure for TestCliDriver#vector_complex_join
    * [HIVE-18208] - SMB Join : Fix the unit tests to run SMB Joins.
    * [HIVE-18210] - create resource plan allows duplicates
    * [HIVE-18213] - Tests: YARN Minicluster times out if the disks are >90% full
    * [HIVE-18220] - Workload Management tables have broken constraints defined on postgres schema
    * [HIVE-18228] - Azure credential properties should be added to the HiveConf hidden list
    * [HIVE-18232] - Packaging: add dfs-init script in package target
    * [HIVE-18240] - support getClientInfo/setClientInfo in JDBC
    * [HIVE-18241] - Query with LEFT SEMI JOIN producing wrong result
    * [HIVE-18248] - Clean up parameters
    * [HIVE-18250] - CBO gets turned off with duplicates in RR error
    * [HIVE-18254] - Use proper AVG Calcite primitive instead of Other_FUNCTION
    * [HIVE-18255] - spark-client jar should be prefixed with hive-
    * [HIVE-18258] - Vectorization: Reduce-Side GROUP BY MERGEPARTIAL with duplicate columns is broken
    * [HIVE-18263] - Ptest execution are multiple times slower sometimes due to dying executor slaves
    * [HIVE-18266] - LLAP: /system references wrong file for THP
    * [HIVE-18269] - LLAP: Fast llap io with slow processing pipeline can lead to OOM
    * [HIVE-18271] - Druid Insert into fails with exception when committing files
    * [HIVE-18290] - hbase backed table creation fails where no column comments present
    * [HIVE-18293] - Hive is failing to compact tables contained within a folder that is not owned by identity running HiveMetaStore
    * [HIVE-18298] - Fix TestReplicationScenarios.testConstraints
    * [HIVE-18299] - DbNotificationListener fail on mysql with "select for update"
    * [HIVE-18306] - Fix spark smb tests
    * [HIVE-18309] - qtests: smb_mapjoin_19.q breaks bucketsortoptimize_insert_2.q
    * [HIVE-18310] - Test 'vector_reduce_groupby_duplicate_cols.q' is misspelled in testconfiguration.properties
    * [HIVE-18311] - Enable smb_mapjoin_8.q for cli driver
    * [HIVE-18314] - qtests: semijoin_hint.q breaks hybridgrace_hashjoin_2.q	
    * [HIVE-18316] - HiveEndPoint should only work with full acid tables
    * [HIVE-18318] - LLAP record reader should check interrupt even when not blocking
    * [HIVE-18321] - Support REBUILD for MVs backed by custom storage handlers
    * [HIVE-18326] - LLAP Tez scheduler - only preempt tasks if there's a dependency between them
    * [HIVE-18330] - Fix TestMsgBusConnection - doesn't test tests the original intention
    * [HIVE-18331] - Renew the Kerberos ticket used by Druid Query runner
    * [HIVE-18335] - Vectorization : Check bounds of array before the allocation in VectorMapJoinFastBytesHashTable
    * [HIVE-18341] - Add repl load support for adding "raw" namespace for TDE with same encryption keys
    * [HIVE-18352] - introduce a METADATAONLY option while doing REPL DUMP to allow integrations of other tools 
    * [HIVE-18353] - CompactorMR should call jobclient.close() to trigger cleanup
    * [HIVE-18355] - Add builder for metastore Thrift classes missed in the first pass - FunctionBuilder
    * [HIVE-18356] - Fixing license headers in checkstyle
    * [HIVE-18359] - Extend grouping set limits from int to long
    * [HIVE-18360] - NPE in TezSessionState
    * [HIVE-18365] - netty-all jar is not present in the llap tarball
    * [HIVE-18367] - Describe Extended output is truncated on a table with an explicit row format containing tabs or newlines.
    * [HIVE-18370] - standalone-metastore gen dir contains two annotation/package-info.java which causes IDEA build fail
    * [HIVE-18379] - ALTER TABLE authorization_part SET PROPERTIES ("PARTITIONL_LEVEL_PRIVILEGE"="TRUE"); fails when authorization_part is MicroManaged table.
    * [HIVE-18380] - ALTER TABLE CONCATENATE is not supported on Micro-managed table
    * [HIVE-18383] - Qtests: running all cases from TestNegativeCliDriver results in OOMs
    * [HIVE-18384] - ConcurrentModificationException in log4j2.x library
    * [HIVE-18385] - mergejoin fails with java.lang.IllegalStateException
    * [HIVE-18390] - IndexOutOfBoundsException when query a  partitioned view in ColumnPruner 
    * [HIVE-18393] - Error returned when some other type is read as string from parquet tables
    * [HIVE-18413] - Grouping of an empty result set may only contain null values
    * [HIVE-18414] - upgrade to tez-0.9.1
    * [HIVE-18416] - Initial support for TABLE function
    * [HIVE-18417] - better error handling in TezSessionState cleanup
    * [HIVE-18419] - CliDriver loads different hive-site.xml into HiveConf and MetastoreConf
    * [HIVE-18420] - LLAP IO: InputStream may return 0 bytes
    * [HIVE-18421] - Vectorized execution handles overflows in a different manner than non-vectorized execution
    * [HIVE-18422] - Vectorized input format should not be used when vectorized input format is excluded and row.serde is enabled
    * [HIVE-18426] - Memory leak in RoutingAppender for every hive operation
    * [HIVE-18429] - Compaction should handle a case when it produces no output
    * [HIVE-18430] - Add new determinism category for runtime constants (current_date, current_timestamp)
    * [HIVE-18442] - HoS: No FileSystem for scheme: nullscan
    * [HIVE-18445] - qtests: auto_join25.q fails permanently
    * [HIVE-18447] - JDBC: Provide a way for JDBC users to pass cookie info via connection string
    * [HIVE-18450] - Support TABLE function in CBO
    * [HIVE-18452] - work around HADOOP-15171
    * [HIVE-18456] - Add some tests for HIVE-18367 to check that the table information contains the query correctly
    * [HIVE-18459] - hive-exec.jar leaks contents fb303.jar into classpath
    * [HIVE-18465] - Hive metastore schema initialization failing on postgres
    * [HIVE-18467] - support whole warehouse dump / load + create/drop database events
    * [HIVE-18472] - Beeline gives log4j warnings
    * [HIVE-18473] - Infer timezone information correctly in DruidSerde
    * [HIVE-18482] - Copy-paste error in the RelOptHiveTable
    * [HIVE-18488] - LLAP ORC readers are missing some null checks
    * [HIVE-18490] - Query with EXISTS and NOT EXISTS with non-equi predicate can produce wrong result
    * [HIVE-18492] - Wrong argument in the WorkloadManager.resetAndQueryKill()
    * [HIVE-18494] - Regression: from HIVE-18069, the metastore directsql is getting disabled
    * [HIVE-18499] - Amend point lookup tests to check for data
    * [HIVE-18500] - annoying exceptions from LLAP Jmx view in the logs
    * [HIVE-18501] - Typo in beeline code
    * [HIVE-18504] - Hive is throwing InvalidObjectException(message:Invalid column type name is too long.
    * [HIVE-18506] - LlapBaseInputFormat - negative array index
    * [HIVE-18507] - AccumuloIndexedOutputFormat.AccumuloRecordWriter.close() - typo in the condition
    * [HIVE-18513] - Query results caching
    * [HIVE-18514] - add service output for ranger to WM DDL operations
    * [HIVE-18517] - Vectorization: Fix VectorMapOperator to accept VRBs and check vectorized flag correctly to support LLAP Caching
    * [HIVE-18518] - Upgrade druid version to 0.11.0
    * [HIVE-18519] - do not create materialized CTEs with ACID/MM
    * [HIVE-18521] - Vectorization: query failing in reducer VectorUDAFAvgDecimalPartial2 java.lang.ClassCastException StructTypeInfo --> DecimalTypeInfo
    * [HIVE-18523] - Fix summary row in case there are no inputs
    * [HIVE-18524] - Vectorization: Execution failure related to non-standard embedding of IfExprConditionalFilter inside VectorUDFAdaptor (Revert HIVE-17139)
    * [HIVE-18529] - Vectorization: Add a debug config option to disable scratch column reuse
    * [HIVE-18530] - Replication should skip MM table (for now)
    * [HIVE-18531] - Vectorization: Vectorized PTF operator should not set the initial type infos
    * [HIVE-18546] - Remove unnecessary code introduced in HIVE-14498
    * [HIVE-18547] - WM: trigger test may fail
    * [HIVE-18548] - Fix log4j import
    * [HIVE-18551] - Vectorization: VectorMapOperator tries to write too many vector columns for Hybrid Grace
    * [HIVE-18554] - Fix false positive test ql.io.parquet.TestHiveSchemaConverter.testMap 
    * [HIVE-18557] - q.outs: fix issues caused by q.out_spark files
    * [HIVE-18558] - Upgrade orc version to 1.4.2
    * [HIVE-18562] - Vectorization: CHAR/VARCHAR conversion in VectorDeserializeRow is broken
    * [HIVE-18567] - ObjectStore.getPartitionNamesNoTxn doesn't handle max param properly
    * [HIVE-18569] - Hive Druid indexing not dealing with decimals in correct way.
    * [HIVE-18571] - stats issues for MM tables; ACID doesn't check state for CTAS
    * [HIVE-18573] - Use proper Calcite operator instead of UDFs
    * [HIVE-18574] - LLAP: Ship netty3 as part of LLAP install tarball
    * [HIVE-18575] - ACID properties usage in jobconf is ambiguous for MM tables
    * [HIVE-18577] - SemanticAnalyzer.validate has some pointless metastore calls
    * [HIVE-18578] - Some class has missed the ASF header
    * [HIVE-18579] - Changes from HIVE-18495 introduced import paths from shaded jars
    * [HIVE-18585] - Return type for udfs should be determined using Hive inference rules instead of Calcite
    * [HIVE-18587] - insert DML event may attempt to calculate a checksum on directories
    * [HIVE-18589] - java.io.IOException: Not enough history available
    * [HIVE-18590] - Assertion error on transitive join inference in the presence of NOT NULL constraint
    * [HIVE-18595] - UNIX_TIMESTAMP  UDF fails when type is Timestamp with local timezone
    * [HIVE-18597] - LLAP: Always package the log4j2 API jar for org.apache.log4j
    * [HIVE-18599] - Transactions: Fix CTAS on Micromanaged tables
    * [HIVE-18600] - Vectorization: Top-Level Vector Expression Scratch Column Deallocation
    * [HIVE-18601] - Support Power platform by updating protoc-jar-maven-plugin version
    * [HIVE-18606] - CTAS on empty table throws NPE from org.apache.hadoop.hive.ql.exec.MoveTask
    * [HIVE-18607] - HBase HFile write does strange things
    * [HIVE-18610] - Performance: ListKeyWrapper does not check for hashcode equals, before comparing members
    * [HIVE-18611] - Avoid memory allocation of aggregation buffer during stats computation 
    * [HIVE-18612] - Build subprocesses under Yetus in Ptest use 1.7 jre instead of 1.8
    * [HIVE-18613] - Extend JsonSerDe to support BINARY type
    * [HIVE-18614] - Fix sys db creation in Hive
    * [HIVE-18616] - work around HADOOP-15171 p2
    * [HIVE-18617] - Workload management Action parser does not generate the correct pool path.
    * [HIVE-18622] - Vectorization: IF Statements, Comparisons, and more do not handle NULLs correctly
    * [HIVE-18626] - Repl load "with" clause does not pass config to tasks
    * [HIVE-18627] - PPD: Handle FLOAT boxing differently for single/double precision constants
    * [HIVE-18628] - Make tez dag status check interval configurable
    * [HIVE-18631] - Hive metastore schema initialization failing on mysql
    * [HIVE-18637] - WorkloadManagent Event Summary leaving subscribedCounters and currentCounters fields empty
    * [HIVE-18638] - Triggers for multi-pool move, failing to initiate the move event
    * [HIVE-18641] - Remove MCreationMetadata from MTable class
    * [HIVE-18642] - incorrect assertion in TezSessionPool for WM
    * [HIVE-18643] - don't check for archived partitions for ACID ops
    * [HIVE-18645] - invalid url address in README.txt from module hbase-handler
    * [HIVE-18646] - Update errata.txt for HIVE-18617
    * [HIVE-18647] - Cannot create table: "message:Exception thrown when executing query : SELECT DISTINCT.."
    * [HIVE-18653] - Fix TestOperators test failure in master
    * [HIVE-18658] - WM: allow not specifying scheduling policy when creating a pool
    * [HIVE-18659] - add acid version marker to acid files/directories
    * [HIVE-18660] - PCR doesn't distinguish between partition and virtual columns
    * [HIVE-18662] - hive.acid.key.index is missing entries
    * [HIVE-18665] - LLAP: Ignore cache-affinity if the LLAP IO elevator is disabled
    * [HIVE-18666] - Materialized view: "create materialized enable rewrite" should fail if rewriting is not possible
    * [HIVE-18667] - Materialized views: rewrites should be triggered without checks if the time.window=-1
    * [HIVE-18671] - lock not released after Hive on Spark query was cancelled
    * [HIVE-18674] - update Hive to use ORC 1.4.3
    * [HIVE-18675] - make HIVE_LOCKS.HL_TXNID NOT NULL
    * [HIVE-18678] - fix exim for MM tables and reinstante the test
    * [HIVE-18680] - FieldTrimmer missing opportunity with SortLimit operators
    * [HIVE-18686] - Installation on Postgres and Oracle broken
    * [HIVE-18688] - Vectorization: Vectorizer Reason shouldn't be part of work-plan
    * [HIVE-18693] - Snapshot Isolation does not work for Micromanaged table when a insert transaction is aborted
    * [HIVE-18695] - fix TestAccumuloCliDriver.testCliDriver[accumulo_queries]
    * [HIVE-18697] - The HiveMetastore.exchange_partitions method throws FileNotFoundException if the given partition doesn't exist in the source table
    * [HIVE-18698] - Fix TestMiniLlapLocalCliDriver#testCliDriver[bucket_map_join_tez1]
    * [HIVE-18699] - Check for duplicate partitions in HiveMetastore.exchange_partitions
    * [HIVE-18708] - Vectorization: Delay out-of-tree fixups till whole work is vectorized
    * [HIVE-18713] - Optimize: Transform IN clauses to = when there's only one element
    * [HIVE-18717] - Avoid transitive dependency on jetty 6.x
    * [HIVE-18733] - Missing break in CommonFastHashTable
    * [HIVE-18737] - add an option to disable LLAP IO ACID for non-original files
    * [HIVE-18738] - LLAP IO ACID - includes handling is broken
    * [HIVE-18742] - Vectorization acid/inputformat check should allow NullRowsInputFormat/OneNullRowInputFormat
    * [HIVE-18757] - LLAP IO for text fails for empty files
    * [HIVE-18759] - Remove unconnected q.out-s
    * [HIVE-18764] - ELAPSED_TIME resource plan setting is not getting honored
    * [HIVE-18775] - HIVE-17983 missed deleting metastore/scripts/upgrade/derby/hive-schema-3.0.0.derby.sql
    * [HIVE-18776] - MaterializationsInvalidationCache loading causes race condition in the metastore
    * [HIVE-18777] - Add Authorization interface to support information_schema integration with external authorization
    * [HIVE-18783] - ALTER TABLE post-commit listener does not include the transactional listener responses 
    * [HIVE-18788] - Clean up inputs in JDBC PreparedStatement
    * [HIVE-18789] - Disallow embedded element in UDFXPathUtil
    * [HIVE-18791] - Fix TestJdbcWithMiniHS2#testHttpHeaderSize
    * [HIVE-18794] - Repl load "with" clause does not pass config to tasks for non-partition tables
    * [HIVE-18796] - fix TestSSL
    * [HIVE-18813] - Fix qtest mapjoin_hook.q
    * [HIVE-18815] - Remove unused feature in HPL/SQL
    * [HIVE-18816] - CREATE TABLE (ACID) doesn't work with TIMESTAMPLOCALTZ column type
    * [HIVE-18817] - ArrayIndexOutOfBounds exception during read of ACID table.
    * [HIVE-18818] - Alter table add constraint unique fails with direct sql set to false
    * [HIVE-18820] - Operation doesn't always clean up log4j for operation log
    * [HIVE-18826] - fix TestEncryptedHDFSCliDriver.testCliDriver[encryption_move_tbl]
    * [HIVE-18828] - improve error handling for codecs in LLAP IO
    * [HIVE-18833] - Auto Merge fails when "insert into directory as orcfile"
    * [HIVE-18837] - add a flag and disable some object pools in LLAP until further testing
    * [HIVE-18858] - System properties in job configuration not resolved when submitting MR job
    * [HIVE-18859] - Incorrect handling of thrift metastore exceptions
    * [HIVE-18863] - trunc() calls itself trunk() in an error message
    * [HIVE-18877] - HiveSchemaTool.validateSchemaTables() should wrap a SQLException when rethrowing
    * [HIVE-18879] - Disallow embedded element in UDFXPathUtil needs to work if xercesImpl.jar in classpath
    * [HIVE-18886] - ACID: NPE on unexplained mysql exceptions 
    * [HIVE-18888] - Replace synchronizedMap with ConcurrentHashMap
    * [HIVE-18889] - update all parts of Hive to use the same Guava version
    * [HIVE-18892] - Fix NPEs in HiveMetastore.exchange_partitions method
    * [HIVE-18898] - Fix NPEs in HiveMetastore.dropPartition method
    * [HIVE-18907] - Create utility to fix acid key index issue from HIVE-18817
    * [HIVE-18918] - Bad error message in CompactorMR.lanuchCompactionJob()
    * [HIVE-18919] - remove separate keytab setting for ZK in LLAP
    * [HIVE-18925] - Hive doesn't work when JVM is America/Bahia_Banderas time zone
    * [HIVE-18933] - disable ORC codec pool for now; remove clone
    * [HIVE-18944] - Groupping sets position is set incorrectly during DPP
    * [HIVE-18950] - DESCRIBE EXTENDED missing details of default constraint
    * [HIVE-18951] - Fix the llapdump usage error in llapdump.sh
    * [HIVE-18955] - HoS: Unable to create Channel from class NioServerSocketChannel
    * [HIVE-18962] - add WM task state to Tez AM heartbeat
    * [HIVE-18963] - JDBC: Provide an option to simplify beeline usage by supporting default and named URL for beeline
    * [HIVE-18965] - HIVE-17990 didn't update derby SQL scripts
    * [HIVE-18967] - Standalone metastore SQL upgrade scripts do not properly set schema version
    * [HIVE-18968] - LLAP: report guaranteed tasks count in AM registry to check for consistency
    * [HIVE-18970] - improve AM WM metrics for use in Grafana and such
    * [HIVE-18971] - add HS2 WM metrics for use in Grafana and such
    * [HIVE-18972] - beeline command suggestion to kill job deprecated
    * [HIVE-18975] - NPE when inserting NULL value in structure and array with HBase table
    * [HIVE-18976] - Add ability to setup Druid Kafka Ingestion from Hive
    * [HIVE-18990] - Hive doesn't close Tez session properly
    * [HIVE-18991] - Drop database cascade doesn't work with materialized views
    * [HIVE-18992] - enable synthetic file IDs by default in LLAP
    * [HIVE-19003] - metastoreconf logs too much on info level
    * [HIVE-19007] - Support REPL LOAD from primary using replica connection configurations received through WITH clause.
    * [HIVE-19012] - Support builds for ARM and PPC arch
    * [HIVE-19014] - utilize YARN-8028 (queue ACL check) in Hive Tez session pool
    * [HIVE-19017] - Add util function to determine if 2 ValidWriteIdLists are at the same committed ID
    * [HIVE-19018] - beeline -e now requires semicolon even when used with query from command line
    * [HIVE-19019] - Vectorization: When vectorized, orc_merge_incompat_schema.q throws HiveException "Not implemented yet" from VectorExpressionWriterMap
    * [HIVE-19021] - WM counters are not properly propagated from LLAP to AM
    * [HIVE-19024] - Vectorization: Disable complex type constants for VectorUDFAdaptor
    * [HIVE-19030] - Update Wiki with new rules for Load Data
    * [HIVE-19032] - Vectorization: Disable GROUP BY aggregations with DISTINCT
    * [HIVE-19035] - Vectorization: Disable exotic STRUCT field reference form
    * [HIVE-19036] - Fix whitespace error in testconfiguration.properties after HIVE-14032
    * [HIVE-19037] - Vectorization: Miscellaneous cleanup
    * [HIVE-19038] - LLAP: Service loader throws "Provider not found" exception if hive-llap-server is in class path while loading tokens
    * [HIVE-19042] - set MALLOC_ARENA_MAX for LLAP
    * [HIVE-19043] - Vectorization: LazySimpleDeserializeRead fewer fields handling is broken for Complex Types
    * [HIVE-19047] - Only the first init file is interpreted
    * [HIVE-19050] - DBNotificationListener does not catch exceptions in the cleaner thread
    * [HIVE-19052] - Vectorization: Disable Vector Pass-Thru SMB MapJoin in the presence of old-style MR FilterMaps
    * [HIVE-19054] - Function replication shall use "hive.repl.replica.functions.root.dir" as root
    * [HIVE-19055] - WM alter may fail if the name is not changed
    * [HIVE-19056] - IllegalArgumentException in FixAcidKeyIndex when ORC file has 0 rows
    * [HIVE-19057] - Query result caching cannot be disabled by client
    * [HIVE-19061] - WM needs to output an event for allocation update
    * [HIVE-19062] - Update constraint_partition_columns.q.out
    * [HIVE-19065] - Metastore client compatibility check should include syncMetaStoreClient
    * [HIVE-19071] - WM: backup resource plans cannot be used without quoted idenitifiers
    * [HIVE-19072] - incorrect token handling for LLAP plugin endpoint
    * [HIVE-19073] - StatsOptimizer may mangle constant columns
    * [HIVE-19074] - Vectorization: Add llap vectorization_div0.q.out Q output file
    * [HIVE-19075] - Fix NPE when trying to drop or get DB with null name
    * [HIVE-19080] - Fix travis build
    * [HIVE-19085] - FastHiveDecimal abs(0) sets sign to +ve
    * [HIVE-19099] - HIVE-18755 forgot to update derby install script in metastore
    * [HIVE-19100] - investigate TestStreaming failures
    * [HIVE-19102] - Vectorization: Suppress known Q file bugs
    * [HIVE-19105] - HIVE-18781 broke WarehouseInstance
    * [HIVE-19108] - Vectorization and Parquet: Turning on vectorization in parquet_ppd_decimal.q causes Wrong Query Results
    * [HIVE-19116] - Vectorization: Vector Map data type doesn't keep the order of the key/values pairs as read
    * [HIVE-19119] - Fix the TestAppendPartitions tests which are failing in the pre-commit runs
    * [HIVE-19120] - catalog not properly set for some tables in SQL upgrade scripts
    * [HIVE-19121] - Fix HiveSchemaTool validation for databases that don't support schema
    * [HIVE-19124] - implement a basic major compactor for MM tables
    * [HIVE-19130] - NPE is thrown when REPL LOAD applied drop partition event.
    * [HIVE-19131] - DecimalColumnStatsMergerTest comparison review
    * [HIVE-19137] - orcfiledump doesn't print hive.acid.version value
    * [HIVE-19151] - Update expected result for some TestNegativeCliDriver tests
    * [HIVE-19155] - Day time saving cause Druid inserts to fail with org.apache.hive.druid.io.druid.java.util.common.UOE: Cannot add overlapping segments
    * [HIVE-19157] - Assert that Insert into Druid Table fails if the publishing of metadata by HS2 fails
    * [HIVE-19167] - Map data type doesn't keep the order of the key/values pairs as read (Part 2, The Sequel or SQL)   
    * [HIVE-19168] - Ranger changes for llap commands
    * [HIVE-19186] - Multi Table INSERT statements query has a flaw for partitioned table when INSERT INTO and INSERT OVERWRITE are used
    * [HIVE-19187] - Update Druid Storage Handler to Druid 0.12.0
    * [HIVE-19191] - Assertion error while running materialized view rewriting
    * [HIVE-19200] - Vectorization: Disable vectorization for LLAP I/O when a non-VECTORIZED_INPUT_FILE_FORMAT mode is needed (i.e. rows) and data type conversion is needed
    * [HIVE-19215] - JavaUtils.AnyIdDirFilter ignores base_n directories
    * [HIVE-19219] - Incremental REPL DUMP should throw error if requested events are cleaned-up.
    * [HIVE-19224] - incorrect token handling for LLAP plugin endpoint - part 2
    * [HIVE-19226] - Extend storage-api to print timestamp values in UTC
    * [HIVE-19230] - Schema column width inconsistency in Oracle 
    * [HIVE-19231] - Beeline generates garbled output when using UnsupportedTerminal
    * [HIVE-19233] - Add utility for acid 1.0 to 2.0 migration
    * [HIVE-19240] - backport HIVE-17645 to 3.0
    * [HIVE-19247] - StatsOptimizer: Missing stats fast-path for Date
    * [HIVE-19248] - REPL LOAD couldn't copy file from source CM path and also doesn't throw error if file copy fails.
    * [HIVE-19249] - Replication: WITH clause is not passing the configuration to Task correctly in all cases
    * [HIVE-19260] - Streaming Ingest API doesn't normalize db.table names
    * [HIVE-19264] - Vectorization: Reenable vectorization in vector_adaptor_usage_mode.q
    * [HIVE-19269] - Vectorization: Turn On by Default
    * [HIVE-19275] - Vectorization: Defer Wrong Results / Execution Failures when Vectorization turned on
    * [HIVE-19277] - Active/Passive HA web endpoints does not allow cross origin requests
    * [HIVE-19280] - Invalid error messages for UPDATE/DELETE on insert-only transactional tables
    * [HIVE-19281] - incorrect protocol name for LLAP AM plugin
    * [HIVE-19282] - don't nest delta directories inside LB directories for ACID tables
    * [HIVE-19298] - Fix operator tree of CTAS for Druid Storage Handler
    * [HIVE-19310] - Metastore: MetaStoreDirectSql.ensureDbInit has some slow DN calls which might need to be run only in test env
    * [HIVE-19315] - Test failure org.apache.hadoop.hive.ql.lockmgr.TestDbTxnManager2#testWriteSetTracking3
    * [HIVE-19324] - improve YARN queue check error message in Tez pool
    * [HIVE-19327] - qroupby_rollup_empty.q fails for insert-only transactional tables
    * [HIVE-19330] - multi_insert_partitioned.q fails with "src table does not exist" message.
    * [HIVE-19331] - Repl load config in "with" clause not pass to Context.getStagingDir
    * [HIVE-19338] - isExplicitAnalyze method may be incorrect in BasicStatsTask
    * [HIVE-19339] - Regenerate alltypesorc file with latest ORC
    * [HIVE-19350] - Vectorization: Turn off vectorization for explainuser_1.q / spark_explainuser_1
    * [HIVE-19352] - Vectorization: Disable vectorization for org.apache.hive.jdbc.TestJdbcDriver2.testResultSetMetaData
    * [HIVE-19361] - Backport HIVE-18910 to branch -3
    * [HIVE-19362] - enable LLAP cache affinity by default
    * [HIVE-19363] - remove cryptic metrics from LLAP IO output
    * [HIVE-19365] - Index on COMPLETED_TXN_COMPONENTS in Metastore RDBMS has different names in different scripts
    * [HIVE-19367] - Load Data should fail for empty Parquet files.
    * [HIVE-19381] - Function replication in cloud fail when download resource from AWS
    * [HIVE-19383] - Add ArrayList$SubList kryo serializer
    * [HIVE-19384] - Vectorization: IfExprTimestamp* do not handle NULLs correctly
    * [HIVE-19386] - Move TABLE_BUCKETING_VERSION to hive_metastore.thrift
    * [HIVE-19394] - WM_TRIGGER trigger creation failed with type cast from Integer to Boolean 
    * [HIVE-19396] - HiveOperation is incorrectly set for analyze statement
    * [HIVE-19410] - don't create serde reader in LLAP if there's no cache
    * [HIVE-19420] - Support LOAD from SeqFile to ORC table
    * [HIVE-19423] - REPL LOAD creates staging directory in source dump directory instead of table data location
    * [HIVE-19433] - HiveJoinPushTransitivePredicatesRule hangs
    * [HIVE-19435] - Incremental replication cause data loss if a table is dropped followed by create and insert-into with different partition type.
    * [HIVE-19446] - QueryCache: Transaction lists needed for pending cache entries
    * [HIVE-19474] - Decimal type should be casted as part of the CTAS or INSERT Clause.
    * [HIVE-19476] - Fix failures in TestReplicationScenariosAcidTables, TestReplicationOnHDFSEncryptedZones and TestCopyUtils
    * [HIVE-19477] - Hiveserver2 in http mode not emitting metric default.General.open_connections
    * [HIVE-19479] - encoded stream seek is incorrect for 0-length RGs in LLAP IO
    * [HIVE-19483] - Metastore cleaner tasks that run periodically are created more than once
    * [HIVE-19506] - Test suites timing out


** New Feature
    * [HIVE-1010] - Implement INFORMATION_SCHEMA in Hive
    * [HIVE-8838] - Support Parquet through HCatalog
    * [HIVE-15229] - 'like any' and 'like all' operators in hive
    * [HIVE-15434] - Add UDF to allow interrogation of uniontype values
    * [HIVE-15571] - Support Insert into for druid storage handler
    * [HIVE-15691] - Create StrictRegexWriter to work with RegexSerializer for Flume Hive Sink
    * [HIVE-15996] - Implement multiargument GROUPING function
    * [HIVE-16281] - Upgrade master branch to JDK8
    * [HIVE-16452] - Database UUID for metastore DB
    * [HIVE-16520] - Cache hive metadata in metastore
    * [HIVE-16575] - Support for 'UNIQUE' and 'NOT NULL' constraints
    * [HIVE-16602] - Implement shared scans with Tez
    * [HIVE-16605] - Enforce NOT NULL constraints
    * [HIVE-16643] - BeeLine tests output should keep the PREHOOK/POSTHOOK Input/Output orderdering
    * [HIVE-16917] - HiveServer2 guard rails - Limit concurrent connections from user
    * [HIVE-17089] - make acid 2.0 the default
    * [HIVE-17160] - Adding kerberos Authorization to the Druid hive integration
    * [HIVE-17361] - Support LOAD DATA for transactional tables
    * [HIVE-17366] - Constraint replication in bootstrap
    * [HIVE-17432] - Enable join and aggregate materialized view rewriting
    * [HIVE-17466] - Metastore API to list unique partition-key-value combinations
    * [HIVE-17481] - LLAP workload management
    * [HIVE-17626] - Query reoptimization using cached runtime statistics
    * [HIVE-17710] - LockManager should only lock Managed tables
    * [HIVE-17717] - Enable rule to push post-aggregations into Druid
    * [HIVE-18281] - HiveServer2 HA for LLAP and Workload Manager
    * [HIVE-18347] - Allow pluggable dynamic lookup of Hive Metastores from HiveServer2
    * [HIVE-18361] - Extend shared work optimizer to reuse computation beyond work boundaries
    * [HIVE-18373] - Make it easier to search for column name in a table
    * [HIVE-18726] - Implement DEFAULT constraint
    * [HIVE-18739] - Add support for Import/Export from Acid table
    * [HIVE-18814] - Support Add Partition For Acid tables
    * [HIVE-18835] - JDBC standalone jar download link in ambari
    * [HIVE-18841] - Support authorization of UDF usage in hive
    * [HIVE-18953] - Implement CHECK constraint
    * [HIVE-19059] - Support DEFAULT keyword with INSERT and UPDATE


** Improvement
    * [HIVE-8472] - Add ALTER DATABASE SET LOCATION
    * [HIVE-9447] - Metastore: inefficient Oracle query for removing unused column descriptors when add/drop table/partition
    * [HIVE-12274] - Increase width of columns used for general configuration in the metastore.
    * [HIVE-12299] - Hive Column Data Type definition in schema limited to 4000 characters - too small
    * [HIVE-12636] - Ensure that all queries (with DbTxnManager) run in a transaction
    * [HIVE-13842] - Expose ability to set number of connections in the pool in TxnHandler
    * [HIVE-14069] - update curator version to 2.12.0 
    * [HIVE-14145] - Too small length of column 'PARAM_VALUE' in table 'SERDE_PARAMS'
    * [HIVE-14389] - Beeline should not output query and prompt to stdout
    * [HIVE-14786] - Beeline displays binary column data as string instead of byte array
    * [HIVE-15053] - Beeline#addlocaldriver - reduce classpath scanning
    * [HIVE-15300] - Reuse table information in SemanticAnalyzer::getMetaData to reduce compilation time
    * [HIVE-15393] - Update Guava version
    * [HIVE-15396] - Basic Stats are not collected when for managed tables with LOCATION specified
    * [HIVE-15433] - setting hive.warehouse.subdir.inherit.perms in HIVE won't overwrite it in hive configuration
    * [HIVE-15616] - Improve contents of qfile test output
    * [HIVE-15631] - Optimize for hive client logs , you can filter the log for each session itself.
    * [HIVE-15665] - LLAP: OrcFileMetadata objects in cache can impact heap usage
    * [HIVE-15726] - Reenable indentation checks to checkstyle
    * [HIVE-15786] - Provide additional information from the llapstatus command
    * [HIVE-15795] - Support Accumulo Index Tables in Hive Accumulo Connector
    * [HIVE-15880] - Allow insert overwrite and truncate table query to use auto.purge table property
    * [HIVE-16049] - upgrade to jetty 9
    * [HIVE-16075] - MetaStore needs to reinitialize log4j to allow log specific settings via hiveconf take effect 
    * [HIVE-16079] - HS2: high memory pressure due to duplicate Properties objects
    * [HIVE-16084] - SHOW COMPACTIONS should display CompactionID
    * [HIVE-16143] - Improve msck repair batching
    * [HIVE-16152] - TestBeeLineDriver logging improvements
    * [HIVE-16164] - Provide mechanism for passing HMS notification ID between transactional and non-transactional listeners.
    * [HIVE-16206] - Make Codahale metrics reporters pluggable
    * [HIVE-16242] - Run BeeLine tests parallel
    * [HIVE-16285] - Servlet for dynamically configuring log levels
    * [HIVE-16297] - Improving hive logging configuration variables
    * [HIVE-16311] - Improve the performance for FastHiveDecimalImpl.fastDivide
    * [HIVE-16334] - Query lock contains the query string, which can cause OOM on ZooKeeper
    * [HIVE-16340] - Allow Kerberos + SSL connections to HMS
    * [HIVE-16343] - LLAP: Publish YARN's ProcFs based memory usage to metrics for monitoring
    * [HIVE-16345] - BeeLineDriver should be able to run qtest files which are using default database tables
    * [HIVE-16356] - Table#validateColumns should avoid checking exhaustively for matches in a list
    * [HIVE-16360] - Improve "No delta files or original files found to compact in" message
    * [HIVE-16371] - Add bitmap selection strategy for druid storage handler
    * [HIVE-16383] - Switch to HikariCP as default connection pooling
    * [HIVE-16386] - Add debug logging to describe why runtime filtering semijoins are removed
    * [HIVE-16423] - Add hint to enforce semi join optimization
    * [HIVE-16426] - Query cancel: improve the way to handle files
    * [HIVE-16429] - Should call invokeFailureHooks in handleInterruption to track failed query execution due to interrupted command.
    * [HIVE-16430] - Add log to show the cancelled query id when cancelOperation is called.
    * [HIVE-16431] - Support Parquet StatsNoJobTask for Spark & Tez engine
    * [HIVE-16441] - De-duplicate semijoin branches in n-way joins
    * [HIVE-16449] - BeeLineDriver should handle query result sorting
    * [HIVE-16456] - Kill spark job when InterruptedException happens or driverContext.isShutdown is true.
    * [HIVE-16460] - In the console output, show vertex list in topological order instead of an alphabetical sort
    * [HIVE-16501] - Add rej/orig to .gitignore ; remove *.orig files
    * [HIVE-16503] - LLAP: Oversubscribe memory for noconditional task size
    * [HIVE-16527] - Support outer and mixed reference aggregates in windowed functions
    * [HIVE-16536] - Various improvements in TestPerfCliDriver
    * [HIVE-16550] - Semijoin Hints should be able to skip the optimization if needed.
    * [HIVE-16552] - Limit the number of tasks a Spark job may contain
    * [HIVE-16571] - HiveServer2: Prefer LIFO over round-robin for Tez session reuse
    * [HIVE-16582] - HashTableLoader should log info about the input, rows, size etc.
    * [HIVE-16594] - Add more tests for BeeLineDriver
    * [HIVE-16595] - fix syntax in Hplsql.g4
    * [HIVE-16604] - Use [NOT] ENFORCED for column constraint characteristics
    * [HIVE-16614] - Support "set local time zone" statement
    * [HIVE-16635] - Progressbar: Use different timeouts for running queries
    * [HIVE-16639] - LLAP: Derive shuffle thread counts and keep-alive connections from instance count
    * [HIVE-16663] - String Caching For Rows
    * [HIVE-16700] - Log ZK discovery info (hostname & port) for HTTP mode when connection is established
    * [HIVE-16711] - Remove property_id column from metastore_db_properties table
    * [HIVE-16712] - StringBuffer v.s. StringBuilder
    * [HIVE-16717] - Extend shared scan optimizer to handle partitions
    * [HIVE-16723] - Enable configurable MetaStoreSchemaInfo 
    * [HIVE-16736] - General Improvements to BufferedRows
    * [HIVE-16754] - LLAP: Print hive version info on llap daemon startup
    * [HIVE-16758] - Better Select Number of Replications
    * [HIVE-16759] - Add table type information to HMS log notifications
    * [HIVE-16771] - Schematool should use MetastoreSchemaInfo to get the metastore schema version from database
    * [HIVE-16799] - Control the max number of task for a stage in a spark job
    * [HIVE-16805] - Utilities isEmptyPath Logging Too Chatty and Uses Bad Format
    * [HIVE-16809] - Improve filter condition for correlated subqueries
    * [HIVE-16811] - Estimate statistics in absence of stats
    * [HIVE-16833] - Review org.apache.hive.jdbc.HiveMetaDataResultSet
    * [HIVE-16834] - Review org.apache.hadoop.hive.serde2.ByteStream
    * [HIVE-16853] - Minor org.apache.hadoop.hive.ql.exec.HashTableSinkOperator Improvement
    * [HIVE-16855] - org.apache.hadoop.hive.ql.exec.mr.HashTableLoader Improvements
    * [HIVE-16856] - Allow For Customization Of Buffer Size In MapJoinTableContainerSerDe
    * [HIVE-16857] - SparkPartitionPruningSinkOperator Buffer Size
    * [HIVE-16858] - Acumulo Utils Improvements
    * [HIVE-16866] - existing available UDF is used in TestReplicationScenariosAcrossInstances#testDropFunctionIncrementalReplication 
    * [HIVE-16867] - Extend shared scan optimizer to reuse computation from other operators
    * [HIVE-16873] - Remove Thread Cache From Logging
    * [HIVE-16880] - Remove ArrayList Instantiation For Empty Arrays
    * [HIVE-16881] - Make extractSqlBoolean More Consistent
    * [HIVE-16885] - Non-equi Joins: Filter clauses should be pushed into the ON clause
    * [HIVE-16890] - org.apache.hadoop.hive.serde2.io.HiveVarcharWritable - Adds Superfluous Wrapper
    * [HIVE-16900] - optimization to give distcp a list of input files to copy to a destination target directory during repl load
    * [HIVE-16911] - Upgrade groovy version to 2.4.11
    * [HIVE-16914] - Change HiveMetaStoreClient to AutoCloseable
    * [HIVE-16933] - ORA-00060: deadlock detected while waiting on commit
    * [HIVE-16934] - Transform COUNT(x) into COUNT() when x is not nullable
    * [HIVE-16945] - Add method to compare Operators 
    * [HIVE-16955] - General Improvements To org.apache.hadoop.hive.metastore.MetaStoreUtils
    * [HIVE-16962] - Better error msg for Hive on Spark in case user cancels query and closes session
    * [HIVE-16969] - Improvement performance of MapOperator for Parquet
    * [HIVE-16970] - General Improvements To org.apache.hadoop.hive.metastore.cache.CacheUtils
    * [HIVE-16989] - Fix some issues identified by lgtm.com
    * [HIVE-17000] - Upgrade Hive to PARQUET 1.9.0
    * [HIVE-17022] - Add mode in lock debug statements
    * [HIVE-17036] - Lineage: Minor CPU/Mem optimization for lineage transform
    * [HIVE-17037] - Use 1-to-1 Tez edge to avoid unnecessary input data shuffle
    * [HIVE-17048] - Pass HiveOperation info to HiveSemanticAnalyzerHook through HiveSemanticAnalyzerHookContext
    * [HIVE-17054] - Expose SQL database constraints to Calcite
    * [HIVE-17072] - Make the parallelized timeout configurable in BeeLine tests
    * [HIVE-17078] - Add more logs to MapredLocalTask
    * [HIVE-17125] - Lineage: Generate lineage information on need basis when atlas hook is enabled
    * [HIVE-17139] - Conditional expressions optimization: skip the expression evaluation if the condition is not satisfied for vectorization engine.
    * [HIVE-17174] - LLAP: ShuffleHandler: optimize fadvise calls for broadcast edge
    * [HIVE-17194] - JDBC: Implement Gzip compression for HTTP mode
    * [HIVE-17229] - HiveMetastore HMSHandler locks during initialization, even though its static variable threadPool is not null
    * [HIVE-17237] - HMS wastes 26.4% of memory due to dup strings in metastore.api.Partition.parameters
    * [HIVE-17251] - Remove usage of org.apache.pig.ResourceStatistics#setmBytes method in HCatLoader
    * [HIVE-17253] - Adding SUMMARY statement to HPL/SQL
    * [HIVE-17263] - Reduce debug logging for S3 tables
    * [HIVE-17288] - LlapOutputFormatService: Increase netty event loop threads
    * [HIVE-17308] - Improvement in join cardinality estimation
    * [HIVE-17329] - ensure acid side file is not overwritten
    * [HIVE-17340] - TxnHandler.checkLock() - reduce number of SQL statements
    * [HIVE-17341] - DbTxnManger.startHeartbeat() - randomize initial delay
    * [HIVE-17362] - The MAX_PREWARM_TIME should be configurable on HoS
    * [HIVE-17376] - Upgrade snappy version to 1.1.4
    * [HIVE-17400] - Estimate stats in absence of stats for complex types
    * [HIVE-17408] - replication distcp should only be invoked if number of files AND file size cross configured limits
    * [HIVE-17422] - Skip non-native/temporary tables for all major table/partition related scenarios
    * [HIVE-17426] - Execution framework in hive to run tasks in parallel
    * [HIVE-17458] - VectorizedOrcAcidRowBatchReader doesn't handle 'original' files
    * [HIVE-17493] - Improve PKFK cardinality estimation in Physical planning
    * [HIVE-17513] - Refactor PathUtils to not contain instance fields
    * [HIVE-17519] - Transpose column stats display
    * [HIVE-17536] - StatsUtil::getBasicStatForTable doesn't distinguish b/w absence of statistics or zero stats
    * [HIVE-17538] - Enhance estimation of stats to estimate even if only one column is missing stats
    * [HIVE-17542] - Make HoS CombineEquivalentWorkResolver Configurable
    * [HIVE-17543] - Enable PerfCliDriver for HoS
    * [HIVE-17550] - Remove unreferenced q.out-s
    * [HIVE-17569] - Compare filtered output files in BeeLine tests
    * [HIVE-17578] - Create a TableRef object for Table/Partition
    * [HIVE-17587] - Remove unnecessary filter from getPartitionsFromPartitionIds call
    * [HIVE-17604] - Add druid properties to conf white list
    * [HIVE-17606] - Improve security for DB notification related APIs
    * [HIVE-17609] - Tool to manipulate delegation tokens
    * [HIVE-17611] - Add new LazyBinary SerDe for faster writes
    * [HIVE-17614] - Notification_sequence initialization using SQL statement which is compatible with Mysql 5.1
    * [HIVE-17631] - upgrade orc to 1.4.1
    * [HIVE-17669] - Cache to optimize SearchArgument deserialization
    * [HIVE-17732] - Minor Improvements - org.apache.hive.hcatalog.data.JsonSerDe.java
    * [HIVE-17740] - HiveConf - Use SLF4J Parameterization  
    * [HIVE-17742] - AccumuloIndexedOutputFormat Use SLF4J
    * [HIVE-17747] - HMS DropTableMessage should include the full table object
    * [HIVE-17766] - Support non-equi LEFT SEMI JOIN
    * [HIVE-17767] - Rewrite correlated EXISTS/IN subqueries into LEFT SEMI JOIN
    * [HIVE-17787] - Apply more filters on the BeeLine test output files (follow-up on HIVE-17569)
    * [HIVE-17793] - Parameterize Logging Messages
    * [HIVE-17799] - Add Ellipsis For Truncated Query In Hive Lock
    * [HIVE-17805] - SchemaTool validate locations should not return exit 1
    * [HIVE-17824] - msck repair table should drop the missing partitions from metastore
    * [HIVE-17847] - Exclude net.hydromatic:aggdesigner-algorithm jar as compile and runtime dependency
    * [HIVE-17870] - Update NoDeleteRollingFileAppender to use Log4j2 api
    * [HIVE-17871] - Add non nullability flag to druid time column
    * [HIVE-17877] - HoS: combine equivalent DPP sink works
    * [HIVE-17898] - Explain plan output enhancement
    * [HIVE-17901] - org.apache.hadoop.hive.ql.exec.Utilities - Use Logging Parameterization and More
    * [HIVE-17911] - org.apache.hadoop.hive.metastore.ObjectStore - Tune Up
    * [HIVE-17912] - org.apache.hadoop.hive.metastore.security.DBTokenStore - Parameterize Logging
    * [HIVE-17932] - Remove option to control partition level basic stats fetching
    * [HIVE-17962] - org.apache.hadoop.hive.metastore.security.MemoryTokenStore - Parameterize Logging
    * [HIVE-17964] - HoS: some spark configs doesn't require re-creating a session
    * [HIVE-17965] - Remove HIVELIMITTABLESCANPARTITION support
    * [HIVE-17969] - Metastore to alter table in batches of partitions when renaming table
    * [HIVE-17988] - Replace patch utility usage with git apply in ptest
    * [HIVE-18008] - Add optimization rule to remove gby from right side of left semi-join
    * [HIVE-18009] - Multiple lateral view query is slow on hive on spark
    * [HIVE-18010] - Update hbase version
    * [HIVE-18023] - Redact the expression in lineage info
    * [HIVE-18043] - Vectorization: Support List type in MapWork
    * [HIVE-18048] - Vectorization: Support Struct type with vectorization
    * [HIVE-18051] - qfiles: dataset support
    * [HIVE-18061] - q.outs: be more selective with masking hdfs paths
    * [HIVE-18123] - Explain formatted improve column expression map display
    * [HIVE-18158] - Remove OrcRawRecordMerger.ReaderPairAcid.statementId
    * [HIVE-18159] - Vectorization: Support Map type in MapWork
    * [HIVE-18173] - Improve plans for correlated subqueries with non-equi predicate
    * [HIVE-18185] - update insert_values_orig_table_use_metadata.q.out
    * [HIVE-18246] - Replace toString with getExprString in AbstractOperatorDesc::getColumnExprMapForExplain
    * [HIVE-18251] - Loosen restriction for some checks
    * [HIVE-18259] - Automatic cleanup of invalidation cache for materialized views
    * [HIVE-18283] - Better error message and error code for HoS exceptions
    * [HIVE-18342] - Remove LinkedList from HiveAlterHandler.java
    * [HIVE-18343] - Remove LinkedList from ColumnStatsSemanticAnalyzer.java
    * [HIVE-18344] - Remove LinkedList from SharedWorkOptimizer.java
    * [HIVE-18386] - Create dummy materialized views registry and make it configurable
    * [HIVE-18387] - Minimize time that REBUILD locks the materialized view
    * [HIVE-18410] - [Performance][Avro] Reading flat Avro tables is very expensive in Hive
    * [HIVE-18423] - Support pushing computation from the optimizer for JDBC storage handler tables
    * [HIVE-18448] - Drop Support For Indexes From Apache Hive
    * [HIVE-18462] - Explain formatted for queries with map join has columnExprMap with unformatted column name
    * [HIVE-18510] - Enable running checkstyle on test sources as well
    * [HIVE-18540] -  remove logic for wide terminal to display in-place updates
    * [HIVE-18543] - Add print sessionid in console
    * [HIVE-18552] - Split hive.strict.checks.large.query into two configs
    * [HIVE-18564] - Add a mapper to make plan transformations more easily understandable
    * [HIVE-18586] - Upgrade Derby to 10.14.1.0
    * [HIVE-18625] - SessionState Not Checking For Directory Creation Result
    * [HIVE-18654] - Add Hiveserver2 specific HADOOP_OPTS environment variable 
    * [HIVE-18706] - Ensure each Yetus execution has its own separate working dir
    * [HIVE-18716] - Delete unnecessary parameters from TaskFactory
    * [HIVE-18718] - Integer like types throws error when there is a mismatch
    * [HIVE-18727] - Update GenericUDFEnforceNotNullConstraint to throw an ERROR instead of Exception on failure
    * [HIVE-18730] - Use LLAP as execution engine for Druid mini Cluster Tests
    * [HIVE-18743] - CREATE TABLE on S3 data can be extremely slow. DO_NOT_UPDATE_STATS workaround is buggy.
    * [HIVE-18770] - Additional tests and fixes for materialized view rewriting
    * [HIVE-18780] - Improve schema discovery For Druid Storage Handler
    * [HIVE-18793] - Round udf should support variable as second argument
    * [HIVE-18797] - ExprConstNodeDesc's getExprString should put appropriate qualifier with literals
    * [HIVE-18808] - Make compaction more robust when stats update fails
    * [HIVE-18825] - Define ValidTxnList before starting query optimization
    * [HIVE-18839] - Implement incremental rebuild for materialized views (only insert operations in source tables)
    * [HIVE-18848] - Improve readability of filter conditions in explain plan when CBO is run
    * [HIVE-18857] - Store default value text instead of default value expression in metastore
    * [HIVE-18878] - Lower MoveTask Lock Logging to Debug
    * [HIVE-18901] - Lower ResourceDownloader Logging to Debug
    * [HIVE-18979] - Enable AggregateReduceFunctionsRule from Calcite
    * [HIVE-18984] - Make time window configurable per materialized view
    * [HIVE-18995] - Vectorization: Add option to suppress "Execution mode: vectorized" for testing purposes
    * [HIVE-19001] - ALTER TABLE ADD CONSTRAINT support for CHECK constraint
    * [HIVE-19033] - Provide an option to purge LLAP IO cache
    * [HIVE-19070] - Add More Test To Druid Mini Cluster  queries.
    * [HIVE-19092] - Somne improvement in bin shell scripts
    * [HIVE-19161] - Add authorizations to information schema
    * [HIVE-19288] - Implement protobuf logging hive hook.
    * [HIVE-19344] - Change default value of msck.repair.batch.size 
    * [HIVE-19415] - Support CORS for all HS2 web endpoints
    * [HIVE-19466] - Update constraint violation error message
    * [HIVE-19534] - Allow implementations to access member variables of AbstractRecordWriter

** Test
    * [HIVE-13843] - Re-enable the HoS tests disabled in HIVE-13402
    * [HIVE-15538] - Test HIVE-13884 with more complex query predicates
    * [HIVE-16288] - Add blobstore tests for ORC and RCFILE file formats
    * [HIVE-16359] - Update golden file for subquery_select.q
    * [HIVE-16415] - Add tests covering single inserts of zero rows
    * [HIVE-16454] - Add blobstore tests for inserting empty into dynamic partition/list bucket tables & inserting cross blobstore tables
    * [HIVE-16540] - dynamic_semijoin_user_level is failing on MiniLlap
    * [HIVE-16636] - TestPerfCli driver is missing query24
    * [HIVE-16664] - Add join related Hive blobstore tests
    * [HIVE-16673] - Test for HIVE-16413
    * [HIVE-16831] - Add unit tests for NPE fixes in HIVE-12054
    * [HIVE-17034] - The spark tar for itests is downloaded every time if md5sum is not installed
    * [HIVE-17190] - Schema changes for bitvectors for unpartitioned tables
    * [HIVE-17246] - Add having related blobstore query test
    * [HIVE-17430] - Add LOAD DATA test for blobstores
    * [HIVE-17636] - Add multiple_agg.q test for blobstores
    * [HIVE-17729] - Add Database & Explain related blobstore tests
    * [HIVE-17789] - Flaky test: TestSessionManagerMetrics.testAbandonedSessionMetrics has timing related problems
    * [HIVE-17820] - Add buckets.q test for blobstores
    * [HIVE-18041] - Add SORT_QUERY_RESULTS to subquery_multi
    * [HIVE-18089] - Update golden files for few tests
    * [HIVE-18100] - Some tests time out
    * [HIVE-18186] - Fix wrong assertion in TestHiveMetaStoreAlterColumnPar test
    * [HIVE-18260] - Add test case scenarios for materialized views invalidation cache and registry
    * [HIVE-18327] - Remove the unnecessary HiveConf dependency for MiniHiveKdc
    * [HIVE-18485] - Add more unit tests for hive.strict.checks.* properties
    * [HIVE-18588] - Add 'checkin' profile that runs slower tests in standalone-metastore
    * [HIVE-18867] - create_with_constraints_duplicate_name and default_constraint_invalid_default_value_length failing 
    * [HIVE-19060] - Fix the TestAppendPartitions.testAppendPartitionNullPartValues
    * [HIVE-19123] - TestNegativeCliDriver nopart_insert failing
    * [HIVE-19143] - Update golden files for negative tests
    * [HIVE-19271] - TestMiniLlapLocalCliDriver default_constraint and check_constraint failing

** Wish
    * [HIVE-17540] - remove feature: describe pretty

** Task
    * [HIVE-15708] - Upgrade calcite version to 1.12
    * [HIVE-16058] - Disable falling back to non-cbo for SemanticException for tests
    * [HIVE-16392] - Remove hive.warehouse.subdir.inherit.perms and all permissions inheritance logic
    * [HIVE-16395] - ConcurrentModificationException on config object in HoS
    * [HIVE-16411] - Revert HIVE-15199
    * [HIVE-16474] - Upgrade Druid version to 0.10
    * [HIVE-17107] - Upgrade Yetus to 0.5.0
    * [HIVE-17234] - Remove HBase metastore from master
    * [HIVE-17425] - Change MetastoreConf.ConfVars internal members to be private
    * [HIVE-17480] - repl dump sub dir should use UUID instead of timestamp
    * [HIVE-17521] - Improve defaults for few runtime configs
    * [HIVE-17544] - Provide classname info for function authorization
    * [HIVE-17672] - Upgrade Calcite version to 1.14
    * [HIVE-17857] - Upgrade to orc 1.4
    * [HIVE-18131] - Truncate table for Acid tables
    * [HIVE-18272] - Fix check-style violations in subquery code
    * [HIVE-18433] - Upgrade version of com.fasterxml.jackson
    * [HIVE-18436] - Upgrade to Spark 2.3.0
    * [HIVE-18560] - qtests: QTestUtil refactor/split - QOutProcessor
    * [HIVE-18598] - Disallow NOT NULL constraints to be ENABLED/ENFORCED with EXTERNAL table
    * [HIVE-18754] - REPL STATUS should support 'with' clause
    * [HIVE-18917] - Add spark.home to hive.conf.restricted.list
    * [HIVE-18957] - Upgrade Calcite version to 1.16.0
    * [HIVE-18959] - Avoid creating extra pool of threads within LLAP
    * [HIVE-18993] - Use Druid Expressions
    * [HIVE-19049] - Add support for Alter table add columns for Druid
    * [HIVE-19091] - [Hive 3.0.0 Release] Rat check failure fixes
    * [HIVE-19134] - Update copyright NOTICE and fix rat check failures
    * [HIVE-19172] - NPE due to null EnvironmentContext in DDLTask
    * [HIVE-19173] - Add Storage Handler runtime information as part of DESCRIBE EXTENDED
    * [HIVE-19184] - Hive 3.0.0 release branch preparation
    * [HIVE-19257] - HIVE-19157 commit references wrong jira
    * [HIVE-19309] - Add Arrow dependencies to LlapServiceDriver
    * [HIVE-19311] - Partition and bucketing support for “load data” statement
    * [HIVE-19451] - Druid Query Execution fails with ClassNotFoundException org.antlr.v4.runtime.CharStream
    * [HIVE-19491] - Branch-3 Start using storage-api 2.6.1 once available.


Release Notes - Hive - Version 2.3.0

** Sub-task
    * [HIVE-14807] - analyze table compute statistics fails due to presence of Infinity value in double column
    * [HIVE-15556] - Replicate views
    * [HIVE-16186] - REPL DUMP shows last event ID of the database even if we use LIMIT option.
    * [HIVE-16249] - With column stats, mergejoin.q throws NPE
    * [HIVE-16293] - Column pruner should continue to work when SEL has more than 1 child
    * [HIVE-16387] - Fix failing test org.apache.hive.jdbc.TestJdbcDriver2.testResultSetMetaData
    * [HIVE-16440] - Fix failing test columnstats_partlvl_invalid_values when autogather column stats is on
    * [HIVE-16504] - Addition of binary licenses broke rat check
    * [HIVE-16535] - Hive fails to build from source code tarball
    * [HIVE-16537] - Add missing AL files







** Bug
    * [HIVE-9815] - Metastore column"SERDE_PARAMS"."PARAM_VALUE"  limited to 4000 bytes
    * [HIVE-14077] - add implicit decimal arithmetic q test, fix issues if found 
    * [HIVE-14801] - improve TestPartitionNameWhitelistValidation stability
    * [HIVE-15035] - Clean up Hive licenses for binary distribution
    * [HIVE-15249] - HIve 2.1.0 is throwing InvalidObjectException(message:Invalid column type name is too long
    * [HIVE-15829] - LLAP text cache: disable memory tracking on the writer
    * [HIVE-15923] - Hive default partition causes errors in get partitions
    * [HIVE-16007] - When the query does not complie the LogRunnable never stops
    * [HIVE-16188] - beeline should block the connection if given invalid database name.
    * [HIVE-16193] - Hive show compactions not reflecting the status of the application
    * [HIVE-16219] - metastore notification_log contains serialized message with  non functional fields
    * [HIVE-16231] - Parquet timestamp may be stored differently since HIVE-12767
    * [HIVE-16274] - Support tuning of NDV of columns using lower/upper bounds
    * [HIVE-16287] - Alter table partition rename with location - moves partition back to hive warehouse
    * [HIVE-16301] - Preparing for 2.3 development.
    * [HIVE-16305] - Additional Datanucleus ClassLoaderResolverImpl leaks causing HS2 OOM
    * [HIVE-16308] - PreExecutePrinter and PostExecutePrinter should log to INFO level instead of ERROR
    * [HIVE-16310] - Get the output operators of Reducesink when vectorization is on
    * [HIVE-16315] - Describe table doesn't show num of partitions
    * [HIVE-16318] - LLAP cache: address some issues in 2.2/2.3
    * [HIVE-16321] - Possible deadlock in metastore with Acid enabled
    * [HIVE-16336] - Rename hive.spark.use.file.size.for.mapjoin to hive.spark.use.ts.stats.for.mapjoin
    * [HIVE-16341] - Tez Task Execution Summary has incorrect input record counts on some operators
    * [HIVE-16366] - Hive 2.3 release planning
    * [HIVE-16380] - removing global test dependency of jsonassert
    * [HIVE-16385] - StatsNoJobTask could exit early before all partitions have been processed
    * [HIVE-16390] - LLAP IO should take job config into account; also LLAP config should load defaults
    * [HIVE-16403] - LLAP UI shows the wrong number of executors
    * [HIVE-16459] - Forward channelInactive to RpcDispatcher
    * [HIVE-16461] - DagUtils checks local resource size on the remote fs
    * [HIVE-16465] - NullPointer Exception when enable vectorization for Parquet file format
    * [HIVE-16473] - Hive-on-Tez may fail to write to an HBase table
    * [HIVE-16519] - Fix exception thrown by checkOutputSpecs
    * [HIVE-16545] - LLAP: bug in arena size determination logic
    * [HIVE-16547] - LLAP: may not unlock buffers in some cases





** Improvement
    * [HIVE-12274] - Increase width of columns used for general configuration in the metastore.
    * [HIVE-12299] - Hive Column Data Type definition in schema limited to 4000 characters - too small
    * [HIVE-14145] - Too small length of column 'PARAM_VALUE' in table 'SERDE_PARAMS'
    * [HIVE-15880] - Allow insert overwrite and truncate table query to use auto.purge table property
    * [HIVE-16115] - Stop printing progress info from operation logs with beeline progress bar
    * [HIVE-16164] - Provide mechanism for passing HMS notification ID between transactional and non-transactional listeners.




** New Feature
    * [HIVE-15434] - Add UDF to allow interrogation of uniontype values
    * [HIVE-15691] - Create StrictRegexWriter to work with RegexSerializer for Flume Hive Sink

















** Test
    * [HIVE-16288] - Add blobstore tests for ORC and RCFILE file formats
    * [HIVE-16415] - Add tests covering single inserts of zero rows
    * [HIVE-16454] - Add blobstore tests for inserting empty into dynamic partition/list bucket tables & inserting cross blobstore tables



