
PostgreSQL专用语言服务器 助力高效数据库开发
postgres_lsp项目旨在为PostgreSQL开发者提供专业的语言服务器支持。基于libpg_query解析器,它实现了代码补全、语法高亮、类型检查和格式化等智能功能。该项目不仅支持标准SQL,还涵盖PL/pgSQL函数体,全面提升PostgreSQL开发体验。作为一个开源项目,postgres_lsp正在积极开发中,欢迎开发者参与贡献,共同完善这一PostgreSQL开发利器。

一个专为 Postgres 设计的语言服务器。不是带有特色的 SQL,而是纯粹的 Postgres。
[!警告] 该项目正在积极开发中,目前仅适用于协作者。但我们正在不断进步!您可以在 https://github.com/supabase-community/postgres_lsp/issues/136 找到当前的路线图和贡献机会。
语言服务器协议是代码编辑器和服务器之间的开放协议,用于提供代码智能工具,如代码补全和语法高亮。本项目实现了一个针对 Postgres 的语言服务器,通过添加以下功能显著提升了您在喜爱的编辑器中的开发体验:
我们计划为 SQL 和 PL/pgSQL 函数体也支持上述所有功能!
尽管 Postgres 日益流行,但 IDE 和编辑器对 PL/pgSQL 的支持仍然有限。虽然有一些通用的 SQL 语言服务器1在解析器中提供 Postgres 语法作为"特色",但由于 PostgreSQL 不断发展和复杂的语法,它们通常表现不佳。有一些专有 IDE2运行良好,但这些功能仅在各自的 IDE 中可用。
这个语言服务器专为支持 Postgres 而设计,仅支持 Postgres。服务器使用 libpg_query,因此利用 PostgreSQL 源码可靠地解析 SQL 代码。在语言服务器中使用 Postgres 可能看起来不太常规,但这是解析所有有效 PostgreSQL 查询的唯一可靠方法。您可以在这里找到关于为什么这是正确方法™的更长解释。虽然 libpg_query 是为执行 SQL 而构建的,而不是为构建语言服务器,但在 parser crate 中已成功缓解了任何缺点。您可以阅读带注释的源代码以了解解析器的内部工作原理。
一旦解析器稳定,并实现了强大且可扩展的数据模型,语言服务器不仅将提供基本功能,如语义高亮、代码补全和语法错误诊断,还将作为 Postgres 生态系统中所有优秀工具的用户界面。
[!警告] 这还不适合生产环境使用。只有在您想帮助开发时才安装。
[!注意] 有兴趣为 Neovim 和 VS Code 设置发布流程和客户端扩展吗?请查看 https://github.com/supabase-community/postgres_lsp/issues/136!
将 postgres_lsp 可执行文件添加到您的路径中,并在配置中添加以下内容以使用它。
require('lspconfig.configs').postgres_lsp = { default_config = { name = 'postgres_lsp', cmd = {'postgres_lsp'}, filetypes = {'sql'}, single_file_support = true, root_dir = util.root_pattern 'root-file.txt' } } lsp.configure("postgres_lsp", {force_setup = true})
您需要安装 nightly Cargo、Node 和 npm。
通过运行以下命令安装 libpg_query 子模块:
git submodule update --init --recursive
如果您使用 VS Code,可以通过运行以下命令安装服务器和客户端扩展:
cargo xtask install
如果您不使用 VS Code,可以通过运行以下命令安装服务器:
cargo xtask install --server
服务器二进制文件将安装在 .cargo/bin 中。确保 .cargo/bin 在 $PATH 中。
目前,Windows 不支持 libpg_query。您可以在 CodeSpaces 上设置开发环境。
codespace 启动后,在 shell 中运行以下命令安装 Rust:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
按照常规步骤继续安装。
通用 SQL 解决方案:sql-language-server、pgFormatter、sql-parser-cst ↩