Oliphaunt

Extensions

Select exact PostgreSQL extension names and verify the artifacts that enter each app package.

Oliphaunt uses exact, opt-in PostgreSQL extension selection. App developers choose the SQL extension names their app needs, and release artifacts contain only those selected extensions plus mandatory dependencies declared by the extension metadata.

There are no extension packs, aliases, grouped selectors, or implicit expansion. Selecting vector means selecting the PostgreSQL extension named vector.

Extension selection is exact SQL extension name only.

If an app selects vector, the app artifact contains vector and its declared dependencies. Unrelated search, geo, graph, or development-only extension files stay out of that app artifact.

Extension packaging flow

The selector is the SQL extension name. Build tooling handles target artifacts and dependency metadata.

  1. 1

    Select SQL names

    Choose extension names such as vector in SDK configuration before opening.

  2. 2

    Resolve dependencies

    Include only dependencies declared by the selected extension metadata.

  3. 3

    Package artifacts

    Swift, Kotlin, React Native, desktop, and WASM tooling package target artifacts.

  4. 4

    Verify the app

    Report selected names, included files, dependency files, target, and package-size cost.

How Selection Works

Select extensions before opening the database:

use oliphaunt::{Extension, Oliphaunt};

# async fn demo() -> oliphaunt::Result<()> {
let db = Oliphaunt::builder()
    .temporary()
    .native_direct()
    .extension(Extension::Vector)
    .open()
    .await?;

db.execute("CREATE EXTENSION vector").await?;
# Ok(())
# }

CREATE EXTENSION succeeds when the selected runtime resources contain that extension for the target platform. The SDK loads only the selected extension artifacts and their declared dependencies.

Platform Behavior

PlatformExpected behavior
Rust/Tauri desktopSDK resolves selected runtime extension artifacts for the target
iOS/macOS SwiftApp bundle includes selected extension artifacts and dependencies only
Android KotlinAndroid package includes selected extension artifacts and dependencies only
React NativeConfig plugin delegates selection to Swift/Kotlin packaging
TypeScript desktopSDK resolves selected runtime artifacts or helper-process resources
WASMWASM assets include selected extension artifacts built for the WASIX runtime

Dependencies

Some PostgreSQL extensions depend on other extensions or runtime files. Those dependencies are explicit metadata. If earthdistance declares cube as a dependency, selecting earthdistance may include cube; selecting vector includes vector and its declared dependencies only.

External Extensions

External extensions are distributed as exact extension artifacts or indexes. Consumer apps select them by SQL extension name. If a developer provides a verified custom artifact for acme_ext, the app selects acme_ext.

Each promoted exact extension has its own product tag, changelog, and package version. The PostgreSQL contrib bundle and both runtime products are versioned independently. Exact compatibility metadata creates directed dependency edges: a changed dependency may select its consumer, but never the reverse. External extension packages own independent packaging SemVer; their immutable upstream version/commit and compatible Oliphaunt runtime versions are separate metadata. Do not assume an external package version matches either its upstream project version or the runtime version.

Verifying App Artifacts

Before release, app tooling reports:

  • selected SQL extension names;
  • included extension files;
  • mandatory dependencies;
  • package-size contribution per extension;
  • target platform and architecture.

That report lets developers confirm that an app using only vector ships vector and its declared dependencies, without unrelated extension artifacts.

On this page