| 80 | |
| 81 | |
| 82 | void 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; |
nothing calls this directly
no test coverage detected