| 531 | decoder_(type_, options_, static_cast<const TrieCache*>(trie_cache_.get())) {} |
| 532 | |
| 533 | Result<std::shared_ptr<Array>> Convert(const BlockParser& parser, |
| 534 | int32_t col_index) override { |
| 535 | NullBuilder builder(pool_); |
| 536 | |
| 537 | auto visit = [&](const uint8_t* data, uint32_t size, bool quoted) -> Status { |
| 538 | if (ARROW_PREDICT_TRUE(decoder_.IsNull(data, size, quoted))) { |
| 539 | return builder.AppendNull(); |
| 540 | } else { |
| 541 | return GenericConversionError(type_, data, size); |
| 542 | } |
| 543 | }; |
| 544 | RETURN_NOT_OK(parser.VisitColumn(col_index, visit)); |
| 545 | std::shared_ptr<Array> res; |
| 546 | RETURN_NOT_OK(builder.Finish(&res)); |
| 547 | return res; |
| 548 | } |
| 549 | |
| 550 | protected: |
| 551 | Status Initialize() override { return decoder_.Initialize(); } |