Skip to content

Commit

Permalink
apacheGH-33850: [C++] Allow Substrait's default extension provider to…
Browse files Browse the repository at this point in the history
… be configured (apache#34042)

See apache#33850
* Closes: apache#33850

Authored-by: Yaron Gvili <rtpsw@hotmail.com>
Signed-off-by: Weston Pace <weston.pace@gmail.com>
  • Loading branch information
rtpsw authored and Mike Hancock committed Feb 17, 2023
1 parent 4882350 commit ed53892
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
16 changes: 14 additions & 2 deletions cpp/src/arrow/engine/substrait/options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion cpp/src/arrow/engine/substrait/options.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit ed53892

Please sign in to comment.