Skip to main content

Command Syntax

When VERSION is supplied, the server compares it against the installed extension’s version and aborts if they differ. Omit the clause to uninstall whatever version is currently installed.
You must remove all columns, stored procedure parameters, and DECLARE variables that use types from the extension before uninstalling. The uninstall process will then remove all functions and types provided by the extension.

Prerequisites

  • Administrative access to VillageSQL
  • No tables using custom types from the extension
  • No stored procedures with parameters or DECLARE variables using custom types from the extension
  • Backup of data if extension stores custom data

Uninstall Steps

1. Attempt Uninstall

Run the uninstall command. If the extension has no dependencies, it will succeed immediately. If columns depend on it, the error message identifies exactly which ones:
If the extension has column dependencies, you will see an error like:
Drop or alter the identified column(s), then retry:
If a stored procedure uses a custom type from the extension, you will see an error like:
Drop or alter the stored procedure to remove the typed parameter or variable, then retry:

2. Uninstall the Extension

To guard against uninstalling an unexpected version — useful in CI or after a rolling upgrade — include the VERSION clause:
If 1.2.0 is not the installed version, the server returns an error and leaves the extension in place:
What this removes:
  • ✅ All VDFs (functions) provided by the extension
  • ✅ Custom type definitions registered by the extension
  • ✅ Extension registration record
  • ✅ Custom column metadata for the extension
  • ✅ Persisted system variables (SET PERSIST) for the extension from mysqld-auto.cnf
What this does NOT remove:
  • ❌ The .veb file remains in veb_dir
  • ❌ Expanded directories in {datadir}/.veb_expansion_cache/ remain temporarily
  • ❌ Table data (you must drop tables with custom types first)
Expansion directories in {datadir}/.veb_expansion_cache/{extension}/{sha256}/ are cleaned up automatically on server restart.
UNINSTALL EXTENSION also removes any persisted system variables belonging to the extension from mysqld-auto.cnf. If you previously ran SET PERSIST extensionname.varname = value, that entry is deleted automatically during uninstall. Persisted values are not removed during server shutdown — they survive a restart cycle so the extension can read them on next load.
Uninstalling an extension that has a pending version change (a queued ALTER EXTENSION name VERSION 'x' AT RESTART) discards that pending action along with the extension row — there is no orphaned pending state to clean up, and no error. A later INSTALL EXTENSION starts fresh with no pending action. See Managing Extensions for how pending version changes are tracked and cleared.

3. Verify Uninstall

Common Errors

Optional: Remove .veb File

The .veb file remains after uninstall. To remove completely:
The .veb file can be kept safely for future reinstallation. Deleting it does not affect server performance.

Reinstalling

To reinstall an extension, use INSTALL EXTENSION again (if .veb file still exists):
See Installing Extensions for details.

Next Steps

Install Extensions

Add extensions back if needed

Managing Extensions

Monitor and troubleshoot extensions

System Reference

Query system tables