1 #ifndef __GPUDB__GENERICRECORD_HPP__ 2 #define __GPUDB__GENERICRECORD_HPP__ 6 #include <avro/Schema.hh> 7 #include <avro/Specific.hh> 15 friend struct ::avro::codec_traits<GenericRecord>;
20 const ::avro::ValidSchema&
getSchema()
const;
22 template<
typename T> T&
value(
const size_t index)
24 return *boost::any_cast<T>(&m_values[index]);
27 template<
typename T>
const T&
value(
const size_t index)
const 29 return *boost::any_cast<T>(&m_values[index]);
32 template<
typename T> T&
value(
const std::string& name)
34 return *boost::any_cast<T>(&m_values[m_type.
getColumnIndex(name)]);
37 template<
typename T>
const T&
value(
const std::string& name)
const 39 return *boost::any_cast<T>(&m_values[m_type.
getColumnIndex(name)]);
42 std::vector<uint8_t>&
asBytes(
const size_t index);
43 const std::vector<uint8_t>&
asBytes(
const size_t index)
const;
44 std::vector<uint8_t>&
asBytes(
const std::string& name);
45 const std::vector<uint8_t>&
asBytes(
const std::string& name)
const;
47 boost::optional<std::vector<uint8_t> >&
asNullableBytes(
const size_t index);
48 const boost::optional<std::vector<uint8_t> >&
asNullableBytes(
const size_t index)
const;
49 boost::optional<std::vector<uint8_t> >&
asNullableBytes(
const std::string& name);
50 const boost::optional<std::vector<uint8_t> >&
asNullableBytes(
const std::string& name)
const;
52 double&
asDouble(
const size_t index);
53 const double&
asDouble(
const size_t index)
const;
54 double&
asDouble(
const std::string& name);
55 const double&
asDouble(
const std::string& name)
const;
60 const boost::optional<double>&
asNullableDouble(
const std::string& name)
const;
62 float&
asFloat(
const size_t index);
63 const float&
asFloat(
const size_t index)
const;
64 float&
asFloat(
const std::string& name);
65 const float&
asFloat(
const std::string& name)
const;
68 const boost::optional<float>&
asNullableFloat(
const size_t index)
const;
70 const boost::optional<float>&
asNullableFloat(
const std::string& name)
const;
72 int32_t&
asInt(
const size_t index);
73 const int32_t&
asInt(
const size_t index)
const;
74 int32_t&
asInt(
const std::string& name);
75 const int32_t&
asInt(
const std::string& name)
const;
78 const boost::optional<int32_t>&
asNullableInt(
const size_t index)
const;
79 boost::optional<int32_t>&
asNullableInt(
const std::string& name);
80 const boost::optional<int32_t>&
asNullableInt(
const std::string& name)
const;
82 int64_t&
asLong(
const size_t index);
83 const int64_t&
asLong(
const size_t index)
const;
84 int64_t&
asLong(
const std::string& name);
85 const int64_t&
asLong(
const std::string& name)
const;
88 const boost::optional<int64_t>&
asNullableLong(
const size_t index)
const;
90 const boost::optional<int64_t>&
asNullableLong(
const std::string& name)
const;
92 std::string&
asString(
const size_t index);
93 const std::string&
asString(
const size_t index)
const;
94 std::string&
asString(
const std::string& name);
95 const std::string&
asString(
const std::string& name)
const;
98 const boost::optional<std::string>&
asNullableString(
const size_t index)
const;
100 const boost::optional<std::string>&
asNullableString(
const std::string& name)
const;
103 static void transpose(
const std::string& schemaString,
const std::vector<uint8_t>& encodedData, std::vector<GenericRecord>& data);
106 std::vector<boost::any> m_values;
108 GenericRecord(
const std::vector<std::pair<Type::Column::ColumnType, bool> >& columnTypes);
GenericRecord(const Type &type)
T & value(const size_t index)
boost::optional< std::vector< uint8_t > > & asNullableBytes(const size_t index)
int32_t & asInt(const size_t index)
double & asDouble(const size_t index)
boost::optional< std::string > & asNullableString(const size_t index)
const T & value(const size_t index) const
size_t getColumnIndex(const std::string &name) const
boost::optional< float > & asNullableFloat(const size_t index)
GenericRecord DynamicTableRecord
boost::optional< int32_t > & asNullableInt(const size_t index)
int64_t & asLong(const size_t index)
std::string & asString(const size_t index)
boost::optional< double > & asNullableDouble(const size_t index)
const Type & getType() const
const T & value(const std::string &name) const
const ::avro::ValidSchema & getSchema() const
T & value(const std::string &name)
boost::optional< int64_t > & asNullableLong(const size_t index)
std::vector< uint8_t > & asBytes(const size_t index)
float & asFloat(const size_t index)