| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| #pragma once | |
| #include <memory> | |
| #include "arrow/c/abi.h" | |
| #include "arrow/memory_pool.h" | |
| #include "paimon/memory/memory_pool.h" | |
| #include "paimon/status.h" | |
| #include "paimon/visibility.h" | |
| struct ArrowArray; | |
| struct ArrowSchema; | |
| namespace paimon { | |
| PAIMON_EXPORT std::shared_ptr<arrow::MemoryPool> GetArrowPool( | |
| const std::shared_ptr<MemoryPool>& pool); | |
| /// Keep an additional resource alive until the ArrowArray is released. | |
| /// | |
| /// The existing release callback and private data are preserved as a release chain, so this helper | |
| /// can be applied to arrays produced by Arrow libraries or format plugins without inspecting their | |
| /// private data. Once a valid, unreleased array is passed in, this function releases it if | |
| /// retaining the lifetime fails. If a paired schema was exported, pass it so the schema is also | |
| /// released on failure; otherwise, pass nullptr. | |
| PAIMON_EXPORT Status AddArrowArrayLifetime(ArrowArray* array, ArrowSchema* schema, | |
| const std::shared_ptr<void>& lifetime); | |
| } // namespace paimon |