Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-8607 Java 8 support for Hive
  3. HIVE-9222

Fix ordering differences due to Java 8 (Part 4)

Log workAgile BoardRank to TopRank to BottomVotersWatch issueWatchersConvert to IssueMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Type: Sub-task
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.1.0
    • Component/s: Tests
    • Labels:


      This patch fixes the following tests:

      (1) TestNegativeCliDriver.testNegativeCliDriver: unset_view_property.q and unset_table_property.q

      DDLSemanticAnalyzer.analyzeAlterTableProps() gets table properties via getProps() which must be an insert order map.

      (2) TestCliDriver.testCliDriver_overridden_confs

      VerifyOverriddenConfigsHook emits overridden configs. Changed SessionState.overriddenConfigurations to insert order map.

      (3) TestNegativeCliDriver.testNegativeCliDriver_columnstats_partlvl_invalid_values

      ColumnStatsSemanticAnalyzer.getPartKeyValuePairsFromAST() gets ((ASTNode) tree.getChild(0) in different order between Java 7 and Java 8. The order is different in HiveParser.statement() itself in ParseDriver.parse() so this difference comes from antlr library.
      Generated java version specific output.

      (4) TestMinimrCliDriver.testCliDriver_list_bucket_dml_10, TestCliDriver tests: stats_list_bucket.q, list_bucket_dml_12.q and list_bucket_dml_13.q

      Looks like these need rebase after HIVE-9206? Not sure what happened here...

      (5) TestCliDriver.testCliDriver: mapjoin_hook.q, auto_join_without_localtask.q, auto_join25.q, multiMapJoin2.q

      PrintCompletedTasksHook prints completed task list, which depends on the list of tasks added to runnable task list in DriverContext. Some on these tasks may get filtered. We see that different tasks are getting filtered out by the condition resolver in ConditionTask in Java 8 compared to Java 7.

      ConditionalTask.execute() calls ConditionalResolverCommonJoin.resolveDriverAlias() via getTasks(), which returns a single task based on task to alias map. The next mapred task in the task list gets filtered out by the resolver in ConditionalTask.resolveTask(). In other words, the the mapred task that shows up first will be kept and the next one will be filtered. Converted task to alias map to an insert order map so order is same with Java 8 and Java 7.


        1. HIVE-9222.patch
          75 kB
          Mohit Sabharwal

        Issue Links


          $i18n.getText('security.level.explanation', $currentSelection) Viewable by All Users


            • Assignee:
              mohitsabharwal Mohit Sabharwal Assign to me
              mohitsabharwal Mohit Sabharwal


              • Created:

                Issue deployment