VillageSQL 带有内置扩展,并支持由 VillageSQL 团队构建和维护的官方扩展。使用 INSTALL EXTENSION 安装其中任何一个。
内置扩展
从源代码构建时,仅包含 vsql_complex 和 vsql_simple。以下官方扩展在单独的存储库中维护。
vsql_complex
状态: VillageSQL 内置
存储库: villagesql-server/villagesql/examples/vsql-complex
用于电气工程、信号处理和科学计算的具有完整算术支持的复数数据类型。
特性:
COMPLEX 列类型,用于存储复数(a + bi)
- 字符串字面量格式:
'(real,imaginary)'(例如,'(3.0,4.0)')
- 算术运算:加、减、乘、除
- 实用程序:
complex_real()、complex_imag()、complex_abs()、complex_conjugate()
- 二进制存储:16 字节(2 个双精度浮点数)
安装:
示例:
核心扩展
以下扩展在单独的存储库中维护,必须单独构建和安装。每个扩展都提供自己的安装说明和文档。
vsql_ai
存储库: villagesql/vsql-ai
基于 AI 的 SQL 函数。用于 SQL 查询的 AI 提示和嵌入函数。支持 Anthropic Claude、Google Gemini、OpenAI 和本地 Ollama。
vsql_crypto
存储库: villagesql/vsql-crypto
密码学函数。使用 OpenSSL 进行哈希(MD5、SHA-1、SHA-256、SHA-512 等)、HMAC、AES 加密、密码哈希和安全随机数据生成。
vsql_cube
存储库: villagesql/vsql-cube
N 维盒子和点类型。存储和查询最多 100 维的几何盒子和点,具有构造函数、访问器、谓词、距离和几何函数。需要 VillageSQL 0.0.4。
vsql_http
存储库: villagesql/vsql-http
HTTP 客户端函数。从 SQL 查询中发出 HTTP 请求——GET、POST、PUT、DELETE、PATCH——具有 JSON 响应,以及 URL 编码和解码。
vsql_network_address
存储库: villagesql/vsql-network-address
网络地址类型。IPv4、IPv6 和 MAC 地址数据类型,具有验证、比较和网络操作。
vsql_uuid
存储库: villagesql/vsql-uuid
UUID 数据类型和函数。在 SQL 中本地生成和使用 UUID——v1、v3、v4、v5、v6 和 v7——具有本地 16 字节 UUID 类型、时间戳提取和比较。
vsql_boolean
存储库: villagesql/vsql-boolean
真正的布尔类型。提供真正的 STRICTBOOL 列类型,支持标准真值(true/false、yes/no、on/off、1/0)、1 字节存储以及正确的导出/恢复语义。包含聚合函数 boolean_sum(),以 INT 返回组内 TRUE 值的数量;以及 boolean_avg(),以 REAL 返回 TRUE 值的比例(真值数量 ÷ 非空数量)。两者都会忽略 NULL,且 boolean_avg() 对空组返回 NULL。
vsql_rest
存储库: villagesql/vsql-rest
REST API 服务器。无需编写代码即可将数据库表公开为实时 HTTP/HTTPS 端点。使用 SET GLOBAL 进行配置,通过 URL 过滤器查询表,并经由 /rpc/ 调用存储函数。 此为预览功能,需要服务器以 --vsql_allow_preview_extensions=ON 启动。
vsql_trgm
存储库: villagesql/vsql-trgm
基于三元字符的文本相似度搜索。PostgreSQL pg_trgm 的移植版本。计算字符串之间的相似度得分、在列中查找近似匹配项、测量词级相似度——全部在 SQL 中完成。需要 VillageSQL 0.0.4。
vsql_fuzzystrmatch
存储库: villagesql/vsql-fuzzystrmatch
模糊字符串匹配函数。PostgreSQL fuzzystrmatch 的移植版本。提供 Soundex 语音编码、Levenshtein 编辑距离(可配置开销与提前退出阈值)、Metaphone 和 Double Metaphone,可用于姓名匹配、拼写纠正和语音去重。需要 VillageSQL 0.0.4。
vsql_currency
存储库: villagesql/vsql-currency
ISO 4217 货币代码类型。currency 列类型以单个字节存储 164 种货币代码中的任意一种,输入不区分大小写,输出为规范的大写形式,支持按字母顺序排序和索引。adjust/pg-currency 的 Rust 移植版本。
vsql_oauth2
存储库: villagesql/vsql-oauth2
OAuth2/OIDC JWT 身份验证。使用 IDENTIFIED WITH vsql_oauth2 创建的账户通过提供 JWT 而非密码进行身份验证。该扩展使用配置的 RS256/ES256 公钥验证签名,检查 exp(配置后还会检查 iss/aud),然后将声明映射到 VillageSQL 账户。此为预览功能,需要服务器以 --vsql_allow_preview_extensions=ON 启动。
vsql_stat_ch
存储库: villagesql/vsql-stat-ch
发送到 ClickHouse 的逐语句遥测数据。为每条执行完成的语句捕获一个事件,并通过 ClickHouse 原生协议(端口 9000)或 HTTP(端口 8123)批量发送。传输方式可在服务器运行期间切换。此为预览功能,需要服务器以 --vsql_allow_preview_extensions=ON 启动。
vsql_mcp
存储库: villagesql/vsql-mcp
Model Context Protocol 服务器。通过 MCP Streamable HTTP 将数据库作为工具接口暴露给 AI 代理,监听器运行在服务器进程内部。代理可以列出模式、描述表并执行只读查询;写入在您启用之前保持关闭。工具查询通过专用数据库账户执行,并可选配表允许列表、行数上限和每次调用的超时。此为预览功能,需要服务器以 --vsql_allow_preview_extensions=ON 启动。
社区扩展
社区扩展由第三方使用 VillageSQL 扩展框架 (VEF) 构建。它们不由 VillageSQL 团队维护。
vsql_statistics
存储库: ronaldbradford/vsql-statistics
维护者: Ronald Bradford
用于数据分析的统计聚合函数。IQR、四分位数、中位数和 Tukey 栅栏异常值检测——STATS_IQR。需要 VillageSQL 0.0.4。
prometheus_exporter
存储库: ProxySQL/vsql-prometheus-exporter
维护者: ProxySQL
嵌入式 Prometheus 指标导出器。在 Prometheus 暴露格式的 HTTP /metrics 端点处公开 MySQL 服务器指标——全局状态、全局变量、InnoDB 指标和复制状态。
vsql_luhn
存储库: intojhanurag/vsql-luhn
维护者: intojhanurag
Luhn 算法验证器和校验位生成器。使用 luhn_valid() 验证信用卡号、IMEI 码、加拿大 SIN 及其他行业标识符,并使用 luhn_checkdigit() 生成正确的校验位。
vsql_nanoid
存储库: intojhanurag/vsql-nanoid
维护者: intojhanurag
用于生成简短、URL 安全的唯一标识符的 NanoID 生成器。nanoid() 返回 21 个字符的 ID;nanoid_with(size[, alphabet]) 可自定义长度和字符集。使用密码学安全的随机源。
vsql_slugify
存储库: intojhanurag/vsql-slugify
维护者: intojhanurag
从任意文本生成 URL 安全的 slug——折叠重音、转换为小写、将非字母数字字符合并为单个分隔符,并去除首尾分隔符。
vsql_pgjwt
存储库: intojhanurag/vsql-pgjwt
维护者: intojhanurag
直接在 SQL 中签名、验证和解码 JSON Web Token。支持 HMAC(HS256、HS384、HS512)和 RSA(RS256)算法。
vsql_address_standardizer
存储库: jobala/vsql-address-standardizer
维护者: Japheth Obala
将自由格式的美国邮政地址解析为门牌号、街道、后缀、城市、州和邮政编码等组成部分。此扩展的灵感来自 PostgreSQL 的 contrib address_standardizer。