{
NODE_TYPE => { :type => ::Thrift::Types::I32, :name => 'node_type', :enum_class => Impala::Protocol::TExprNodeType },
TYPE => { :type => ::Thrift::Types::I32, :name => 'type', :enum_class => Impala::Protocol::TPrimitiveType },
OPCODE => { :type => ::Thrift::Types::I32, :name => 'opcode', :optional => true, :enum_class => Impala::Protocol::TExprOpcode },
NUM_CHILDREN => { :type => ::Thrift::Types::I32, :name => 'num_children' },
AGG_EXPR => { :type => ::Thrift::Types::STRUCT, :name => 'agg_expr', :class => Impala::Protocol::TAggregateExpr, :optional => true },
BOOL_LITERAL => { :type => ::Thrift::Types::STRUCT, :name => 'bool_literal', :class => Impala::Protocol::TBoolLiteral, :optional => true },
CASE_EXPR => { :type => ::Thrift::Types::STRUCT, :name => 'case_expr', :class => Impala::Protocol::TCaseExpr, :optional => true },
DATE_LITERAL => { :type => ::Thrift::Types::STRUCT, :name => 'date_literal', :class => Impala::Protocol::TDateLiteral, :optional => true },
FLOAT_LITERAL => { :type => ::Thrift::Types::STRUCT, :name => 'float_literal', :class => Impala::Protocol::TFloatLiteral, :optional => true },
INT_LITERAL => { :type => ::Thrift::Types::STRUCT, :name => 'int_literal', :class => Impala::Protocol::TIntLiteral, :optional => true },
IN_PREDICATE => { :type => ::Thrift::Types::STRUCT, :name => 'in_predicate', :class => Impala::Protocol::TInPredicate, :optional => true },
IS_NULL_PRED => { :type => ::Thrift::Types::STRUCT, :name => 'is_null_pred', :class => Impala::Protocol::TIsNullPredicate, :optional => true },
LIKE_PRED => { :type => ::Thrift::Types::STRUCT, :name => 'like_pred', :class => Impala::Protocol::TLikePredicate, :optional => true },
LITERAL_PRED => { :type => ::Thrift::Types::STRUCT, :name => 'literal_pred', :class => Impala::Protocol::TLiteralPredicate, :optional => true },
SLOT_REF => { :type => ::Thrift::Types::STRUCT, :name => 'slot_ref', :class => Impala::Protocol::TSlotRef, :optional => true },
STRING_LITERAL => { :type => ::Thrift::Types::STRUCT, :name => 'string_literal', :class => Impala::Protocol::TStringLiteral, :optional => true }
}