You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/04/26 19:38:06 UTC
svn commit: r1476313 - in
/hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql:
exec/PTFUtils.java plan/PTFDesc.java udf/generic/GenericUDFLeadLag.java
udf/ptf/TableFunctionEvaluator.java
Author: hashutosh
Date: Fri Apr 26 17:38:05 2013
New Revision: 1476313
URL: http://svn.apache.org/r1476313
Log:
HIVE-4412 : PTFDesc tries serialize transient fields like OIs, etc. (Navis via Ashutosh Chauhan)
Modified:
hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java
hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/plan/PTFDesc.java
hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java
hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java
Modified: hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java?rev=1476313&r1=1476312&r2=1476313&view=diff
==============================================================================
--- hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java (original)
+++ hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java Fri Apr 26 17:38:05 2013
@@ -31,6 +31,7 @@ import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -261,25 +262,26 @@ public class PTFUtils {
}
}
- public static void makeTransient(Class<?> beanClass, String pdName)
- {
- BeanInfo info;
- try
- {
- info = Introspector.getBeanInfo(beanClass);
- PropertyDescriptor[] propertyDescriptors = info
- .getPropertyDescriptors();
- for (int i = 0; i < propertyDescriptors.length; ++i)
- {
- PropertyDescriptor pd = propertyDescriptors[i];
- if (pd.getName().equals(pdName))
- {
- pd.setValue("transient", Boolean.TRUE);
+ public static void makeTransient(Class<?> beanClass, String... pdNames) {
+ try {
+ BeanInfo info = Introspector.getBeanInfo(beanClass);
+ PropertyDescriptor[] descs = info.getPropertyDescriptors();
+ if (descs == null) {
+ throw new RuntimeException("Cannot access property descriptor for class " + beanClass);
+ }
+ Map<String, PropertyDescriptor> mapping = new HashMap<String, PropertyDescriptor>();
+ for (PropertyDescriptor desc : descs) {
+ mapping.put(desc.getName(), desc);
+ }
+ for (String pdName : pdNames) {
+ PropertyDescriptor desc = mapping.get(pdName);
+ if (desc == null) {
+ throw new RuntimeException("Property " + pdName + " does not exist in " + beanClass);
}
+ desc.setValue("transient", Boolean.TRUE);
}
}
- catch (IntrospectionException ie)
- {
+ catch (IntrospectionException ie) {
throw new RuntimeException(ie);
}
}
Modified: hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/plan/PTFDesc.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/plan/PTFDesc.java?rev=1476313&r1=1476312&r2=1476313&view=diff
==============================================================================
--- hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/plan/PTFDesc.java (original)
+++ hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/plan/PTFDesc.java Fri Apr 26 17:38:05 2013
@@ -255,10 +255,7 @@ public class PTFDesc extends AbstractOpe
transient TypeCheckCtx typeCheckCtx;
static{
- PTFUtils.makeTransient(ShapeDetails.class, "serde");
- PTFUtils.makeTransient(ShapeDetails.class, "OI");
- PTFUtils.makeTransient(ShapeDetails.class, "rr");
- PTFUtils.makeTransient(ShapeDetails.class, "typeCheckCtx");
+ PTFUtils.makeTransient(ShapeDetails.class, "OI", "serde", "rr", "typeCheckCtx");
}
public String getSerdeClassName() {
@@ -588,8 +585,7 @@ public class PTFDesc extends AbstractOpe
transient ObjectInspector OI;
static{
- PTFUtils.makeTransient(PTFExpressionDef.class, "exprEvaluator");
- PTFUtils.makeTransient(PTFExpressionDef.class, "OI");
+ PTFUtils.makeTransient(PTFExpressionDef.class, "exprEvaluator", "OI");
}
public PTFExpressionDef() {}
Modified: hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java?rev=1476313&r1=1476312&r2=1476313&view=diff
==============================================================================
--- hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java (original)
+++ hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java Fri Apr 26 17:38:05 2013
@@ -37,14 +37,14 @@ public abstract class GenericUDFLeadLag
{
transient ExprNodeEvaluator exprEvaluator;
transient PTFPartitionIterator<Object> pItr;
- ObjectInspector firstArgOI;
- ObjectInspector defaultArgOI;
- Converter defaultValueConverter;
+ transient ObjectInspector firstArgOI;
+ transient ObjectInspector defaultArgOI;
+ transient Converter defaultValueConverter;
int amt;
static{
- PTFUtils.makeTransient(GenericUDFLeadLag.class, "exprEvaluator");
- PTFUtils.makeTransient(GenericUDFLeadLag.class, "pItr");
+ PTFUtils.makeTransient(GenericUDFLeadLag.class, "exprEvaluator", "pItr",
+ "firstArgOI", "defaultArgOI", "defaultValueConverter");
}
@Override
Modified: hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java?rev=1476313&r1=1476312&r2=1476313&view=diff
==============================================================================
--- hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java (original)
+++ hive/branches/branch-0.11/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java Fri Apr 26 17:38:05 2013
@@ -67,12 +67,9 @@ public abstract class TableFunctionEvalu
transient protected PTFPartition outputPartition;
static{
- PTFUtils.makeTransient(TableFunctionEvaluator.class, "OI");
- PTFUtils.makeTransient(TableFunctionEvaluator.class, "rawInputOI");
- PTFUtils.makeTransient(TableFunctionEvaluator.class, "outputPartition");
+ PTFUtils.makeTransient(TableFunctionEvaluator.class, "outputOI", "rawInputOI");
}
-
public StructObjectInspector getOutputOI()
{
return OI;