You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by am...@apache.org on 2014/09/15 13:35:03 UTC
svn commit: r1625000 [3/3] - in /hive/trunk:
contrib/src/test/results/clientpositive/
ql/src/test/queries/clientpositive/ ql/src/test/results/clientnegative/
ql/src/test/results/clientpositive/ ql/src/test/results/compiler/plan/
serde/if/test/ serde/sr...
Added: hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java?rev=1625000&view=auto
==============================================================================
--- hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java (added)
+++ hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java Mon Sep 15 11:35:02 2014
@@ -0,0 +1,730 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package org.apache.hadoop.hive.serde2.thrift.test;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PropValueUnion extends org.apache.thrift.TUnion<PropValueUnion, PropValueUnion._Fields> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PropValueUnion");
+ private static final org.apache.thrift.protocol.TField INT_VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("intValue", org.apache.thrift.protocol.TType.I32, (short)1);
+ private static final org.apache.thrift.protocol.TField LONG_VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("longValue", org.apache.thrift.protocol.TType.I64, (short)2);
+ private static final org.apache.thrift.protocol.TField STRING_VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("stringValue", org.apache.thrift.protocol.TType.STRING, (short)3);
+ private static final org.apache.thrift.protocol.TField DOUBLE_VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("doubleValue", org.apache.thrift.protocol.TType.DOUBLE, (short)4);
+ private static final org.apache.thrift.protocol.TField FLAG_FIELD_DESC = new org.apache.thrift.protocol.TField("flag", org.apache.thrift.protocol.TType.BOOL, (short)5);
+ private static final org.apache.thrift.protocol.TField L_STRING_FIELD_DESC = new org.apache.thrift.protocol.TField("lString", org.apache.thrift.protocol.TType.LIST, (short)6);
+ private static final org.apache.thrift.protocol.TField UNION_MSTRING_STRING_FIELD_DESC = new org.apache.thrift.protocol.TField("unionMStringString", org.apache.thrift.protocol.TType.MAP, (short)7);
+
+ /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+ public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+ INT_VALUE((short)1, "intValue"),
+ LONG_VALUE((short)2, "longValue"),
+ STRING_VALUE((short)3, "stringValue"),
+ DOUBLE_VALUE((short)4, "doubleValue"),
+ FLAG((short)5, "flag"),
+ L_STRING((short)6, "lString"),
+ UNION_MSTRING_STRING((short)7, "unionMStringString");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // INT_VALUE
+ return INT_VALUE;
+ case 2: // LONG_VALUE
+ return LONG_VALUE;
+ case 3: // STRING_VALUE
+ return STRING_VALUE;
+ case 4: // DOUBLE_VALUE
+ return DOUBLE_VALUE;
+ case 5: // FLAG
+ return FLAG;
+ case 6: // L_STRING
+ return L_STRING;
+ case 7: // UNION_MSTRING_STRING
+ return UNION_MSTRING_STRING;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+ static {
+ Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+ tmpMap.put(_Fields.INT_VALUE, new org.apache.thrift.meta_data.FieldMetaData("intValue", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+ tmpMap.put(_Fields.LONG_VALUE, new org.apache.thrift.meta_data.FieldMetaData("longValue", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+ tmpMap.put(_Fields.STRING_VALUE, new org.apache.thrift.meta_data.FieldMetaData("stringValue", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.DOUBLE_VALUE, new org.apache.thrift.meta_data.FieldMetaData("doubleValue", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
+ tmpMap.put(_Fields.FLAG, new org.apache.thrift.meta_data.FieldMetaData("flag", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.L_STRING, new org.apache.thrift.meta_data.FieldMetaData("lString", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+ tmpMap.put(_Fields.UNION_MSTRING_STRING, new org.apache.thrift.meta_data.FieldMetaData("unionMStringString", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PropValueUnion.class, metaDataMap);
+ }
+
+ public PropValueUnion() {
+ super();
+ }
+
+ public PropValueUnion(_Fields setField, Object value) {
+ super(setField, value);
+ }
+
+ public PropValueUnion(PropValueUnion other) {
+ super(other);
+ }
+ public PropValueUnion deepCopy() {
+ return new PropValueUnion(this);
+ }
+
+ public static PropValueUnion intValue(int value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setIntValue(value);
+ return x;
+ }
+
+ public static PropValueUnion longValue(long value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setLongValue(value);
+ return x;
+ }
+
+ public static PropValueUnion stringValue(String value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setStringValue(value);
+ return x;
+ }
+
+ public static PropValueUnion doubleValue(double value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setDoubleValue(value);
+ return x;
+ }
+
+ public static PropValueUnion flag(boolean value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setFlag(value);
+ return x;
+ }
+
+ public static PropValueUnion lString(List<String> value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setLString(value);
+ return x;
+ }
+
+ public static PropValueUnion unionMStringString(Map<String,String> value) {
+ PropValueUnion x = new PropValueUnion();
+ x.setUnionMStringString(value);
+ return x;
+ }
+
+
+ @Override
+ protected void checkType(_Fields setField, Object value) throws ClassCastException {
+ switch (setField) {
+ case INT_VALUE:
+ if (value instanceof Integer) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type Integer for field 'intValue', but got " + value.getClass().getSimpleName());
+ case LONG_VALUE:
+ if (value instanceof Long) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type Long for field 'longValue', but got " + value.getClass().getSimpleName());
+ case STRING_VALUE:
+ if (value instanceof String) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type String for field 'stringValue', but got " + value.getClass().getSimpleName());
+ case DOUBLE_VALUE:
+ if (value instanceof Double) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type Double for field 'doubleValue', but got " + value.getClass().getSimpleName());
+ case FLAG:
+ if (value instanceof Boolean) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type Boolean for field 'flag', but got " + value.getClass().getSimpleName());
+ case L_STRING:
+ if (value instanceof List) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type List<String> for field 'lString', but got " + value.getClass().getSimpleName());
+ case UNION_MSTRING_STRING:
+ if (value instanceof Map) {
+ break;
+ }
+ throw new ClassCastException("Was expecting value of type Map<String,String> for field 'unionMStringString', but got " + value.getClass().getSimpleName());
+ default:
+ throw new IllegalArgumentException("Unknown field id " + setField);
+ }
+ }
+
+ @Override
+ protected Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) throws org.apache.thrift.TException {
+ _Fields setField = _Fields.findByThriftId(field.id);
+ if (setField != null) {
+ switch (setField) {
+ case INT_VALUE:
+ if (field.type == INT_VALUE_FIELD_DESC.type) {
+ Integer intValue;
+ intValue = iprot.readI32();
+ return intValue;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case LONG_VALUE:
+ if (field.type == LONG_VALUE_FIELD_DESC.type) {
+ Long longValue;
+ longValue = iprot.readI64();
+ return longValue;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case STRING_VALUE:
+ if (field.type == STRING_VALUE_FIELD_DESC.type) {
+ String stringValue;
+ stringValue = iprot.readString();
+ return stringValue;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case DOUBLE_VALUE:
+ if (field.type == DOUBLE_VALUE_FIELD_DESC.type) {
+ Double doubleValue;
+ doubleValue = iprot.readDouble();
+ return doubleValue;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case FLAG:
+ if (field.type == FLAG_FIELD_DESC.type) {
+ Boolean flag;
+ flag = iprot.readBool();
+ return flag;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case L_STRING:
+ if (field.type == L_STRING_FIELD_DESC.type) {
+ List<String> lString;
+ {
+ org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+ lString = new ArrayList<String>(_list0.size);
+ for (int _i1 = 0; _i1 < _list0.size; ++_i1)
+ {
+ String _elem2; // required
+ _elem2 = iprot.readString();
+ lString.add(_elem2);
+ }
+ iprot.readListEnd();
+ }
+ return lString;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ case UNION_MSTRING_STRING:
+ if (field.type == UNION_MSTRING_STRING_FIELD_DESC.type) {
+ Map<String,String> unionMStringString;
+ {
+ org.apache.thrift.protocol.TMap _map3 = iprot.readMapBegin();
+ unionMStringString = new HashMap<String,String>(2*_map3.size);
+ for (int _i4 = 0; _i4 < _map3.size; ++_i4)
+ {
+ String _key5; // required
+ String _val6; // optional
+ _key5 = iprot.readString();
+ _val6 = iprot.readString();
+ unionMStringString.put(_key5, _val6);
+ }
+ iprot.readMapEnd();
+ }
+ return unionMStringString;
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+ return null;
+ }
+ default:
+ throw new IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
+ }
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected void standardSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ switch (setField_) {
+ case INT_VALUE:
+ Integer intValue = (Integer)value_;
+ oprot.writeI32(intValue);
+ return;
+ case LONG_VALUE:
+ Long longValue = (Long)value_;
+ oprot.writeI64(longValue);
+ return;
+ case STRING_VALUE:
+ String stringValue = (String)value_;
+ oprot.writeString(stringValue);
+ return;
+ case DOUBLE_VALUE:
+ Double doubleValue = (Double)value_;
+ oprot.writeDouble(doubleValue);
+ return;
+ case FLAG:
+ Boolean flag = (Boolean)value_;
+ oprot.writeBool(flag);
+ return;
+ case L_STRING:
+ List<String> lString = (List<String>)value_;
+ {
+ oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, lString.size()));
+ for (String _iter7 : lString)
+ {
+ oprot.writeString(_iter7);
+ }
+ oprot.writeListEnd();
+ }
+ return;
+ case UNION_MSTRING_STRING:
+ Map<String,String> unionMStringString = (Map<String,String>)value_;
+ {
+ oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, unionMStringString.size()));
+ for (Map.Entry<String, String> _iter8 : unionMStringString.entrySet())
+ {
+ oprot.writeString(_iter8.getKey());
+ oprot.writeString(_iter8.getValue());
+ }
+ oprot.writeMapEnd();
+ }
+ return;
+ default:
+ throw new IllegalStateException("Cannot write union with unknown field " + setField_);
+ }
+ }
+
+ @Override
+ protected Object tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID) throws org.apache.thrift.TException {
+ _Fields setField = _Fields.findByThriftId(fieldID);
+ if (setField != null) {
+ switch (setField) {
+ case INT_VALUE:
+ Integer intValue;
+ intValue = iprot.readI32();
+ return intValue;
+ case LONG_VALUE:
+ Long longValue;
+ longValue = iprot.readI64();
+ return longValue;
+ case STRING_VALUE:
+ String stringValue;
+ stringValue = iprot.readString();
+ return stringValue;
+ case DOUBLE_VALUE:
+ Double doubleValue;
+ doubleValue = iprot.readDouble();
+ return doubleValue;
+ case FLAG:
+ Boolean flag;
+ flag = iprot.readBool();
+ return flag;
+ case L_STRING:
+ List<String> lString;
+ {
+ org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
+ lString = new ArrayList<String>(_list9.size);
+ for (int _i10 = 0; _i10 < _list9.size; ++_i10)
+ {
+ String _elem11; // required
+ _elem11 = iprot.readString();
+ lString.add(_elem11);
+ }
+ iprot.readListEnd();
+ }
+ return lString;
+ case UNION_MSTRING_STRING:
+ Map<String,String> unionMStringString;
+ {
+ org.apache.thrift.protocol.TMap _map12 = iprot.readMapBegin();
+ unionMStringString = new HashMap<String,String>(2*_map12.size);
+ for (int _i13 = 0; _i13 < _map12.size; ++_i13)
+ {
+ String _key14; // required
+ String _val15; // optional
+ _key14 = iprot.readString();
+ _val15 = iprot.readString();
+ unionMStringString.put(_key14, _val15);
+ }
+ iprot.readMapEnd();
+ }
+ return unionMStringString;
+ default:
+ throw new IllegalStateException("setField wasn't null, but didn't match any of the case statements!");
+ }
+ } else {
+ throw new TProtocolException("Couldn't find a field with field id " + fieldID);
+ }
+ }
+
+ @Override
+ protected void tupleSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ switch (setField_) {
+ case INT_VALUE:
+ Integer intValue = (Integer)value_;
+ oprot.writeI32(intValue);
+ return;
+ case LONG_VALUE:
+ Long longValue = (Long)value_;
+ oprot.writeI64(longValue);
+ return;
+ case STRING_VALUE:
+ String stringValue = (String)value_;
+ oprot.writeString(stringValue);
+ return;
+ case DOUBLE_VALUE:
+ Double doubleValue = (Double)value_;
+ oprot.writeDouble(doubleValue);
+ return;
+ case FLAG:
+ Boolean flag = (Boolean)value_;
+ oprot.writeBool(flag);
+ return;
+ case L_STRING:
+ List<String> lString = (List<String>)value_;
+ {
+ oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, lString.size()));
+ for (String _iter16 : lString)
+ {
+ oprot.writeString(_iter16);
+ }
+ oprot.writeListEnd();
+ }
+ return;
+ case UNION_MSTRING_STRING:
+ Map<String,String> unionMStringString = (Map<String,String>)value_;
+ {
+ oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, unionMStringString.size()));
+ for (Map.Entry<String, String> _iter17 : unionMStringString.entrySet())
+ {
+ oprot.writeString(_iter17.getKey());
+ oprot.writeString(_iter17.getValue());
+ }
+ oprot.writeMapEnd();
+ }
+ return;
+ default:
+ throw new IllegalStateException("Cannot write union with unknown field " + setField_);
+ }
+ }
+
+ @Override
+ protected org.apache.thrift.protocol.TField getFieldDesc(_Fields setField) {
+ switch (setField) {
+ case INT_VALUE:
+ return INT_VALUE_FIELD_DESC;
+ case LONG_VALUE:
+ return LONG_VALUE_FIELD_DESC;
+ case STRING_VALUE:
+ return STRING_VALUE_FIELD_DESC;
+ case DOUBLE_VALUE:
+ return DOUBLE_VALUE_FIELD_DESC;
+ case FLAG:
+ return FLAG_FIELD_DESC;
+ case L_STRING:
+ return L_STRING_FIELD_DESC;
+ case UNION_MSTRING_STRING:
+ return UNION_MSTRING_STRING_FIELD_DESC;
+ default:
+ throw new IllegalArgumentException("Unknown field id " + setField);
+ }
+ }
+
+ @Override
+ protected org.apache.thrift.protocol.TStruct getStructDesc() {
+ return STRUCT_DESC;
+ }
+
+ @Override
+ protected _Fields enumForId(short id) {
+ return _Fields.findByThriftIdOrThrow(id);
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+
+ public int getIntValue() {
+ if (getSetField() == _Fields.INT_VALUE) {
+ return (Integer)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'intValue' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setIntValue(int value) {
+ setField_ = _Fields.INT_VALUE;
+ value_ = value;
+ }
+
+ public long getLongValue() {
+ if (getSetField() == _Fields.LONG_VALUE) {
+ return (Long)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'longValue' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setLongValue(long value) {
+ setField_ = _Fields.LONG_VALUE;
+ value_ = value;
+ }
+
+ public String getStringValue() {
+ if (getSetField() == _Fields.STRING_VALUE) {
+ return (String)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'stringValue' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setStringValue(String value) {
+ if (value == null) throw new NullPointerException();
+ setField_ = _Fields.STRING_VALUE;
+ value_ = value;
+ }
+
+ public double getDoubleValue() {
+ if (getSetField() == _Fields.DOUBLE_VALUE) {
+ return (Double)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'doubleValue' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setDoubleValue(double value) {
+ setField_ = _Fields.DOUBLE_VALUE;
+ value_ = value;
+ }
+
+ public boolean getFlag() {
+ if (getSetField() == _Fields.FLAG) {
+ return (Boolean)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'flag' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setFlag(boolean value) {
+ setField_ = _Fields.FLAG;
+ value_ = value;
+ }
+
+ public List<String> getLString() {
+ if (getSetField() == _Fields.L_STRING) {
+ return (List<String>)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'lString' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setLString(List<String> value) {
+ if (value == null) throw new NullPointerException();
+ setField_ = _Fields.L_STRING;
+ value_ = value;
+ }
+
+ public Map<String,String> getUnionMStringString() {
+ if (getSetField() == _Fields.UNION_MSTRING_STRING) {
+ return (Map<String,String>)getFieldValue();
+ } else {
+ throw new RuntimeException("Cannot get field 'unionMStringString' because union is currently set to " + getFieldDesc(getSetField()).name);
+ }
+ }
+
+ public void setUnionMStringString(Map<String,String> value) {
+ if (value == null) throw new NullPointerException();
+ setField_ = _Fields.UNION_MSTRING_STRING;
+ value_ = value;
+ }
+
+ public boolean isSetIntValue() {
+ return setField_ == _Fields.INT_VALUE;
+ }
+
+
+ public boolean isSetLongValue() {
+ return setField_ == _Fields.LONG_VALUE;
+ }
+
+
+ public boolean isSetStringValue() {
+ return setField_ == _Fields.STRING_VALUE;
+ }
+
+
+ public boolean isSetDoubleValue() {
+ return setField_ == _Fields.DOUBLE_VALUE;
+ }
+
+
+ public boolean isSetFlag() {
+ return setField_ == _Fields.FLAG;
+ }
+
+
+ public boolean isSetLString() {
+ return setField_ == _Fields.L_STRING;
+ }
+
+
+ public boolean isSetUnionMStringString() {
+ return setField_ == _Fields.UNION_MSTRING_STRING;
+ }
+
+
+ public boolean equals(Object other) {
+ if (other instanceof PropValueUnion) {
+ return equals((PropValueUnion)other);
+ } else {
+ return false;
+ }
+ }
+
+ public boolean equals(PropValueUnion other) {
+ return other != null && getSetField() == other.getSetField() && getFieldValue().equals(other.getFieldValue());
+ }
+
+ @Override
+ public int compareTo(PropValueUnion other) {
+ int lastComparison = org.apache.thrift.TBaseHelper.compareTo(getSetField(), other.getSetField());
+ if (lastComparison == 0) {
+ return org.apache.thrift.TBaseHelper.compareTo(getFieldValue(), other.getFieldValue());
+ }
+ return lastComparison;
+ }
+
+
+ @Override
+ public int hashCode() {
+ HashCodeBuilder hcb = new HashCodeBuilder();
+ hcb.append(this.getClass().getName());
+ org.apache.thrift.TFieldIdEnum setField = getSetField();
+ if (setField != null) {
+ hcb.append(setField.getThriftFieldId());
+ Object value = getFieldValue();
+ if (value instanceof org.apache.thrift.TEnum) {
+ hcb.append(((org.apache.thrift.TEnum)getFieldValue()).getValue());
+ } else {
+ hcb.append(value);
+ }
+ }
+ return hcb.toHashCode();
+ }
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+
+}
Modified: hive/trunk/serde/src/gen/thrift/gen-py/complex/ttypes.py
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/gen/thrift/gen-py/complex/ttypes.py?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/gen/thrift/gen-py/complex/ttypes.py (original)
+++ hive/trunk/serde/src/gen/thrift/gen-py/complex/ttypes.py Mon Sep 15 11:35:02 2014
@@ -17,6 +17,156 @@ except:
+class PropValueUnion:
+ """
+ Attributes:
+ - intValue
+ - longValue
+ - stringValue
+ - doubleValue
+ - flag
+ - lString
+ - unionMStringString
+ """
+
+ thrift_spec = (
+ None, # 0
+ (1, TType.I32, 'intValue', None, None, ), # 1
+ (2, TType.I64, 'longValue', None, None, ), # 2
+ (3, TType.STRING, 'stringValue', None, None, ), # 3
+ (4, TType.DOUBLE, 'doubleValue', None, None, ), # 4
+ (5, TType.BOOL, 'flag', None, None, ), # 5
+ (6, TType.LIST, 'lString', (TType.STRING,None), None, ), # 6
+ (7, TType.MAP, 'unionMStringString', (TType.STRING,None,TType.STRING,None), None, ), # 7
+ )
+
+ def __init__(self, intValue=None, longValue=None, stringValue=None, doubleValue=None, flag=None, lString=None, unionMStringString=None,):
+ self.intValue = intValue
+ self.longValue = longValue
+ self.stringValue = stringValue
+ self.doubleValue = doubleValue
+ self.flag = flag
+ self.lString = lString
+ self.unionMStringString = unionMStringString
+
+ def read(self, iprot):
+ if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+ fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+ return
+ iprot.readStructBegin()
+ while True:
+ (fname, ftype, fid) = iprot.readFieldBegin()
+ if ftype == TType.STOP:
+ break
+ if fid == 1:
+ if ftype == TType.I32:
+ self.intValue = iprot.readI32();
+ else:
+ iprot.skip(ftype)
+ elif fid == 2:
+ if ftype == TType.I64:
+ self.longValue = iprot.readI64();
+ else:
+ iprot.skip(ftype)
+ elif fid == 3:
+ if ftype == TType.STRING:
+ self.stringValue = iprot.readString();
+ else:
+ iprot.skip(ftype)
+ elif fid == 4:
+ if ftype == TType.DOUBLE:
+ self.doubleValue = iprot.readDouble();
+ else:
+ iprot.skip(ftype)
+ elif fid == 5:
+ if ftype == TType.BOOL:
+ self.flag = iprot.readBool();
+ else:
+ iprot.skip(ftype)
+ elif fid == 6:
+ if ftype == TType.LIST:
+ self.lString = []
+ (_etype3, _size0) = iprot.readListBegin()
+ for _i4 in xrange(_size0):
+ _elem5 = iprot.readString();
+ self.lString.append(_elem5)
+ iprot.readListEnd()
+ else:
+ iprot.skip(ftype)
+ elif fid == 7:
+ if ftype == TType.MAP:
+ self.unionMStringString = {}
+ (_ktype7, _vtype8, _size6 ) = iprot.readMapBegin()
+ for _i10 in xrange(_size6):
+ _key11 = iprot.readString();
+ _val12 = iprot.readString();
+ self.unionMStringString[_key11] = _val12
+ iprot.readMapEnd()
+ else:
+ iprot.skip(ftype)
+ else:
+ iprot.skip(ftype)
+ iprot.readFieldEnd()
+ iprot.readStructEnd()
+
+ def write(self, oprot):
+ if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+ oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+ return
+ oprot.writeStructBegin('PropValueUnion')
+ if self.intValue is not None:
+ oprot.writeFieldBegin('intValue', TType.I32, 1)
+ oprot.writeI32(self.intValue)
+ oprot.writeFieldEnd()
+ if self.longValue is not None:
+ oprot.writeFieldBegin('longValue', TType.I64, 2)
+ oprot.writeI64(self.longValue)
+ oprot.writeFieldEnd()
+ if self.stringValue is not None:
+ oprot.writeFieldBegin('stringValue', TType.STRING, 3)
+ oprot.writeString(self.stringValue)
+ oprot.writeFieldEnd()
+ if self.doubleValue is not None:
+ oprot.writeFieldBegin('doubleValue', TType.DOUBLE, 4)
+ oprot.writeDouble(self.doubleValue)
+ oprot.writeFieldEnd()
+ if self.flag is not None:
+ oprot.writeFieldBegin('flag', TType.BOOL, 5)
+ oprot.writeBool(self.flag)
+ oprot.writeFieldEnd()
+ if self.lString is not None:
+ oprot.writeFieldBegin('lString', TType.LIST, 6)
+ oprot.writeListBegin(TType.STRING, len(self.lString))
+ for iter13 in self.lString:
+ oprot.writeString(iter13)
+ oprot.writeListEnd()
+ oprot.writeFieldEnd()
+ if self.unionMStringString is not None:
+ oprot.writeFieldBegin('unionMStringString', TType.MAP, 7)
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.unionMStringString))
+ for kiter14,viter15 in self.unionMStringString.items():
+ oprot.writeString(kiter14)
+ oprot.writeString(viter15)
+ oprot.writeMapEnd()
+ oprot.writeFieldEnd()
+ oprot.writeFieldStop()
+ oprot.writeStructEnd()
+
+ def validate(self):
+ return
+
+
+ def __repr__(self):
+ L = ['%s=%r' % (key, value)
+ for key, value in self.__dict__.iteritems()]
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+ def __eq__(self, other):
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not (self == other)
+
class IntString:
"""
Attributes:
@@ -110,6 +260,10 @@ class Complex:
- lString
- lintString
- mStringString
+ - attributes
+ - unionField1
+ - unionField2
+ - unionField3
"""
thrift_spec = (
@@ -120,15 +274,23 @@ class Complex:
(4, TType.LIST, 'lString', (TType.STRING,None), None, ), # 4
(5, TType.LIST, 'lintString', (TType.STRUCT,(IntString, IntString.thrift_spec)), None, ), # 5
(6, TType.MAP, 'mStringString', (TType.STRING,None,TType.STRING,None), None, ), # 6
+ (7, TType.MAP, 'attributes', (TType.STRING,None,TType.MAP,(TType.STRING,None,TType.MAP,(TType.STRING,None,TType.STRUCT,(PropValueUnion, PropValueUnion.thrift_spec)))), None, ), # 7
+ (8, TType.STRUCT, 'unionField1', (PropValueUnion, PropValueUnion.thrift_spec), None, ), # 8
+ (9, TType.STRUCT, 'unionField2', (PropValueUnion, PropValueUnion.thrift_spec), None, ), # 9
+ (10, TType.STRUCT, 'unionField3', (PropValueUnion, PropValueUnion.thrift_spec), None, ), # 10
)
- def __init__(self, aint=None, aString=None, lint=None, lString=None, lintString=None, mStringString=None,):
+ def __init__(self, aint=None, aString=None, lint=None, lString=None, lintString=None, mStringString=None, attributes=None, unionField1=None, unionField2=None, unionField3=None,):
self.aint = aint
self.aString = aString
self.lint = lint
self.lString = lString
self.lintString = lintString
self.mStringString = mStringString
+ self.attributes = attributes
+ self.unionField1 = unionField1
+ self.unionField2 = unionField2
+ self.unionField3 = unionField3
def read(self, iprot):
if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -152,45 +314,87 @@ class Complex:
elif fid == 3:
if ftype == TType.LIST:
self.lint = []
- (_etype3, _size0) = iprot.readListBegin()
- for _i4 in xrange(_size0):
- _elem5 = iprot.readI32();
- self.lint.append(_elem5)
+ (_etype19, _size16) = iprot.readListBegin()
+ for _i20 in xrange(_size16):
+ _elem21 = iprot.readI32();
+ self.lint.append(_elem21)
iprot.readListEnd()
else:
iprot.skip(ftype)
elif fid == 4:
if ftype == TType.LIST:
self.lString = []
- (_etype9, _size6) = iprot.readListBegin()
- for _i10 in xrange(_size6):
- _elem11 = iprot.readString();
- self.lString.append(_elem11)
+ (_etype25, _size22) = iprot.readListBegin()
+ for _i26 in xrange(_size22):
+ _elem27 = iprot.readString();
+ self.lString.append(_elem27)
iprot.readListEnd()
else:
iprot.skip(ftype)
elif fid == 5:
if ftype == TType.LIST:
self.lintString = []
- (_etype15, _size12) = iprot.readListBegin()
- for _i16 in xrange(_size12):
- _elem17 = IntString()
- _elem17.read(iprot)
- self.lintString.append(_elem17)
+ (_etype31, _size28) = iprot.readListBegin()
+ for _i32 in xrange(_size28):
+ _elem33 = IntString()
+ _elem33.read(iprot)
+ self.lintString.append(_elem33)
iprot.readListEnd()
else:
iprot.skip(ftype)
elif fid == 6:
if ftype == TType.MAP:
self.mStringString = {}
- (_ktype19, _vtype20, _size18 ) = iprot.readMapBegin()
- for _i22 in xrange(_size18):
- _key23 = iprot.readString();
- _val24 = iprot.readString();
- self.mStringString[_key23] = _val24
+ (_ktype35, _vtype36, _size34 ) = iprot.readMapBegin()
+ for _i38 in xrange(_size34):
+ _key39 = iprot.readString();
+ _val40 = iprot.readString();
+ self.mStringString[_key39] = _val40
+ iprot.readMapEnd()
+ else:
+ iprot.skip(ftype)
+ elif fid == 7:
+ if ftype == TType.MAP:
+ self.attributes = {}
+ (_ktype42, _vtype43, _size41 ) = iprot.readMapBegin()
+ for _i45 in xrange(_size41):
+ _key46 = iprot.readString();
+ _val47 = {}
+ (_ktype49, _vtype50, _size48 ) = iprot.readMapBegin()
+ for _i52 in xrange(_size48):
+ _key53 = iprot.readString();
+ _val54 = {}
+ (_ktype56, _vtype57, _size55 ) = iprot.readMapBegin()
+ for _i59 in xrange(_size55):
+ _key60 = iprot.readString();
+ _val61 = PropValueUnion()
+ _val61.read(iprot)
+ _val54[_key60] = _val61
+ iprot.readMapEnd()
+ _val47[_key53] = _val54
+ iprot.readMapEnd()
+ self.attributes[_key46] = _val47
iprot.readMapEnd()
else:
iprot.skip(ftype)
+ elif fid == 8:
+ if ftype == TType.STRUCT:
+ self.unionField1 = PropValueUnion()
+ self.unionField1.read(iprot)
+ else:
+ iprot.skip(ftype)
+ elif fid == 9:
+ if ftype == TType.STRUCT:
+ self.unionField2 = PropValueUnion()
+ self.unionField2.read(iprot)
+ else:
+ iprot.skip(ftype)
+ elif fid == 10:
+ if ftype == TType.STRUCT:
+ self.unionField3 = PropValueUnion()
+ self.unionField3.read(iprot)
+ else:
+ iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
@@ -212,32 +416,60 @@ class Complex:
if self.lint is not None:
oprot.writeFieldBegin('lint', TType.LIST, 3)
oprot.writeListBegin(TType.I32, len(self.lint))
- for iter25 in self.lint:
- oprot.writeI32(iter25)
+ for iter62 in self.lint:
+ oprot.writeI32(iter62)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.lString is not None:
oprot.writeFieldBegin('lString', TType.LIST, 4)
oprot.writeListBegin(TType.STRING, len(self.lString))
- for iter26 in self.lString:
- oprot.writeString(iter26)
+ for iter63 in self.lString:
+ oprot.writeString(iter63)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.lintString is not None:
oprot.writeFieldBegin('lintString', TType.LIST, 5)
oprot.writeListBegin(TType.STRUCT, len(self.lintString))
- for iter27 in self.lintString:
- iter27.write(oprot)
+ for iter64 in self.lintString:
+ iter64.write(oprot)
oprot.writeListEnd()
oprot.writeFieldEnd()
if self.mStringString is not None:
oprot.writeFieldBegin('mStringString', TType.MAP, 6)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.mStringString))
- for kiter28,viter29 in self.mStringString.items():
- oprot.writeString(kiter28)
- oprot.writeString(viter29)
+ for kiter65,viter66 in self.mStringString.items():
+ oprot.writeString(kiter65)
+ oprot.writeString(viter66)
+ oprot.writeMapEnd()
+ oprot.writeFieldEnd()
+ if self.attributes is not None:
+ oprot.writeFieldBegin('attributes', TType.MAP, 7)
+ oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.attributes))
+ for kiter67,viter68 in self.attributes.items():
+ oprot.writeString(kiter67)
+ oprot.writeMapBegin(TType.STRING, TType.MAP, len(viter68))
+ for kiter69,viter70 in viter68.items():
+ oprot.writeString(kiter69)
+ oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(viter70))
+ for kiter71,viter72 in viter70.items():
+ oprot.writeString(kiter71)
+ viter72.write(oprot)
+ oprot.writeMapEnd()
+ oprot.writeMapEnd()
oprot.writeMapEnd()
oprot.writeFieldEnd()
+ if self.unionField1 is not None:
+ oprot.writeFieldBegin('unionField1', TType.STRUCT, 8)
+ self.unionField1.write(oprot)
+ oprot.writeFieldEnd()
+ if self.unionField2 is not None:
+ oprot.writeFieldBegin('unionField2', TType.STRUCT, 9)
+ self.unionField2.write(oprot)
+ oprot.writeFieldEnd()
+ if self.unionField3 is not None:
+ oprot.writeFieldBegin('unionField3', TType.STRUCT, 10)
+ self.unionField3.write(oprot)
+ oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
Modified: hive/trunk/serde/src/gen/thrift/gen-rb/complex_types.rb
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/gen/thrift/gen-rb/complex_types.rb?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/gen/thrift/gen-rb/complex_types.rb (original)
+++ hive/trunk/serde/src/gen/thrift/gen-rb/complex_types.rb Mon Sep 15 11:35:02 2014
@@ -6,6 +6,65 @@
require 'thrift'
+class PropValueUnion < ::Thrift::Union
+ include ::Thrift::Struct_Union
+ class << self
+ def intValue(val)
+ PropValueUnion.new(:intValue, val)
+ end
+
+ def longValue(val)
+ PropValueUnion.new(:longValue, val)
+ end
+
+ def stringValue(val)
+ PropValueUnion.new(:stringValue, val)
+ end
+
+ def doubleValue(val)
+ PropValueUnion.new(:doubleValue, val)
+ end
+
+ def flag(val)
+ PropValueUnion.new(:flag, val)
+ end
+
+ def lString(val)
+ PropValueUnion.new(:lString, val)
+ end
+
+ def unionMStringString(val)
+ PropValueUnion.new(:unionMStringString, val)
+ end
+ end
+
+ INTVALUE = 1
+ LONGVALUE = 2
+ STRINGVALUE = 3
+ DOUBLEVALUE = 4
+ FLAG = 5
+ LSTRING = 6
+ UNIONMSTRINGSTRING = 7
+
+ FIELDS = {
+ INTVALUE => {:type => ::Thrift::Types::I32, :name => 'intValue', :optional => true},
+ LONGVALUE => {:type => ::Thrift::Types::I64, :name => 'longValue', :optional => true},
+ STRINGVALUE => {:type => ::Thrift::Types::STRING, :name => 'stringValue', :optional => true},
+ DOUBLEVALUE => {:type => ::Thrift::Types::DOUBLE, :name => 'doubleValue', :optional => true},
+ FLAG => {:type => ::Thrift::Types::BOOL, :name => 'flag', :optional => true},
+ LSTRING => {:type => ::Thrift::Types::LIST, :name => 'lString', :element => {:type => ::Thrift::Types::STRING}},
+ UNIONMSTRINGSTRING => {:type => ::Thrift::Types::MAP, :name => 'unionMStringString', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
+ }
+
+ def struct_fields; FIELDS; end
+
+ def validate
+ raise(StandardError, 'Union fields are not set.') if get_set_field.nil? || get_value.nil?
+ end
+
+ ::Thrift::Union.generate_accessors self
+end
+
class IntString
include ::Thrift::Struct, ::Thrift::Struct_Union
MYINT = 1
@@ -34,6 +93,10 @@ class Complex
LSTRING = 4
LINTSTRING = 5
MSTRINGSTRING = 6
+ ATTRIBUTES = 7
+ UNIONFIELD1 = 8
+ UNIONFIELD2 = 9
+ UNIONFIELD3 = 10
FIELDS = {
AINT => {:type => ::Thrift::Types::I32, :name => 'aint'},
@@ -41,7 +104,11 @@ class Complex
LINT => {:type => ::Thrift::Types::LIST, :name => 'lint', :element => {:type => ::Thrift::Types::I32}},
LSTRING => {:type => ::Thrift::Types::LIST, :name => 'lString', :element => {:type => ::Thrift::Types::STRING}},
LINTSTRING => {:type => ::Thrift::Types::LIST, :name => 'lintString', :element => {:type => ::Thrift::Types::STRUCT, :class => ::IntString}},
- MSTRINGSTRING => {:type => ::Thrift::Types::MAP, :name => 'mStringString', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
+ MSTRINGSTRING => {:type => ::Thrift::Types::MAP, :name => 'mStringString', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+ ATTRIBUTES => {:type => ::Thrift::Types::MAP, :name => 'attributes', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::PropValueUnion}}}},
+ UNIONFIELD1 => {:type => ::Thrift::Types::STRUCT, :name => 'unionField1', :class => ::PropValueUnion},
+ UNIONFIELD2 => {:type => ::Thrift::Types::STRUCT, :name => 'unionField2', :class => ::PropValueUnion},
+ UNIONFIELD3 => {:type => ::Thrift::Types::STRUCT, :name => 'unionField3', :class => ::PropValueUnion}
}
def struct_fields; FIELDS; end
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java Mon Sep 15 11:35:02 2014
@@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentHa
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.apache.thrift.TUnion;
/**
* ObjectInspectorFactory is the primary way to create new ObjectInspector
@@ -174,7 +175,7 @@ public final class ObjectInspectorFactor
oi = new ReflectionStructObjectInspector();
break;
case THRIFT:
- oi = new ThriftStructObjectInspector();
+ oi = TUnion.class.isAssignableFrom(c) ? new ThriftUnionObjectInspector() : new ThriftStructObjectInspector();
break;
case PROTOCOL_BUFFERS:
oi = new ProtocolBuffersStructObjectInspector();
@@ -183,20 +184,13 @@ public final class ObjectInspectorFactor
throw new RuntimeException(ObjectInspectorFactory.class.getName()
+ ": internal error.");
}
+
// put it into the cache BEFORE it is initialized to make sure we can catch
// recursive types.
objectInspectorCache.put(t, oi);
- Field[] fields = ObjectInspectorUtils.getDeclaredNonStaticFields(c);
- ArrayList<ObjectInspector> structFieldObjectInspectors = new ArrayList<ObjectInspector>(
- fields.length);
- for (int i = 0; i < fields.length; i++) {
- if (!oi.shouldIgnoreField(fields[i].getName())) {
- structFieldObjectInspectors.add(getReflectionObjectInspector(fields[i]
- .getGenericType(), options));
- }
- }
- oi.init(c, structFieldObjectInspectors);
+ oi.init(c, options);
return oi;
+
}
static ConcurrentHashMap<ObjectInspector, StandardListObjectInspector> cachedStandardListObjectInspector =
Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java Mon Sep 15 11:35:02 2014
@@ -44,6 +44,7 @@ public class ReflectionStructObjectInspe
public static class MyField implements StructField {
protected int fieldID;
protected Field field;
+
protected ObjectInspector fieldObjectInspector;
protected MyField() {
@@ -116,12 +117,13 @@ public class ReflectionStructObjectInspe
* The reason that this method is not recursive by itself is because we want
* to allow recursive types.
*/
- void init(Class<?> objectClass,
- List<ObjectInspector> structFieldObjectInspectors) {
- assert (!List.class.isAssignableFrom(objectClass));
- assert (!Map.class.isAssignableFrom(objectClass));
+ protected void init(Class<?> objectClass,
+ ObjectInspectorFactory.ObjectInspectorOptions options) {
+ verifyObjectClassType(objectClass);
this.objectClass = objectClass;
+ final List<? extends ObjectInspector> structFieldObjectInspectors = extractFieldObjectInspectors(objectClass, options);
+
Field[] reflectionFields = ObjectInspectorUtils
.getDeclaredNonStaticFields(objectClass);
fields = new ArrayList<MyField>(structFieldObjectInspectors.size());
@@ -205,4 +207,23 @@ public class ReflectionStructObjectInspe
return struct;
}
+ protected List<? extends ObjectInspector> extractFieldObjectInspectors(Class<?> clazz,
+ ObjectInspectorFactory.ObjectInspectorOptions options) {
+ Field[] fields = ObjectInspectorUtils.getDeclaredNonStaticFields(clazz);
+ ArrayList<ObjectInspector> structFieldObjectInspectors = new ArrayList<ObjectInspector>(
+ fields.length);
+ for (int i = 0; i < fields.length; i++) {
+ if (!shouldIgnoreField(fields[i].getName())) {
+ structFieldObjectInspectors.add(ObjectInspectorFactory.getReflectionObjectInspector(fields[i]
+ .getGenericType(), options));
+ }
+ }
+ return structFieldObjectInspectors;
+ }
+
+
+ protected void verifyObjectClassType(Class<?> objectClass) {
+ assert (!List.class.isAssignableFrom(objectClass));
+ assert (!Map.class.isAssignableFrom(objectClass));
+ }
}
Added: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftObjectInspectorUtils.java?rev=1625000&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftObjectInspectorUtils.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftObjectInspectorUtils.java Mon Sep 15 11:35:02 2014
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.objectinspector;
+
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+public class ThriftObjectInspectorUtils {
+
+ /**
+ * Returns generic type for a field in a Thrift class. The type is the return
+ * type for the accessor method for the field (e.g. <code>isFieldName()</code>
+ * for a boolean type or <code>getFieldName</code> for other types). The return
+ * type works for both structs and unions. Reflecting directly based on
+ * fields does not work for unions.
+ *
+ * @return generic {@link Type} of the thrift field.
+ */
+ public static Type getFieldType(Class<?> containingClass, String fieldName) {
+
+ String suffix = // uppercase first letter
+ fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
+
+ // look for getFieldName() or isFieldName()
+
+ for(String prefix : new String[]{"get", "is"}) {
+ try {
+ Method method = containingClass.getDeclaredMethod(prefix + suffix);
+ return method.getGenericReturnType();
+ } catch (NoSuchMethodException e) {
+ }
+ }
+
+ // look for bean style accessors get_fieldName and is_fieldName
+
+ for(String prefix : new String[]{"get_", "is_"}) {
+ try {
+ Method method = containingClass.getDeclaredMethod(prefix + fieldName);
+ return method.getGenericReturnType();
+ } catch (NoSuchMethodException e) {
+ }
+ }
+
+ throw new RuntimeException("Could not find type for " + fieldName +
+ " in " + containingClass);
+ }
+
+}
Added: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftUnionObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftUnionObjectInspector.java?rev=1625000&view=auto
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftUnionObjectInspector.java (added)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftUnionObjectInspector.java Mon Sep 15 11:35:02 2014
@@ -0,0 +1,121 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.serde2.objectinspector;
+
+import com.google.common.primitives.UnsignedBytes;
+import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.thrift.TFieldIdEnum;
+import org.apache.thrift.TUnion;
+import org.apache.thrift.meta_data.FieldMetaData;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Always use the ObjectInspectorFactory to create new ObjectInspector objects,
+ * instead of directly creating an instance of this class.
+ */
+public class ThriftUnionObjectInspector extends ReflectionStructObjectInspector implements UnionObjectInspector {
+
+ private static final String FIELD_METADATA_MAP = "metaDataMap";
+ private List<ObjectInspector> ois;
+
+ @Override
+ public boolean shouldIgnoreField(String name) {
+ return name.startsWith("__isset");
+ }
+
+ @Override
+ public List<ObjectInspector> getObjectInspectors() {
+ return ois;
+ }
+
+ @Override
+ public byte getTag(final Object o) {
+ if (o == null) {
+ return -1;
+ }
+ final TFieldIdEnum setField = ((TUnion<? extends TUnion<?, ?>, ? extends TFieldIdEnum>) o).getSetField();
+ return UnsignedBytes.checkedCast((setField.getThriftFieldId() - 1));
+ }
+
+ @Override
+ public Object getField(final Object o) {
+ if (o == null) {
+ return null;
+ }
+ return ((TUnion<? extends TUnion<?, ?>, ? extends TFieldIdEnum>) o).getFieldValue();
+ }
+
+ /**
+ * This method is only intended to be used by Utilities class in this package.
+ * The reason that this method is not recursive by itself is because we want
+ * to allow recursive types.
+ */
+ @Override
+ protected void init(Class<?> objectClass,
+ ObjectInspectorFactory.ObjectInspectorOptions options) {
+ verifyObjectClassType(objectClass);
+ this.objectClass = objectClass;
+ final Field fieldMetaData;
+
+ try {
+ fieldMetaData = objectClass.getDeclaredField(FIELD_METADATA_MAP);
+ assert(Map.class.isAssignableFrom(fieldMetaData.getType()));
+ fieldMetaData.setAccessible(true);
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException("Unable to find field metadata for thrift union field " , e);
+ }
+
+ try {
+ final Map<? extends TFieldIdEnum, FieldMetaData> fieldMap = (Map<? extends TFieldIdEnum, FieldMetaData>) fieldMetaData.get(null);
+ this.ois = new ArrayList<ObjectInspector>();
+ for(Map.Entry<? extends TFieldIdEnum, FieldMetaData> metadata : fieldMap.entrySet()) {
+ final Type fieldType = ThriftObjectInspectorUtils.getFieldType(objectClass, metadata.getValue().fieldName);
+ final ObjectInspector reflectionObjectInspector = ObjectInspectorFactory.getReflectionObjectInspector(fieldType, options);
+ this.ois.add(reflectionObjectInspector);
+ }
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Unable to find field metadata for thrift union field ", e);
+ }
+ }
+
+ @Override
+ public Category getCategory() {
+ return Category.UNION;
+ }
+
+ @Override
+ public List<? extends StructField> getAllStructFieldRefs() {
+ return fields;
+ }
+
+ public String getTypeName() {
+ return ObjectInspectorUtils.getStandardUnionTypeName(this);
+ }
+
+ @Override
+ public Object create() {
+ return ReflectionUtils.newInstance(objectClass, null);
+ }
+}
+
Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java Mon Sep 15 11:35:02 2014
@@ -46,7 +46,7 @@ public class TestObjectInspectorUtils ex
StructObjectInspector soi = (StructObjectInspector) ObjectInspectorUtils
.getStandardObjectInspector(oi1);
List<? extends StructField> fields = soi.getAllStructFieldRefs();
- assertEquals(6, fields.size());
+ assertEquals(10, fields.size());
assertEquals(fields.get(0), soi.getStructFieldRef("aint"));
// null
@@ -75,7 +75,7 @@ public class TestObjectInspectorUtils ex
assertEquals(c4, soi.getStructFieldData(c, fields.get(4)));
assertNull(soi.getStructFieldData(c, fields.get(5)));
ArrayList<Object> cfields = new ArrayList<Object>();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 10; i++) {
cfields.add(soi.getStructFieldData(c, fields.get(i)));
}
assertEquals(cfields, soi.getStructFieldsDataAsList(c));
Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java Mon Sep 15 11:35:02 2014
@@ -52,7 +52,7 @@ public class TestThriftObjectInspectors
assertEquals(Category.STRUCT, oi1.getCategory());
StructObjectInspector soi = (StructObjectInspector) oi1;
List<? extends StructField> fields = soi.getAllStructFieldRefs();
- assertEquals(6, fields.size());
+ assertEquals(10, fields.size());
assertEquals(fields.get(0), soi.getStructFieldRef("aint"));
// null
@@ -71,6 +71,10 @@ public class TestThriftObjectInspectors
List<IntString> c4 = new ArrayList<IntString>();
c.setLintString(c4);
c.setMStringString(null);
+ c.setAttributes(null);
+ c.setUnionField1(null);
+ c.setUnionField2(null);
+ c.setUnionField3(null);
assertEquals(1, soi.getStructFieldData(c, fields.get(0)));
assertEquals("test", soi.getStructFieldData(c, fields.get(1)));
@@ -78,8 +82,13 @@ public class TestThriftObjectInspectors
assertEquals(c3, soi.getStructFieldData(c, fields.get(3)));
assertEquals(c4, soi.getStructFieldData(c, fields.get(4)));
assertNull(soi.getStructFieldData(c, fields.get(5)));
+ assertNull(soi.getStructFieldData(c, fields.get(6)));
+ assertNull(soi.getStructFieldData(c, fields.get(7)));
+ assertNull(soi.getStructFieldData(c, fields.get(8)));
+ assertNull(soi.getStructFieldData(c, fields.get(9)));
+
ArrayList<Object> cfields = new ArrayList<Object>();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 10; i++) {
cfields.add(soi.getStructFieldData(c, fields.get(i)));
}
assertEquals(cfields, soi.getStructFieldsDataAsList(c));
Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java?rev=1625000&r1=1624999&r2=1625000&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java Mon Sep 15 11:35:02 2014
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.serde2.thrift_test;
import java.util.ArrayList;
+import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
@@ -28,6 +29,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.serde2.ByteStream;
import org.apache.hadoop.hive.serde2.thrift.test.Complex;
import org.apache.hadoop.hive.serde2.thrift.test.IntString;
+import org.apache.hadoop.hive.serde2.thrift.test.PropValueUnion;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Writable;
@@ -125,16 +127,23 @@ public final class CreateSequenceFile {
islist.add(new IntString(i * i, "" + i * i * i, i));
HashMap<String, String> hash = new HashMap<String, String>();
hash.put("key_" + i, "value_" + i);
+ Map<String, Map<String, Map<String,PropValueUnion>>> unionMap = new HashMap<String, Map<String, Map<String,PropValueUnion>>>();
+ Map<String, Map<String, PropValueUnion>> erMap = new HashMap<String, Map<String, PropValueUnion>>();
+ Map<String, PropValueUnion> attrMap = new HashMap<String, PropValueUnion>();
+
+ erMap.put("erVal" + i, attrMap);
+ attrMap.put("value_" + i, PropValueUnion.doubleValue(1.0));
+ unionMap.put("key_" + i, erMap);
Complex complex = new Complex(rand.nextInt(), "record_"
- + (new Integer(i)).toString(), alist, slist, islist, hash);
+ + (new Integer(i)).toString(), alist, slist, islist, hash, unionMap, PropValueUnion.stringValue("test" + i), PropValueUnion.unionMStringString(hash), PropValueUnion.lString(slist));
Writable value = serializer.serialize(complex);
writer.append(key, value);
}
// Add an all-null record
- Complex complex = new Complex(0, null, null, null, null, null);
+ Complex complex = new Complex(0, null, null, null, null, null, null, null, null, null);
Writable value = serializer.serialize(complex);
writer.append(key, value);