MCPcopy Create free account
hub / github.com/ByConity/ByConity / insertValue

Method insertValue

programs/odbc-bridge/ODBCBlockInputStream.cpp:82–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80
81
82void ODBCBlockInputStream::insertValue(
83 IColumn & column, const DataTypePtr data_type, const ValueType type, nanodbc::result & row, size_t idx)
84{
85 switch (type)
86 {
87 case ValueType::vtUInt8:
88 assert_cast<ColumnUInt8 &>(column).insertValue(row.get<uint16_t>(idx));
89 break;
90 case ValueType::vtUInt16:
91 assert_cast<ColumnUInt16 &>(column).insertValue(row.get<uint16_t>(idx));
92 break;
93 case ValueType::vtUInt32:
94 assert_cast<ColumnUInt32 &>(column).insertValue(row.get<uint32_t>(idx));
95 break;
96 case ValueType::vtUInt64:
97 assert_cast<ColumnUInt64 &>(column).insertValue(row.get<uint64_t>(idx));
98 break;
99 case ValueType::vtInt8:
100 assert_cast<ColumnInt8 &>(column).insertValue(row.get<int16_t>(idx));
101 break;
102 case ValueType::vtInt16:
103 assert_cast<ColumnInt16 &>(column).insertValue(row.get<int16_t>(idx));
104 break;
105 case ValueType::vtInt32:
106 assert_cast<ColumnInt32 &>(column).insertValue(row.get<int32_t>(idx));
107 break;
108 case ValueType::vtInt64:
109 assert_cast<ColumnInt64 &>(column).insertValue(row.get<int64_t>(idx));
110 break;
111 case ValueType::vtFloat32:
112 assert_cast<ColumnFloat32 &>(column).insertValue(row.get<float>(idx));
113 break;
114 case ValueType::vtFloat64:
115 assert_cast<ColumnFloat64 &>(column).insertValue(row.get<double>(idx));
116 break;
117 case ValueType::vtFixedString:[[fallthrough]];
118 case ValueType::vtEnum8:
119 case ValueType::vtEnum16:
120 case ValueType::vtString:
121 assert_cast<ColumnString &>(column).insert(row.get<std::string>(idx));
122 break;
123 case ValueType::vtUUID:
124 {
125 auto value = row.get<std::string>(idx);
126 assert_cast<ColumnUInt128 &>(column).insert(parse<UUID>(value.data(), value.size()));
127 break;
128 }
129 case ValueType::vtDate:
130 assert_cast<ColumnUInt16 &>(column).insertValue(UInt16{LocalDate{row.get<std::string>(idx)}.getDayNum()});
131 break;
132 case ValueType::vtDateTime:
133 {
134 auto value = row.get<std::string>(idx);
135 ReadBufferFromString in(value);
136 time_t time = 0;
137 readDateTimeText(time, in, assert_cast<const DataTypeDateTime *>(data_type.get())->getTimeZone());
138 if (time < 0)
139 time = 0;

Callers

nothing calls this directly

Calls 10

readDateTimeTextFunction · 0.85
get<double>Method · 0.80
getDayNumMethod · 0.80
ExceptionClass · 0.50
insertMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
getMethod · 0.45
deserializeWholeTextMethod · 0.45

Tested by

no test coverage detected