| 762 | } |
| 763 | |
| 764 | void DmlExecState::AddFileAux(const OutputPartition& partition, bool is_iceberg, |
| 765 | const IcebergFileStats& insert_stats, bool is_delete) { |
| 766 | lock_guard<mutex> l(lock_); |
| 767 | |
| 768 | // Special handling for puffin files with deletion vectors |
| 769 | bool is_puffin = partition.writer && partition.writer->file_extension() == "puffin"; |
| 770 | if (is_puffin && is_delete && is_iceberg) { |
| 771 | // For puffin files, create one entry per data file with deletion vectors |
| 772 | AddPuffinDeletionVectorEntries(partition); |
| 773 | return; |
| 774 | } |
| 775 | |
| 776 | // Regular file handling (non-puffin or non-delete files) |
| 777 | PartitionStatusMap::iterator entry = |
| 778 | per_partition_status_.find(partition.partition_name); |
| 779 | DCHECK(entry != per_partition_status_.end()); |
| 780 | DmlFileStatusPb* file; |
| 781 | if (is_delete) { |
| 782 | file = entry->second.add_created_delete_files(); |
| 783 | } else { |
| 784 | file = entry->second.add_created_files(); |
| 785 | } |
| 786 | if (partition.current_file_final_name.empty()) { |
| 787 | file->set_final_path(partition.current_file_name); |
| 788 | } else { |
| 789 | file->set_final_path(partition.current_file_final_name); |
| 790 | file->set_staging_path(partition.current_file_name); |
| 791 | } |
| 792 | file->set_num_rows(partition.current_file_rows); |
| 793 | file->set_size(partition.current_file_bytes); |
| 794 | if (is_iceberg) { |
| 795 | file->set_iceberg_data_file_fb( |
| 796 | createIcebergDataFileString(partition, file->final_path(), file->num_rows(), |
| 797 | file->size(), insert_stats)); |
| 798 | } |
| 799 | } |
| 800 | |
| 801 | vector<string> DmlExecState::CreateIcebergDataFilesVector() { |
| 802 | vector<string> ret; |
nothing calls this directly
no test coverage detected