From 115be113d5a92baedfb4f1ab35fff72e1268ca16 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 16 Jul 2015 08:05:55 -0700 Subject: [PATCH] HIVE-11281 : Memoize toStringTree() for ASTNode (Ashutosh Chauhan via Prasanth J) --- .../org/apache/hadoop/hive/ql/parse/ASTNode.java | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ASTNode.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ASTNode.java index c8dbe97..ec33ec3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ASTNode.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ASTNode.java @@ -31,7 +31,7 @@ */ public class ASTNode extends CommonTree implements Node,Serializable { private static final long serialVersionUID = 1L; - + private transient String astStr; private transient ASTNodeOrigin origin; public ASTNode() { @@ -81,6 +81,7 @@ public Tree dupNode() { * * @see org.apache.hadoop.hive.ql.lib.Node#getName() */ + @Override public String getName() { return (Integer.valueOf(super.getToken().getType())).toString(); } @@ -126,4 +127,34 @@ private StringBuilder dump(StringBuilder sb, String ws) { } return sb; } + + @Override + public String toStringTree() { + + if (null != astStr) { + return astStr; + } + if (getChildCount() == 0) { + astStr = this.toString(); + return astStr; + } + StringBuilder buf = new StringBuilder(); + if ( !isNil() ) { + buf.append("("); + buf.append(this.toString()); + buf.append(' '); + } + for (int i = 0; i < children.size(); i++) { + Tree t = (Tree)children.get(i); + if ( i>0 ) { + buf.append(' '); + } + buf.append(t.toStringTree()); + } + if ( !isNil() ) { + buf.append(")"); + } + astStr = buf.toString(); + return astStr; + } } -- 1.7.12.4 (Apple Git-37)