@@ -35,15 +35,17 @@ LookupMergeTreeCompactRewriter<T>::LookupMergeTreeCompactRewriter(
3535 std::unique_ptr<MergeFileSplitRead>&& merge_file_split_read,
3636 MergeFunctionWrapperFactory merge_function_wrapper_factory,
3737 const std::shared_ptr<MemoryPool>& pool,
38- const std::shared_ptr<CancellationController>& cancellation_controller)
38+ const std::shared_ptr<CancellationController>& cancellation_controller,
39+ std::unique_ptr<RemoteLookupFileManager<T>>&& remote_lookup_file_manager)
3940 : ChangelogMergeTreeRewriter(
4041 max_level, /* force_drop_delete=*/ dv_maintainer != nullptr , partition, bucket, schema_id,
4142 trimmed_primary_keys, options, data_schema, write_schema,
4243 DeletionVector::CreateFactory (dv_maintainer), path_factory_cache,
4344 std::move(merge_file_split_read), std::move(merge_function_wrapper_factory), pool,
4445 cancellation_controller),
4546 lookup_levels_(std::move(lookup_levels)),
46- dv_maintainer_(dv_maintainer) {}
47+ dv_maintainer_(dv_maintainer),
48+ remote_lookup_file_manager_(std::move(remote_lookup_file_manager)) {}
4749
4850template <typename T>
4951Result<std::unique_ptr<LookupMergeTreeCompactRewriter<T>>>
@@ -54,7 +56,8 @@ LookupMergeTreeCompactRewriter<T>::Create(
5456 const BinaryRow& partition, const std::shared_ptr<TableSchema>& table_schema,
5557 const std::shared_ptr<FileStorePathFactoryCache>& path_factory_cache,
5658 const CoreOptions& options, const std::shared_ptr<MemoryPool>& pool,
57- const std::shared_ptr<CancellationController>& cancellation_controller) {
59+ const std::shared_ptr<CancellationController>& cancellation_controller,
60+ std::unique_ptr<RemoteLookupFileManager<T>>&& remote_lookup_file_manager) {
5861 PAIMON_ASSIGN_OR_RAISE (std::vector<std::string> trimmed_primary_keys,
5962 table_schema->TrimmedPrimaryKeys ());
6063 auto data_schema = DataField::ConvertDataFieldsToArrowSchema (table_schema->Fields ());
@@ -86,7 +89,7 @@ LookupMergeTreeCompactRewriter<T>::Create(
8689 std::move (lookup_levels), dv_maintainer, max_level, partition, bucket, table_schema->Id (),
8790 trimmed_primary_keys, options, data_schema, write_schema, path_factory_cache,
8891 std::move (merge_file_split_read), std::move (merge_function_wrapper_factory), pool,
89- cancellation_controller));
92+ cancellation_controller, std::move (remote_lookup_file_manager) ));
9093}
9194
9295template <typename T>
@@ -169,11 +172,21 @@ void LookupMergeTreeCompactRewriter<T>::NotifyRewriteCompactBefore(
169172}
170173
171174template <typename T>
172- std::vector<std::shared_ptr<DataFileMeta>>
175+ Result< std::vector<std::shared_ptr<DataFileMeta> >>
173176LookupMergeTreeCompactRewriter<T>::NotifyRewriteCompactAfter(
174177 const std::vector<std::shared_ptr<DataFileMeta>>& files) {
175- // TODO(xinyu.lxy): support remoteLookupFileManager
176- return files;
178+ if (!remote_lookup_file_manager_) {
179+ return files;
180+ }
181+
182+ std::vector<std::shared_ptr<DataFileMeta>> result;
183+ result.reserve (files.size ());
184+ for (const auto & file : files) {
185+ PAIMON_ASSIGN_OR_RAISE (std::shared_ptr<DataFileMeta> new_meta,
186+ remote_lookup_file_manager_->GenRemoteLookupFile (file));
187+ result.push_back (std::move (new_meta));
188+ }
189+ return result;
177190}
178191
179192template class LookupMergeTreeCompactRewriter <KeyValue>;
0 commit comments