| 250 | } |
| 251 | |
| 252 | void writeFlatVector(const BaseVector& vector, std::ostream& out) { |
| 253 | // Nulls buffer. |
| 254 | writeOptionalBuffer(vector.nulls(), out); |
| 255 | |
| 256 | // Values buffer. |
| 257 | if (isVarcharOrVarbinary(vector)) { |
| 258 | const auto& values = vector.values(); |
| 259 | if (values) { |
| 260 | write<bool>(true, out); |
| 261 | |
| 262 | const auto& stringBuffers = |
| 263 | vector.asFlatVector<StringView>()->stringBuffers(); |
| 264 | writeStringViews(vector.size(), values, stringBuffers, out); |
| 265 | } else { |
| 266 | write<bool>(false, out); |
| 267 | } |
| 268 | } else { |
| 269 | writeOptionalBuffer(vector.values(), out); |
| 270 | } |
| 271 | |
| 272 | // String buffers. |
| 273 | if (isVarcharOrVarbinary(vector)) { |
| 274 | const auto& stringBuffers = |
| 275 | vector.asFlatVector<StringView>()->stringBuffers(); |
| 276 | write<int32_t>(stringBuffers.size(), out); |
| 277 | |
| 278 | for (const auto& buffer : stringBuffers) { |
| 279 | writeBuffer(buffer, out); |
| 280 | } |
| 281 | } |
| 282 | } |
| 283 | |
| 284 | VectorPtr readFlatVector( |
| 285 | const TypePtr& type, |
no test coverage detected