> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Uninstalling Extensions

> Remove VillageSQL extensions safely

## Command Syntax

```sql theme={null}
UNINSTALL EXTENSION extension_name;
```

<Warning>
  You must remove all columns and variables that use types from the extension before uninstalling. The uninstall process will then remove all functions and types provided by the extension.
</Warning>

## Prerequisites

* Administrative access to VillageSQL
* No tables 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:

```sql theme={null}
UNINSTALL EXTENSION vsql_complex;
```

**If the extension has dependencies**, you will see an error like:

```
ERROR HY000: Cannot drop extension `vsql_complex` as 1 column(s) depend on it,
e.g. mydb.signals.impedance has type COMPLEX
```

Drop or alter the identified column(s), then retry:

```sql theme={null}
-- Option 1: Drop the table
DROP TABLE mydb.signals;

-- Option 2: Alter to remove only the custom type column
ALTER TABLE mydb.signals DROP COLUMN impedance;
```

### 2. Uninstall the Extension

```sql theme={null}
UNINSTALL EXTENSION vsql_complex;
```

**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

**What this does NOT remove:**

* ❌ The `.veb` file remains in `veb_dir`
* ❌ Expanded directories in `_expanded/` remain temporarily
* ❌ Table data (you must drop tables with custom types first)

<Note>
  Expansion directories in `_expanded/{extension}/{sha256}/` are cleaned up automatically on server restart.
</Note>

### 3. Verify Uninstall

```sql theme={null}
-- Check extension is gone
SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS WHERE EXTENSION_NAME = 'vsql_complex';
-- Should return no rows

-- Verify functions removed
SELECT complex_abs('(1.0,2.0)');
-- Error: FUNCTION test_db.complex_abs does not exist
```

## Common Errors

| Error                                                                                          | Cause                                                  | Solution                                                  |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------- |
| `Cannot drop extension \`name\` as N column(s) depend on it, e.g. db.table.col has type TYPE\` | Tables have columns using the extension's custom types | Drop or alter the identified columns, then retry          |
| `Extension not found`                                                                          | Extension not installed                                | Verify with `SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS` |

## Optional: Remove .veb File

The `.veb` file remains after uninstall. To remove completely:

```bash theme={null}
# Find veb_dir
mysql -u root -p -e "SHOW VARIABLES LIKE 'veb_dir';"

# Delete .veb file
sudo rm /path/to/veb_dir/vsql_complex.veb
```

<Note>
  The .veb file can be kept safely for future reinstallation. Deleting it does not affect server performance.
</Note>

## Reinstalling

To reinstall an extension, use `INSTALL EXTENSION` again (if .veb file still exists):

```sql theme={null}
INSTALL EXTENSION vsql_complex;
```

See [Installing Extensions](/docs/mysql-8.4/0.0.3/install) for details.

## Next Steps

<CardGroup cols={2}>
  <Card title="Install Extensions" icon="download" href="/docs/mysql-8.4/0.0.3/install">
    Add extensions back if needed
  </Card>

  <Card title="Managing Extensions" icon="sliders" href="/docs/mysql-8.4/0.0.3/managing">
    Monitor and troubleshoot extensions
  </Card>

  <Card title="System Reference" icon="book" href="/docs/mysql-8.4/0.0.3/reference">
    Query system tables
  </Card>
</CardGroup>
