Skip to main content
Install VillageSQL extensions to add custom types, functions, and capabilities to your database.

Command Syntax

INSTALL EXTENSION extension_name;
Extensions are distributed as .veb (VillageSQL Extension Bundle) files containing compiled libraries and metadata.

Extension Naming Conventions

VillageSQL uses different naming conventions in different contexts:
  • SQL commands: Use underscores: INSTALL EXTENSION vsql_uuid
  • Repository names: Use hyphens: github.com/villagesql/vsql-uuid
  • File names: Use underscores: vsql_uuid.veb
  • manifest.json: Use underscores to match SQL: "name": "vsql_uuid"
Example:
# Clone from GitHub repo (hyphens in URL)
git clone https://github.com/villagesql/vsql-uuid

# But .veb file uses underscores
ls vsql_uuid.veb

# Install with underscores (no quotes)
INSTALL EXTENSION vsql_uuid;

Prerequisites

  • Running VillageSQL Server instance
  • Administrative access (root or equivalent)
  • Extension .veb file in veb_dir (check with SHOW VARIABLES LIKE 'veb_dir';)

Installing Built-in Extensions

Built-in extensions included with VillageSQL are already in the veb_dir. Simply enable them:
-- Connect to VillageSQL
mysql -u root -p

-- Install the extension
INSTALL EXTENSION vsql_complex;

Verify Installation

-- List installed extensions
SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS;
Output:
+------------------+-------------------+
| EXTENSION_NAME   | EXTENSION_VERSION |
+------------------+-------------------+
| vsql_complex     | 0.0.1             |
+------------------+-------------------+

Test Functionality

-- Create a database first
CREATE DATABASE test_db;
USE test_db;

-- Test extension functions
CREATE TABLE test (id INT, value COMPLEX);
INSERT INTO test VALUES (1, '(3,4)');
SELECT complex_abs(value) FROM test;  -- Returns 5.0

-- Clean up
DROP TABLE test;
DROP DATABASE test_db;

Installing External Extensions

For extensions downloaded or built separately:

1. Find VEF Directory

SHOW VARIABLES LIKE 'veb_dir';

2. Copy Extension File

# Copy .veb file to veb_dir
sudo cp my-extension.veb /path/to/veb_dir/

# Verify file exists
ls -l /path/to/veb_dir/*.veb

3. Install Extension

INSTALL EXTENSION my_extension;

4. Verify Installation

SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS WHERE EXTENSION_NAME = 'my_extension';

Troubleshooting

IssueSolution
Extension not foundVerify .veb file is in veb_dir with correct name
Permission deniedCheck file permissions: chmod 644 extension.veb
For more troubleshooting, see Managing Extensions.

Next Steps

Managing Extensions

Monitor and troubleshoot installed extensions

Available Extensions

Browse extensions you can install

Create Extensions

Build your own extensions