aiondb-extension

Trait-based framework for compiled-in extensions. Each extension is a Rust struct that implements Extension, declares metadata, and registers scalar functions through an ExtensionRegistrar. The ExtensionRegistry tracks which extensions are available and which have been installed via CREATE EXTENSION.

cargo

[dependencies]
aiondb-extension = { path = "../aiondb-extension" }

modules

modulepurpose
registryExtensionRegistry, ExtensionDescriptor, ExtensionFunction, InstalledExtension.
builtin::uuid_osspthe uuid-ossp built-in extension.
builtin::pgcryptothe pgcrypto built-in extension.
builtin::vectorthe vector built-in extension, exposing the distance functions used by similarity search.

key types

itemdescription
Extension traitimplemented by every extension; exposes name, version, description, dependencies, install, upgrade.
ExtensionRegistrar traitcallback passed to install, with register_function.
ExtensionEvalFnfn(&[Value]) -> DbResult<Value> used for native scalar evaluation.
ExtensionFunctionname, return type, arity bounds, native eval function.
ExtensionDescriptorname, default version, description, dependencies.
InstalledExtensionOID, name, version, relocatable flag for pg_extension.
ExtensionRegistrylist_available, list_installed, is_installed, lookup_function, installed_version, install_extension, drop_extension, alter_extension_update.
UuidOsspExtensionbuilt-in uuid-ossp (uuid_generate_v1, uuid_generate_v4, uuid_nil, namespace UUIDs).
PgcryptoExtensionbuilt-in pgcrypto.
VectorExtensionbuilt-in vector -- pgvector compatibility marker. AionDB exposes the vector type, distance functions (l2_distance, cosine_distance, inner_product, manhattan_distance), and ANN index support as engine built-ins; this extension only writes a pg_extension row so CREATE EXTENSION vector succeeds for pgvector migrations. The reported extension version is 0.8.2.

example

use aiondb_extension::ExtensionRegistry;

let registry = ExtensionRegistry::new();
assert!(!registry.is_installed("uuid-ossp"));

registry
    .install_extension("uuid-ossp", false)
    .expect("install uuid-ossp");

assert!(registry.is_installed("uuid-ossp"));
let _ = registry.lookup_function("uuid_generate_v4");