pg-jev开发者指南:从PGXS构建到PGXN发布的PostgreSQL扩展完整旅程

发布时间:2026/10/15 15:11:56

pg-jev开发者指南:从PGXS构建到PGXN发布的PostgreSQL扩展完整旅程 人工智能AI 应用大模型后端【免费下载链接】pg-jevAsk your Postgres tables questions in plain language. A PostgreSQL extension powered by TypeSafes Jev.项目地址https://gitcode.com/gh_mirrors/pg/pg-jev点击查看免费下载pg-jev 是一个 PostgreSQL 扩展extension让你用纯自然语言对 Postgres 表提问由 TypeSafe 的 Jev 模型逐行判断。本文以 pg-jev 为真实案例带你完整走一遍 PostgreSQL 扩展开发者的全流程PGXS 构建、版本化 SQL 脚本、回归测试直到打包并发布到 PGXN。 先认识 pg-jev一条会听懂人话的 WHERE 子句装好扩展后你可以在 SQL 里这样写CREATE EXTENSION jev CASCADE; SELECT * FROM people WHERE jev(people, the name is European);jev()是普通布尔函数可以自由搭配AND、JOIN、GROUP BY、ORDER BY。除布尔判断外还提供jev_prob()概率、jev_score()评分、jev_choice()分类等一族函数且无需索引、无需向量列。⚠️ 前置要求PostgreSQL 14–17、plpython3u插件、超级用户权限因为plpython3u是不可信语言。 一眼看懂项目结构4 个核心文件理解一个 PostgreSQL 扩展先看这 4 个文件文件作用jev.control扩展身份证声明default_version 0.2.1、requires plpython3usql/jev--0.2.1.sql完整安装脚本扩展的全部实体都在这MakefilePGXS 构建入口让make install一行搞定META.jsonPGXN 元数据名称、版本、依赖、标签值得玩味的是pg-jev 的扩展体是一个 PL/Python 函数加一堆 SQL 包装函数没有任何 C 代码因此整个构建过程没有编译步骤。⚙️ PGXS 构建详解一条 make install 背后发生了什么PGXSPostgreSQL Extension Build System是官方提供的构建框架。Makefile 的核心逻辑只有十来行EXTENSION jev EXTVERSION $(shell grep default_version $(EXTENSION).control | ...) DATA $(wildcard sql/$(EXTENSION)--*.sql) PGXS : $(shell $(PG_CONFIG) --pgxs) include $(PGXS)拆开看版本号不是写死的——直接从 jev.control 的default_version提取保证两者永不失同步DATA自动收集sql/jev--*.sql下所有脚本新增升级脚本无需改 Makefileinclude $(PGXS)引入官方 Makefileinstall、installcheck等 target 全部免费获得。实际构建只需三步git clone https://gitcode.com/gh_mirrors/pg/pg-jev cd pg-jev make install # 可加 PG_CONFIG/path/to/pg_config 指定服务器版本 psql -c CREATE EXTENSION jev CASCADE # CASCADE 会自动创建 plpython3umake install会把 control 文件和 SQL 脚本复制到服务器 extension 目录。如果pg_config不在 PATH或目录无写权限记得指定PG_CONFIG或用sudo。 版本化 SQL 脚本发布流程的地基sql/ 目录下的文件遵循 PostgreSQL 扩展的命名惯例jev--0.1.0.sql、jev--0.2.0.sql、jev--0.2.1.sql各版本的完整安装脚本供CREATE EXTENSION jev VERSION x.y.z使用jev--0.2.0--0.2.1.sql升级脚本供ALTER EXTENSION jev UPDATE使用。pg-jev 的所有对象都用CREATE OR REPLACE定义所以升级脚本几乎就是主脚本的复制品只把开头守卫改成ALTER EXTENSION jev UPDATE见 CONTRIBUTING.md 的 Versioning an SQL change 一节。这套约定让用户可以平滑地ALTER EXTENSION jev UPDATE而不必重建。 不调用真实 API 的回归测试扩展功能依赖外部 API如何做到测试免费且确定pg-jev 的答案是一个模拟服务器 test/mock_api.pynoul是/否问题 → 条件中最后一个词出现在该行 JSON 里则返回 0.9否则 0.1score/choice→ 用行 JSON 长度取模确定档位条件里包含trigger422→ 故意返回 HTTP 422 用于测错误路径。有了它测试套件完全离线运行make installcheck # 对运行中的服务器跑 pg_regress python3 test/mock_api.py # 本地手动跑时需要先启动 mock make docker-test PG_MAJOR17 # 或整个容器里跑完整回归默认 PG 16只跑部分用例可用make installcheck REGRESS01_basic 03_streaming。CI 的做法则收敛在 test/run.sh 一个脚本里临时集群 mock API make installcheck并且显式unset TYPESAFE_API_KEY——测试永远不碰真实 API。用例见 test/sql/期望输出在 test/expected/失败差异落在test/regression.diffs。 打包 PGXN 压缩包make dist 一行生成Makefile 里的disttarget 只用了一行命令git archive --format zip --prefixjev-0.2.1/ -o jev-0.2.1.zip HEADgit archive只导出提交里的干净内容天然适合做发布包.gitattributes还能把 CI 等点文件排除在外。而 zip 里最关键的 META.json 是 PGXN 的说明书字段分工如下name/version分发包身份pgxn install jev就靠它找到包provides.jev.file指向sql/jev--0.2.1.sql声明主脚本prereqs声明依赖 PostgreSQL ≥ 14 和plpython3ulicense: postgresqlLICENSE 即 PostgreSQL License该生态的惯例选择。CI 中还有lint-meta校验任务强制 jev.control、META.json 版本一致且对应 SQL 脚本存在——三处版本号必须同步。 发布到 PGXN打 tag 就完事PGXNPostgreSQL Extension Network是 PostgreSQL 扩展的官方分发包管理器用户侧体验就是一条命令pgxn install jev。发布流程完整清单见 docs/PUBLISHING.md版本号同步更新 jev.control、META.json、CHANGELOG.md、jev_version()并补新版本的 SQL 脚本全版本回归make docker-test覆盖 PG 14–17校验发布包用 pgxn-tools 的pgxn-bundle容器验证 META.json 并生成 zip打 tag 触发自动化git tag -a v0.2.1 -m jev 0.2.1 git push origin v0.2.1Release 工作流会把 zip 挂到 GitHub Release若仓库配置了PGXN_USERNAME/PGXN_PASSWORD密钥还会自动上传 PGXN几分钟内pgxn install jev即可用。也可以手动上传到 PGXN 管理后台。 重要规则一个版本号只能发布一次。发布后发现 bug只能升版本号再发一版所以发布前务必跑全量回归。️ 更多分发渠道可选发布到 PGXN 只是起点docs/PUBLISHING.md 还列出了扩展生态的完整渠道版图渠道面向谁安装方式git PGXS任何有pg_config的机器git clone … make installPGXN生态标准渠道pgxn install jevDocker 镜像想最快试用的人docker run本项目自带 DockerfileTrunk按 PG 版本的预编译二进制trunk install jevpgxmanapt 风格扩展包管理pgxman install jevPGDG发行版官方源apt install postgresql-16-jev对 PL/Python 这类无需编译的扩展PGXN Docker 镜像基本已覆盖绝大多数用户。✅ 发布清单与总结把整条旅程浓缩成一张清单jev.control升版本号新增sql/jev--X.Y.Z.sql 升级脚本META.json 与 CHANGELOG.md 同步更新make docker-test覆盖 PG 14–17 全版本回归make dist或pgxn-bundle校验发布包打vX.Y.Ztag触发 PGXN 上传与 Docker 镜像构建到 PostgreSQL 社区邮件列表和扩展频道发布新闻。回头看pg-jev 这套结构其实是一份教科书级的 PostgreSQL 扩展模板PGXS 让构建零门槛、版本化 SQL 脚本保证平滑升级、mock API 让测试既免费又确定、一个 tag 完成发布。掌握这套旅程后你开发的下一个扩展也可以同样体面地走向用户。赞分享人工智能AI 应用大模型后端【免费下载链接】pg-jevAsk your Postgres tables questions in plain language. A PostgreSQL extension powered by TypeSafes Jev.项目地址https://gitcode.com/gh_mirrors/pg/pg-jev点击查看免费下载相关推荐QGroundControl 开发者指南从源码构建到 UI 扩展的完整开发手册QGroundControl 开发者指南从源码构建到 UI 扩展的完整开发手册 本文是 QGroundControlQGC开发者指南的深度解读与实战手册。无人机智能硬件Teleconsole开发者指南从源码构建到自定义扩展的完整教程Teleconsole开发者指南从源码构建到自定义扩展的完整教程 Teleconsole是一个强大的命令行工具让您可以轻松分享UNIX终端并将本地TCP端口快速构建React Chrome扩展程序的完整指南从零到发布快速构建React Chrome扩展程序的完整指南从零到发布 想要快速开发功能强大的Chrome浏览器扩展程序吗这款基于React 18和Webpack 5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/15 15:06:55

MFC+Halcon实现光标灰度值实时读取与像素级采样

简介:这份资源面向计算机视觉与图像处理方向的开发者,尤其是使用MFC框架结合Halcon库进行Windows上位机开发的中级学习者。它解决的核心问题是:在MFC视图窗口中实时捕获鼠标光标位置,并读取该像素点的灰度值,为后续的缺…

2026/10/15 15:06:55

多文件CAD文本批量替换:Python脚本处理块属性与标注文字

简介:这份资源面向需要处理大量CAD图纸的工程师与设计人员,解决多文件间相同文本批量替换的痛点——注意是跨多个独立文件的同步更新,而非单文件内的文本列表替换。包内共6个文件,以exe可执行程序、ocx控件、chm帮助文档、avi视频…

2026/10/15 15:06:55

PRS900电子书刷机教程:1.05a硬件刷3.01汉化固件全流程

简介:PRS900.Flash.Package.1.05a 3.01终极版是面向索尼PRS900电子书阅读器用户的固件刷机资源,重点解决中文阅读体验问题。该版本针对epub格式电子书在原生系统中显示中文乱码的缺陷进行了修正,无需内嵌字体即可正常显示中文内容&#xff0c…

2026/10/15 15:57:28

Windows shell:协议深度指南:Shell命名空间跳转原理与实战

1. 项目概述:这不是“快捷方式”,而是Windows命令行的精准导航系统“Windows10的shell跳转目录”——这八个字背后藏着一个被绝大多数用户长期忽视、却能每天节省5~15分钟操作时间的底层能力。它不是指右键菜单里那个“在此处打开PowerShell”的临时入口…

2026/10/15 15:57:28

C++ PTA编程题刷题攻略:高频考点、易错点与模板

临近期末,好多同学都在找上学期那套C PTA题目集的答案,尤其是编程题部分。后台私信里问得最多的就是“这道题到底哪里错了”“为什么样例过了还是没分”。其实PTA的编程题和前几部分不一样,它不是考记忆,而是考你能不能把课堂上学…

2026/10/15 15:57:28

HART温度变送器远程监控:以太网网关改造方案与工程实践

前段时间接手了一个挺磨人的改造任务:无菌车间里几十支温度变送器,现场数据都正常,可车间办公室想远程看实时温度,只能靠人工按时去现场抄表。更麻烦的是,这批变送器全是HART协议,数字通信能力是有的&#…

2026/10/15 15:57:28

STM32L431待机模式双路唤醒实战:WKUP引脚与RTC闹钟配置指南

简介:这份资源面向使用STM32L431进行低功耗开发的嵌入式工程师与学习者,聚焦待机模式下通过Wakeup引脚和RTC闹钟双路唤醒的完整实现方案,适合已具备一定HAL库与CubeMX基础、希望掌握电池供电场景节能策略的开发者参考。压缩包共188个文件&…

2026/10/15 15:52:27

现场总线二十年:从4-20mA到数字通信的工程演进与选型思考

1. 从一根线说起:为什么1985年前后的工厂里突然要搞“数字通信”如果你在1985年走进一家典型的流程工厂——不管是炼油、造纸还是水处理——你会看到控制室里有一面墙那么大的盘装仪表,每一台变送器、每一个阀门定位器、每一台泵的状态,都要靠…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑