Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::ExtensionHelper Class Reference

Static Public Member Functions

static void LoadAllExtensions (DuckDB &db)
 
static vector< string > LoadedExtensionTestPaths ()
 
static ExtensionLoadResult LoadExtension (DuckDB &db, const std::string &extension)
 
static unique_ptr< ExtensionInstallInfoInstallExtension (ClientContext &context, const string &extension, ExtensionInstallOptions &options)
 Install an extension.
 
static unique_ptr< ExtensionInstallInfoInstallExtension (DatabaseInstance &db, FileSystem &fs, const string &extension, ExtensionInstallOptions &options)
 
static void LoadExternalExtension (ClientContext &context, const string &extension)
 Load an extension.
 
static void LoadExternalExtension (DatabaseInstance &db, FileSystem &fs, const string &extension)
 
static void AutoLoadExtension (ClientContext &context, const string &extension_name)
 Autoload an extension (depending on config, potentially a nop. Throws when installation fails)
 
static void AutoLoadExtension (DatabaseInstance &db, const string &extension_name)
 
static DUCKDB_API bool TryAutoLoadExtension (DatabaseInstance &db, const string &extension_name) noexcept
 Autoload an extension (depending on config, potentially a nop. Returns false on failure)
 
static DUCKDB_API bool TryAutoLoadExtension (ClientContext &context, const string &extension_name) noexcept
 
static DUCKDB_API bool TryAutoLoadAvailableExtension (DatabaseInstance &instance, const string &extension_name) noexcept
 Autoload an extension, only if available locally.
 
static vector< ExtensionUpdateResultUpdateExtensions (ClientContext &context)
 Update all extensions, return a vector of extension names that were updated;.
 
static ExtensionUpdateResult UpdateExtension (ClientContext &context, const string &extension_name)
 Update a specific extension.
 
static string ExtensionDirectory (ClientContext &context)
 Get the extension directory base on the current config.
 
static string ExtensionDirectory (DatabaseInstance &db, FileSystem &fs)
 
static vector< string > GetExtensionDirectoryPath (ClientContext &context)
 
static vector< string > GetExtensionDirectoryPath (DatabaseInstance &db, FileSystem &fs)
 
static bool CheckExtensionSignature (FileHandle &handle, ParsedExtensionMetaData &parsed_metadata, const bool allow_community_extensions)
 
static bool CheckExtensionBufferSignature (const char *buffer, idx_t buffer_length, const string &signature, const bool allow_community_extensions)
 
static bool CheckExtensionBufferSignature (const char *buffer, idx_t total_buffer_length, const bool allow_community_extensions)
 
static ParsedExtensionMetaData ParseExtensionMetaData (const char *metadata) noexcept
 
static ParsedExtensionMetaData ParseExtensionMetaData (FileHandle &handle)
 
static string ExtensionUrlTemplate (optional_ptr< const DatabaseInstance > db, const ExtensionRepository &repository, const string &version)
 Get the extension url template, containing placeholders for version, platform and extension name.
 
static string ExtensionFinalizeUrlTemplate (const string &url, const string &name)
 Return the extension url template with the variables replaced.
 
static idx_t DefaultExtensionCount ()
 
static DefaultExtension GetDefaultExtension (idx_t index)
 
static idx_t ExtensionAliasCount ()
 Extension can have aliases.
 
static ExtensionAlias GetExtensionAlias (idx_t index)
 
static const vector< string > GetPublicKeys (bool allow_community_extension=false)
 Get public signing keys for extension signing.
 
static string ExtractExtensionPrefixFromPath (const string &path)
 
static string GetRepositoryName (const string &repository_base_url)
 
static string ApplyExtensionAlias (const string &extension_name)
 Apply any known extension aliases, return the lowercase name.
 
static string GetExtensionName (const string &extension)
 
static bool IsFullPath (const string &extension)
 
template<size_t N>
static vector< pair< string, CatalogType > > FindExtensionInFunctionEntries (const string &name, const ExtensionFunctionEntry(&entries)[N])
 Lookup a name + type in an ExtensionFunctionEntry list.
 
template<idx_t N>
static idx_t ArraySize (const ExtensionEntry(&entries)[N])
 
template<idx_t N>
static const ExtensionEntryGetArrayEntry (const ExtensionEntry(&entries)[N], idx_t entry)
 
template<idx_t N>
static string FindExtensionInEntries (const string &name, const ExtensionEntry(&entries)[N])
 Lookup a name in an ExtensionEntry list.
 
template<idx_t N>
static void TryAutoloadFromEntry (DatabaseInstance &db, const string &entry, const ExtensionEntry(&entries)[N])
 Lookup a name in an extension entry and try to autoload it.
 
static bool CanAutoloadExtension (const string &ext_name)
 
static string WrapAutoLoadExtensionErrorMsg (ClientContext &context, const string &base_error, const string &extension_name)
 Utility functions for creating meaningful error messages regarding missing extensions.
 
static string AddExtensionInstallHintToErrorMsg (ClientContext &context, const string &base_error, const string &extension_name)
 
static string AddExtensionInstallHintToErrorMsg (DatabaseInstance &db, const string &base_error, const string &extension_name)
 
static const string GetVersionDirectoryName ()
 For tagged releases we use the tag, else we use the git commit hash.
 
static bool IsRelease (const string &version_tag)
 
static bool CreateSuggestions (const string &extension_name, string &message)
 
static string ExtensionInstallDocumentationLink (const string &extension_name)
 

Static Private Member Functions

static unique_ptr< ExtensionInstallInfoInstallExtensionInternal (DatabaseInstance &db, FileSystem &fs, const string &local_path, const string &extension, ExtensionInstallOptions &options, optional_ptr< ClientContext > context=nullptr)
 
static const vector< string > PathComponents ()
 
static vector< string > DefaultExtensionFolders (FileSystem &fs)
 
static bool AllowAutoInstall (const string &extension)
 
static ExtensionInitResult InitialLoad (DatabaseInstance &db, FileSystem &fs, const string &extension)
 
static bool TryInitialLoad (DatabaseInstance &db, FileSystem &fs, const string &extension, ExtensionInitResult &result, string &error)
 
static const string NormalizeVersionTag (const string &version_tag)
 Version tags occur with and without 'v', tag in extension path is always with 'v'.
 
static void LoadExternalExtensionInternal (DatabaseInstance &db, FileSystem &fs, const string &extension, ExtensionActiveLoad &info)
 
static ExtensionLoadResult LoadExtensionInternal (DuckDB &db, const std::string &extension, bool initial_load)
 

Member Function Documentation

◆ DefaultExtensionCount()

static idx_t duckdb::ExtensionHelper::DefaultExtensionCount ( )
static

Default extensions are all extensions that DuckDB knows and expect to be available (both in-tree and out-of-tree)

◆ FindExtensionInFunctionEntries()

template<size_t N>
static vector< pair< string, CatalogType > > duckdb::ExtensionHelper::FindExtensionInFunctionEntries ( const string &  name,
const ExtensionFunctionEntry(&)  entries[N] 
)
inlinestatic

Lookup a name + type in an ExtensionFunctionEntry list.

6348 {
6349 auto lcase = StringUtil::Lower(name);
6350
6351 vector<pair<string, CatalogType>> result;
6352 for (idx_t i = 0; i < N; i++) {
6353 auto &element = entries[i];
6354 if (element.name == lcase) {
6355 result.push_back(make_pair(element.extension, element.type));
6356 }
6357 }
6358 return result;
6359 }
static DUCKDB_API string Lower(const string &str)
Convert a string to lowercase.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ArraySize()

template<idx_t N>
static idx_t duckdb::ExtensionHelper::ArraySize ( const ExtensionEntry(&)  entries[N])
inlinestatic
6362 {
6363 return N;
6364 }

◆ GetArrayEntry()

template<idx_t N>
static const ExtensionEntry * duckdb::ExtensionHelper::GetArrayEntry ( const ExtensionEntry(&)  entries[N],
idx_t  entry 
)
inlinestatic
6367 {
6368 if (entry >= N) {
6369 return nullptr;
6370 }
6371 return entries + entry;
6372 }

◆ FindExtensionInEntries()

template<idx_t N>
static string duckdb::ExtensionHelper::FindExtensionInEntries ( const string &  name,
const ExtensionEntry(&)  entries[N] 
)
inlinestatic

Lookup a name in an ExtensionEntry list.

6376 {
6377 auto lcase = StringUtil::Lower(name);
6378
6379 auto it =
6380 std::find_if(entries, entries + N, [&](const ExtensionEntry &element) { return element.name == lcase; });
6381
6382 if (it != entries + N && it->name == lcase) {
6383 return it->extension;
6384 }
6385 return "";
6386 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TryAutoloadFromEntry()

template<idx_t N>
static void duckdb::ExtensionHelper::TryAutoloadFromEntry ( DatabaseInstance db,
const string &  entry,
const ExtensionEntry(&)  entries[N] 
)
inlinestatic

Lookup a name in an extension entry and try to autoload it.

6390 {
6391#ifndef DUCKDB_DISABLE_EXTENSION_LOAD
6392 if (Settings::Get<AutoloadKnownExtensionsSetting>(db)) {
6393 auto extension_name = ExtensionHelper::FindExtensionInEntries(entry, entries);
6394 if (ExtensionHelper::CanAutoloadExtension(extension_name)) {
6395 ExtensionHelper::AutoLoadExtension(db, extension_name);
6396 }
6397 }
6398#endif
6399 }
static string FindExtensionInEntries(const string &name, const ExtensionEntry(&entries)[N])
Lookup a name in an ExtensionEntry list.
Definition duckdb.cpp:6376
static void AutoLoadExtension(ClientContext &context, const string &extension_name)
Autoload an extension (depending on config, potentially a nop. Throws when installation fails)
static bool CanAutoloadExtension(const string &ext_name)
Here is the call graph for this function:

◆ CanAutoloadExtension()

static bool duckdb::ExtensionHelper::CanAutoloadExtension ( const string &  ext_name)
static

Whether an extension can be autoloaded (i.e. it's registered as an autoloadable extension in extension_entries.hpp)

Here is the caller graph for this function:

The documentation for this class was generated from the following file: