| 311 | } |
| 312 | |
| 313 | bool RenderingQueryResult::TryConvertChunk() { |
| 314 | if (exhausted_result) { |
| 315 | return false; |
| 316 | } |
| 317 | auto chunk = result.Fetch(); |
| 318 | if (!chunk) { |
| 319 | exhausted_result = true; |
| 320 | return false; |
| 321 | } |
| 322 | auto varchar_chunk = renderer.ConvertChunk(*chunk); |
| 323 | if (renderer.HasConvertValue()) { |
| 324 | for (idx_t c = 0; c < result.ColumnCount(); c++) { |
| 325 | auto &str_vec = varchar_chunk->data[c]; |
| 326 | auto strings = duckdb::FlatVector::GetData<duckdb::string_t>(str_vec); |
| 327 | for (idx_t r = 0; r < varchar_chunk->size(); r++) { |
| 328 | if (duckdb::FlatVector::IsNull(str_vec, r)) { |
| 329 | continue; |
| 330 | } |
| 331 | auto val = strings[r].GetData(); |
| 332 | auto str_len = strings[r].GetSize(); |
| 333 | if (!renderer.ShouldConvertValue(val, str_len)) { |
| 334 | continue; |
| 335 | } |
| 336 | strings[r] = duckdb::StringVector::AddStringOrBlob(str_vec, renderer.ConvertValue(val, str_len)); |
| 337 | } |
| 338 | } |
| 339 | } |
| 340 | loaded_row_count += chunk->size(); |
| 341 | chunks.push_back(std::move(varchar_chunk)); |
| 342 | return true; |
| 343 | } |
| 344 | |
| 345 | void ColumnRenderer::Analyze(RenderingQueryResult &result) { |
| 346 | auto &state = ShellState::Get(); |
no test coverage detected