Skip to main content

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.

Query extension metadata and server state using the standard SQL interfaces below.

System Views

INFORMATION_SCHEMA.EXTENSIONS

Lists all currently installed VillageSQL extensions.
INSTALL EXTENSION and UNINSTALL EXTENSION are VillageSQL SQL extensions. They are not part of standard MySQL 8.4 syntax.
Known columns:
ColumnTypeDescription
EXTENSION_NAMEvarcharName of the installed extension
EXTENSION_VERSIONvarcharVersion string reported by the extension
Example:
-- Install an extension (VillageSQL-specific syntax)
INSTALL EXTENSION vsql_complex;

-- List all installed extensions
SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS;

-- Check a specific extension's version
SELECT EXTENSION_VERSION
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_complex';
Illustrative output (actual version strings depend on installed extensions):
+------------------+-------------------+
| EXTENSION_NAME   | EXTENSION_VERSION |
+------------------+-------------------+
| vsql_complex     | 0.0.1             |
| vsql_uuid        | 0.2.1             |
+------------------+-------------------+
EXTENSION_NAME values are lowercase, matching the name passed to make_extension(). The view reflects the current installed state.

INFORMATION_SCHEMA.COLUMNS (Custom Types)

Columns using custom extension types are visible through the standard INFORMATION_SCHEMA.COLUMNS view. Custom types appear as extension_name.type_name in the DATA_TYPE and COLUMN_TYPE columns (e.g., vsql_complex.COMPLEX). Example:
-- Find all columns using custom extension types
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE '%.%'
ORDER BY TABLE_SCHEMA, TABLE_NAME;

-- Find columns using a specific extension's types
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%';
Sample Output:
+--------------+------------+-------------+---------------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | DATA_TYPE           |
+--------------+------------+-------------+---------------------+
| mydb         | signals    | impedance   | vsql_complex.COMPLEX|
| mydb         | signals    | frequency   | vsql_complex.COMPLEX|
+--------------+------------+-------------+---------------------+

INFORMATION_SCHEMA.EXTENSION_REGISTRATION

Exposes the in-memory VEF registration struct for each loaded extension as a JSON document. Use it to verify that the server parsed your extension’s functions, types, and system variables correctly after INSTALL EXTENSION.
SELECT EXTENSION_NAME, NEGOTIATED_PROTOCOL, REGISTRATION_JSON
FROM INFORMATION_SCHEMA.EXTENSION_REGISTRATION
WHERE EXTENSION_NAME = 'vsql_complex';
ColumnTypeDescription
EXTENSION_NAMEVARCHAR(64)Name of the installed extension.
NEGOTIATED_PROTOCOLBIGINT UNSIGNEDVEF protocol version negotiated between the extension and the server.
REGISTRATION_JSONTEXTJSON serialization of the vef_registration_t struct, including funcs, types, and sys_vars arrays.

Common Queries

Find Extension Dependencies

Find which columns use a specific extension’s types before uninstalling:
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%';

List All Extensions and Their Custom Type Columns

-- All installed extensions
SELECT EXTENSION_NAME, EXTENSION_VERSION
FROM INFORMATION_SCHEMA.EXTENSIONS
ORDER BY EXTENSION_NAME;

-- All columns using custom types across all extensions
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE '%.%'
ORDER BY DATA_TYPE, TABLE_SCHEMA, TABLE_NAME;

Find Tables Using Extension Types

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%'
ORDER BY TABLE_SCHEMA, TABLE_NAME;

System Variables

veb_dir

Read-only at runtime. Path to the directory where the server looks for .veb extension bundle files. Set in my.cnf under [mysqld]; cannot be changed without a server restart.
SHOW VARIABLES LIKE 'veb_dir';
Scope: Global, read-only at runtime. Configure in my.cnf:
[mysqld]
veb_dir=/path/to/extensions/
Only a single directory is supported. See Managing Extensions for placement and troubleshooting.

villagesql_server_version

Read-only global variable. Returns the VillageSQL version string compiled into the server binary. This is distinct from villagesql_schema_version, which tracks the internal metadata catalog version.
SELECT @@villagesql_server_version;
-- Example output: 0.0.4-dev

-- Show all VillageSQL system variables at once
SHOW VARIABLES LIKE 'villagesql_%';
Scope: Global, read-only. Cannot be set at runtime.

villagesql_vef_server_protocol

Read-only global variable. Returns the highest VEF protocol version supported by this server build. Extension authors can compare this value against the protocol constants in types.h to determine which ABI features are available during registration.
SELECT @@villagesql_vef_server_protocol;
PropertyValue
ScopeGlobal
AccessRead-only
TypeUnsigned integer (0255)
Current value2 (VEF_PROTOCOL_2)
The value reflects the compile-time constant vef_server_protocol_version and cannot be changed at runtime.

Next Steps

Managing Extensions

Monitor and troubleshoot extensions

Install Extensions

Add new extensions

Extension Architecture

Understand the internals

Available Extensions

Browse extension catalog