| 715 | } |
| 716 | |
| 717 | MergeTreeMetaBase::MutableDataPartPtr |
| 718 | MergeTreeDataWriter::writeProjectionPart(Block block, const ProjectionDescription & projection, const IMergeTreeDataPart * parent_part) |
| 719 | { |
| 720 | /// Size of part would not be greater than block.bytes() + epsilon |
| 721 | size_t expected_size = block.bytes(); |
| 722 | |
| 723 | // just check if there is enough space on parent volume |
| 724 | ReservationPtr reservation = data.reserveSpace(expected_size, parent_part->volume); |
| 725 | |
| 726 | String part_name = projection.name; |
| 727 | MergeTreePartInfo new_part_info("all", 0, 0, 0); |
| 728 | auto new_data_part = data.createPart( |
| 729 | part_name, data.choosePartType(expected_size, block.rows()), |
| 730 | new_part_info, parent_part->volume, part_name + ".proj", |
| 731 | parent_part, write_location); |
| 732 | new_data_part->is_temp = false; // clean up will be done on parent part |
| 733 | |
| 734 | return writeProjectionPartImpl(data, log, block, projection.metadata, std::move(new_data_part)); |
| 735 | } |
| 736 | |
| 737 | MergeTreeMetaBase::MutableDataPartPtr MergeTreeDataWriter::writeTempProjectionPart( |
| 738 | MergeTreeMetaBase & data, |
nothing calls this directly
no test coverage detected