Skip to main content

Viewing Installed Extensions

Query installed extensions using the INFORMATION_SCHEMA view:
Output:
Usage:
  • Use in both interactive sessions and scripts
  • Standard SQL interface compatible with MySQL tools

Checking Extension Functions

Verify extension functions work after installation:

Extension Directory

Check where VillageSQL looks for .veb files:
List available extensions:

Configuring veb_dir

To change the extension directory location, set veb_dir in your MySQL configuration file: my.cnf / my.ini:
Requirements:
  • Path must be absolute (not relative)
  • Directory must exist before server start
  • MySQL user must have read permissions on the directory
  • Only one veb_dir is supported (cannot have multiple paths)
  • Changes require server restart to take effect
Verify after restart:

Troubleshooting

Quick Reference

Extension Not Found

Error: Extension 'my_extension' not found Debug steps:

Function Not Available After Install

Error: FUNCTION my_func does not exist Debug steps:

Cannot Uninstall Extension

Error: Cannot uninstall extension: types in use Solution:

Library Loading Errors

Error: Cannot load library: undefined symbol Causes:
  • Missing library dependencies
  • ABI compatibility mismatch
  • Incorrect MySQL version
Debug:

Extension Name Validation Errors

Error: Failed to load VEF extension 'extension_name' with log message Extension name mismatch Cause: The extension name in manifest.json doesn’t match the VEB filename or the name registered in the extension code. Debug steps:
  1. Check VEB filename matches manifest:
  2. Verify manifest.json name field:
  3. Check extension registration in code:
Solution: All three names must be identical (using underscores, not hyphens):
  • VEB filename: my_extension.veb
  • manifest.json: "name": "my_extension"
  • Extension code: make_extension("my_extension", ...)
Common mistakes:
  • Using hyphens in manifest: "name": "my-extension"
  • VEB filename doesn’t match: my-extension.veb vs "name": "my_extension"
  • Code registration differs: make_extension("myextension", ...)
Correct example:

Monitoring Extension Usage

Query Performance

Track UDF execution times using performance_schema:

Custom Type Usage

Track which tables use custom types:

Updating Extensions

To update an extension to a newer version, use the manual update process:
ALTER EXTENSION UPDATE is not supported in v0.0.2 and is planned for a future release.

Manual Update Process

  1. Uninstall the current version:
  2. Replace the .veb file:
  3. Install the new version:
  4. Verify the update:
Data Safety: If tables use custom types from the extension, you must drop or alter those tables before uninstalling. Back up your data first.
Example:

Cleaning Up

Remove Orphaned Expansion Directories

VillageSQL expands .veb files to _expanded/{name}/{sha256}/. Old versions accumulate over time.
Server restart automatically cleans up orphaned expansion directories.

Getting Help

If you encounter issues not covered here:
  1. Check Error Log: Most extension errors are logged with details
  2. Review Extension Docs: Extension-specific troubleshooting may exist
  3. Ask on Discord: Join the VillageSQL Discord
  4. File an Issue: Report bugs on GitHub Issues

Next Steps

System Reference

Query system tables and views

Uninstall Extensions

Remove extensions safely

Extension Architecture

Understand the internals