| 358 | } |
| 359 | |
| 360 | std::shared_ptr<DataType> Promote( |
| 361 | const std::shared_ptr<DataType>& failed, |
| 362 | const std::shared_ptr<Field>& unexpected_field) const override { |
| 363 | switch (failed->id()) { |
| 364 | case Type::NA: |
| 365 | return Infer(unexpected_field); |
| 366 | |
| 367 | case Type::TIMESTAMP: |
| 368 | return utf8(); |
| 369 | |
| 370 | case Type::INT64: |
| 371 | return float64(); |
| 372 | |
| 373 | default: |
| 374 | return nullptr; |
| 375 | } |
| 376 | } |
| 377 | } impl; |
| 378 | |
| 379 | return &impl; |