You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2019/04/08 15:37:26 UTC

[hive] branch master updated: HIVE-21587: Explain formatted CBO should write row type in JSON (Jesus Camacho Rodriguez, reviewed by Zoltan Haindrich)

This is an automated email from the ASF dual-hosted git repository.

jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 12f4084  HIVE-21587: Explain formatted CBO should write row type in JSON (Jesus Camacho Rodriguez, reviewed by Zoltan Haindrich)
12f4084 is described below

commit 12f40848646d58827648ba99d2a653c6c567d2b6
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Fri Apr 5 18:06:38 2019 -0700

    HIVE-21587: Explain formatted CBO should write row type in JSON (Jesus Camacho Rodriguez, reviewed by Zoltan Haindrich)
---
 .../ql/optimizer/calcite/HiveRelWriterImpl.java    | 26 +++++++---------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelWriterImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelWriterImpl.java
index d4e6c25..19429e6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelWriterImpl.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelWriterImpl.java
@@ -43,26 +43,16 @@ public class HiveRelWriterImpl extends RelJsonWriter {
 
   //~ Methods ------------------------------------------------------------------
 
+  @Override
   protected void explain_(RelNode rel, List<Pair<String, Object>> values) {
     super.explain_(rel, values);
-    // TODO: The following is hackish since we do not have visibility over relList
-    // and we do not want to bring all the writer utilities from Calcite. It should
-    // be changed once we move to new Calcite version and relList is visible for
-    // subclasses.
-    try {
-      final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
-      Field fs = RelJsonWriter.class.getDeclaredField("relList");
-      fs.setAccessible(true);
-      List<Object> relList = (List<Object>) fs.get(this);
-      Map<String, Object> map = (Map<String, Object>) relList.get(relList.size() - 1);
-      map.put("rowCount", mq.getRowCount(rel));
-      if (rel.getInputs().size() == 0) {
-        // This is a leaf, we will print the average row size and schema
-        map.put("avgRowSize", mq.getAverageRowSize(rel));
-        map.put("rowType", rel.getRowType().toString());
-      }
-    } catch (Exception e) {
-      LOG.warn("Failed to add additional fields in json writer", e);
+    RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
+    Map<String, Object> map = (Map<String, Object>) relList.get(relList.size() - 1);
+    map.put("rowCount", mq.getRowCount(rel));
+    if (rel.getInputs().size() == 0) {
+      // This is a leaf, we will print the average row size and schema
+      map.put("avgRowSize", mq.getAverageRowSize(rel));
+      map.put("rowType", relJson.toJson(rel.getRowType()));
     }
   }