Skip to main content
VillageSQL ships with built-in extensions and supports official extensions built and maintained by the VillageSQL team. Install any of them with INSTALL EXTENSION.

Built-in Extensions

When building from source, only vsql_complex and vsql_simple are included. To get the full set of bundled extensions, use the install script.

vsql_complex

Status: Built-in with VillageSQL Repository: villagesql-server/villagesql/examples/vsql-complex Complex number data type with full arithmetic support for electrical engineering, signal processing, and scientific computing. Features:
  • COMPLEX column type for storing complex numbers (a + bi)
  • String literal format: '(real,imaginary)' (e.g., '(3.0,4.0)')
  • Arithmetic: add, subtract, multiply, divide
  • Utilities: complex_real(), complex_imag(), complex_abs(), complex_conjugate()
  • Binary storage: 16 bytes (2 doubles)
Installation:
Example:

Core Extensions

The following extensions are maintained in separate repositories and must be built and installed separately. Each provides its own installation instructions and documentation.

vsql_ai

Repository: villagesql/vsql-ai AI-powered SQL functions. AI prompting and embedding functions for SQL queries. ai_prompt() supports Anthropic Claude, Google Gemini, OpenAI, and local Ollama; ai_embedding() supports Google Gemini, OpenAI, and local Ollama.

vsql_crypto

Repository: villagesql/vsql-crypto Cryptographic functions. Hashing (MD5, SHA-1, SHA-256, SHA-512, and more), HMAC, AES encryption, password hashing, and secure random data generation using OpenSSL.

vsql_cube

Repository: villagesql/vsql-cube N-dimensional box and point type. Store and query geometric boxes and points across up to 100 dimensions, with constructor, accessor, predicate, distance, and geometry functions. Requires VillageSQL 0.0.4.

vsql_http

Repository: villagesql/vsql-http HTTP client functions. Make HTTP requests from SQL queries — GET, POST, PUT, DELETE, PATCH — with JSON responses, plus URL encoding and decoding.

vsql_network_address

Repository: villagesql/vsql-network-address Network address types. IPv4, IPv6, and MAC address data types with validation, comparison, and network operations.

vsql_uuid

Repository: villagesql/vsql-uuid UUID data type and functions. Generate and work with UUIDs natively in SQL — v1, v3, v4, v5, v6, and v7 — with a native 16-byte UUID type, timestamp extraction, and comparison.

vsql_boolean

Repository: villagesql/vsql-boolean Real boolean type. A proper STRICTBOOL column type with standard truth values (true/false, yes/no, on/off, 1/0), 1-byte storage, and correct dump/restore semantics. Includes the aggregates boolean_sum(), which returns the count of TRUE values in a group as an INT, and boolean_avg(), which returns the fraction of TRUE values (true count ÷ non-null count) as a REAL. Both ignore NULLs; boolean_avg() returns NULL for an empty group.

vsql_rest

Repository: villagesql/vsql-rest REST API server. Expose database tables as live HTTP/HTTPS endpoints — no code required. Configure with SET GLOBAL, query tables using URL filters, and call stored functions via /rpc/. Preview capability: requires a server started with --vsql_allow_preview_extensions=ON.

vsql_trgm

Repository: villagesql/vsql-trgm Trigram-based text similarity search. Port of PostgreSQL’s pg_trgm. Compute similarity scores between strings, find near-matches in a column, and measure word-level similarity — all from SQL. Requires VillageSQL 0.0.4.

vsql_fuzzystrmatch

Repository: villagesql/vsql-fuzzystrmatch Fuzzy string matching functions. Port of PostgreSQL’s fuzzystrmatch. Soundex phonetic codes, Levenshtein edit distance (with configurable costs and early-exit threshold), Metaphone, and Double Metaphone — for name matching, spelling correction, and phonetic deduplication. Requires VillageSQL 0.0.4.

vsql_currency

Repository: villagesql/vsql-currency ISO 4217 currency code type. A currency column type holding any of 164 currency codes in a single byte, with case-insensitive input, canonical uppercase output, alphabetical ordering, and index support. Rust port of adjust/pg-currency.

vsql_oauth2

Repository: villagesql/vsql-oauth2 OAuth2/OIDC JWT authentication. An account created with IDENTIFIED WITH vsql_oauth2 authenticates by presenting a JWT instead of a password. The extension verifies the signature against a configured RS256/ES256 public key, checks exp — and iss/aud when configured — then maps a claim to a VillageSQL account. Preview capability: requires a server started with --vsql_allow_preview_extensions=ON.

vsql_stat_ch

Repository: villagesql/vsql-stat-ch Per-statement telemetry to ClickHouse. Captures one event per finished statement and ships batches over ClickHouse’s native protocol (port 9000) or HTTP (port 8123), switchable while the server is running. Preview capability: requires a server started with --vsql_allow_preview_extensions=ON.

Community Extensions

Community extensions are built by third parties using the VillageSQL Extension Framework (VEF). They are not maintained by the VillageSQL team.

vsql_statistics

Repository: ronaldbradford/vsql-statistics Maintainer: Ronald Bradford Statistical aggregate functions for data analysis. IQR, quartiles, median, and Tukey fence outlier detection. STATS_IQR returns them as fields of a JSON object ($.q1, $.q3, $.median, $.lower_fence, $.upper_fence); read them with JSON_EXTRACT(). Requires VillageSQL 0.0.4.

prometheus_exporter

Repository: ProxySQL/vsql-prometheus-exporter Maintainer: ProxySQL Embedded Prometheus metrics exporter. Exposes MySQL server metrics at an HTTP /metrics endpoint in Prometheus exposition format — global status, global variables, InnoDB metrics, and replication status.

vsql_luhn

Repository: intojhanurag/vsql-luhn Maintainer: intojhanurag Luhn algorithm validator and check-digit generator. Validate credit card numbers, IMEI codes, Canadian SINs, and other industry identifiers with luhn_valid(), and generate correct check digits with luhn_checkdigit().

vsql_nanoid

Repository: intojhanurag/vsql-nanoid Maintainer: intojhanurag NanoID generator for short, URL-safe unique identifiers. nanoid() returns a 21-character ID; nanoid_with(size[, alphabet]) customizes the length and character set. Uses a cryptographically secure random source.

vsql_slugify

Repository: intojhanurag/vsql-slugify Maintainer: intojhanurag Generates URL-safe slugs from arbitrary text — folding accents, lowercasing, collapsing non-alphanumerics into a single separator, and trimming leading/trailing separators.

vsql_pgjwt

Repository: intojhanurag/vsql-pgjwt Maintainer: intojhanurag Signs, verifies, and decodes JSON Web Tokens directly in SQL. Supports HMAC (HS256, HS384, HS512) and RSA (RS256) algorithms.

vsql_address_standardizer

Repository: jobala/vsql-address-standardizer Maintainer: Japheth Obala Parses freeform US postal addresses into their components — house number, street, suffix, city, state & zip. This extension was inspired by PostgreSQL’s contrib address_standardizer.