| 54 | |
| 55 | |
| 56 | void insertPostgreSQLValue( |
| 57 | IColumn & column, std::string_view value, |
| 58 | const ExternalResultDescription::ValueType type, const DataTypePtr data_type, |
| 59 | std::unordered_map<size_t, PostgreSQLArrayInfo> & array_info, size_t idx) |
| 60 | { |
| 61 | switch (type) |
| 62 | { |
| 63 | |
| 64 | case ExternalResultDescription::ValueType::vtUInt8: |
| 65 | { |
| 66 | if (value == "t") |
| 67 | assert_cast<ColumnUInt8 &>(column).insertValue(1); |
| 68 | else if (value == "f") |
| 69 | assert_cast<ColumnUInt8 &>(column).insertValue(0); |
| 70 | else |
| 71 | assert_cast<ColumnUInt8 &>(column).insertValue(pqxx::from_string<uint16_t>(value)); |
| 72 | break; |
| 73 | } |
| 74 | case ExternalResultDescription::ValueType::vtUInt16: |
| 75 | assert_cast<ColumnUInt16 &>(column).insertValue(pqxx::from_string<uint16_t>(value)); |
| 76 | break; |
| 77 | case ExternalResultDescription::ValueType::vtUInt32: |
| 78 | assert_cast<ColumnUInt32 &>(column).insertValue(pqxx::from_string<uint32_t>(value)); |
| 79 | break; |
| 80 | case ExternalResultDescription::ValueType::vtUInt64: |
| 81 | assert_cast<ColumnUInt64 &>(column).insertValue(pqxx::from_string<uint64_t>(value)); |
| 82 | break; |
| 83 | case ExternalResultDescription::ValueType::vtInt8: |
| 84 | assert_cast<ColumnInt8 &>(column).insertValue(pqxx::from_string<int16_t>(value)); |
| 85 | break; |
| 86 | case ExternalResultDescription::ValueType::vtInt16: |
| 87 | assert_cast<ColumnInt16 &>(column).insertValue(pqxx::from_string<int16_t>(value)); |
| 88 | break; |
| 89 | case ExternalResultDescription::ValueType::vtInt32: |
| 90 | assert_cast<ColumnInt32 &>(column).insertValue(pqxx::from_string<int32_t>(value)); |
| 91 | break; |
| 92 | case ExternalResultDescription::ValueType::vtInt64: |
| 93 | assert_cast<ColumnInt64 &>(column).insertValue(pqxx::from_string<int64_t>(value)); |
| 94 | break; |
| 95 | case ExternalResultDescription::ValueType::vtFloat32: |
| 96 | assert_cast<ColumnFloat32 &>(column).insertValue(pqxx::from_string<float>(value)); |
| 97 | break; |
| 98 | case ExternalResultDescription::ValueType::vtFloat64: |
| 99 | assert_cast<ColumnFloat64 &>(column).insertValue(pqxx::from_string<double>(value)); |
| 100 | break; |
| 101 | case ExternalResultDescription::ValueType::vtEnum8:[[fallthrough]]; |
| 102 | case ExternalResultDescription::ValueType::vtEnum16:[[fallthrough]]; |
| 103 | case ExternalResultDescription::ValueType::vtFixedString:[[fallthrough]]; |
| 104 | case ExternalResultDescription::ValueType::vtString: |
| 105 | assert_cast<ColumnString &>(column).insertData(value.data(), value.size()); |
| 106 | break; |
| 107 | case ExternalResultDescription::ValueType::vtUUID: |
| 108 | assert_cast<ColumnUInt128 &>(column).insert(parse<UUID>(value.data(), value.size())); |
| 109 | break; |
| 110 | case ExternalResultDescription::ValueType::vtDate: |
| 111 | assert_cast<ColumnUInt16 &>(column).insertValue(UInt16{LocalDate{std::string(value)}.getDayNum()}); |
| 112 | break; |
| 113 | case ExternalResultDescription::ValueType::vtDate32: |
no test coverage detected