This is an automated email from the ASF dual-hosted git repository.
westonpace pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 7423f0332c GH-33850: [C++] Allow Substrait's default extension
provider to be configured (#34042)
7423f0332c is described below
commit 7423f0332cb11eb780f421c07bac71f87bf44a03
Author: rtpsw <[email protected]>
AuthorDate: Tue Feb 7 01:34:59 2023 +0200
GH-33850: [C++] Allow Substrait's default extension provider to be
configured (#34042)
See #33850
* Closes: #33850
Authored-by: Yaron Gvili <[email protected]>
Signed-off-by: Weston Pace <[email protected]>
---
cpp/src/arrow/engine/substrait/options.cc | 16 ++++++++++++++--
cpp/src/arrow/engine/substrait/options.h | 7 ++++++-
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/cpp/src/arrow/engine/substrait/options.cc
b/cpp/src/arrow/engine/substrait/options.cc
index 643ce2296a..2fd506d827 100644
--- a/cpp/src/arrow/engine/substrait/options.cc
+++ b/cpp/src/arrow/engine/substrait/options.cc
@@ -122,11 +122,23 @@ class DefaultExtensionProvider : public
BaseExtensionProvider {
}
};
-std::shared_ptr<ExtensionProvider>
ExtensionProvider::kDefaultExtensionProvider =
+namespace {
+
+std::shared_ptr<ExtensionProvider> g_default_extension_provider =
std::make_shared<DefaultExtensionProvider>();
+std::mutex g_default_extension_provider_mutex;
+
+} // namespace
+
std::shared_ptr<ExtensionProvider> default_extension_provider() {
- return ExtensionProvider::kDefaultExtensionProvider;
+ std::unique_lock<std::mutex> lock(g_default_extension_provider_mutex);
+ return g_default_extension_provider;
+}
+
+void set_default_extension_provider(const std::shared_ptr<ExtensionProvider>&
provider) {
+ std::unique_lock<std::mutex> lock(g_default_extension_provider_mutex);
+ g_default_extension_provider = provider;
}
} // namespace engine
diff --git a/cpp/src/arrow/engine/substrait/options.h
b/cpp/src/arrow/engine/substrait/options.h
index bf32610ad4..35a4f70aa9 100644
--- a/cpp/src/arrow/engine/substrait/options.h
+++ b/cpp/src/arrow/engine/substrait/options.h
@@ -74,14 +74,19 @@ class ARROW_ENGINE_EXPORT ExtensionDetails {
class ARROW_ENGINE_EXPORT ExtensionProvider {
public:
- static std::shared_ptr<ExtensionProvider> kDefaultExtensionProvider;
virtual ~ExtensionProvider() = default;
virtual Result<RelationInfo> MakeRel(const std::vector<DeclarationInfo>&
inputs,
const ExtensionDetails& ext_details,
const ExtensionSet& ext_set) = 0;
};
+/// \brief Get the default extension provider
ARROW_ENGINE_EXPORT std::shared_ptr<ExtensionProvider>
default_extension_provider();
+/// \brief Set the default extension provider
+///
+/// \param[in] provider the new provider to be set as default
+ARROW_ENGINE_EXPORT void set_default_extension_provider(
+ const std::shared_ptr<ExtensionProvider>& provider);
/// Options that control the conversion between Substrait and Acero
representations of a
/// plan.