0
点赞
收藏
分享

微信扫一扫

Postgres语言服务器介绍

本文主要介绍Postgres的语言服务器。不是SQL的风格,只是Postgres。

状态

🚧这是在积极的发展,只准备合作者。大部分工作仍在前面进行,但我们已经验证了这种方法是有效的。我们将此公之于众,这样我们就可以在公开的情况下发展它,听取社区的意见。

特性

语言服务器协议是代码编辑器和服务器之间的开放协议,用于提供代码智能工具,如代码完成和语法高亮显示。这个项目为Postgres实现了这样一个语言服务器,通过添加:

语义突出

语法错误诊断

在悬停时显示SQL注释

自动完成

执行游标下的语句或执行当前文件等代码操作

可配置代码格式

... 还有更多

动机

尽管Postgres越来越受欢迎,但是ide和编辑器对PL/pgSQL的支持是有限的。虽然有一些通用的SQL语言服务器1在解析器中提供Postgres语法作为一种“风格”,但由于PostgreSQL不断发展和复杂的语法,它们通常都做不到。有一些专有的IDE可以很好地工作,但是这些特性只能在各自的IDE中使用。

这个语言服务器被设计为支持Postgres,并且只支持Postgres。服务器使用libpg_query,因此利用PostgreSQL源代码可靠地解析SQL代码。在语言服务器中使用postgress可能看起来不合常规,但这是解析所有有效PostgreSQL查询的唯一可靠方法。您可以找到一个更长的理由,为什么这是这里的方式™。虽然libpg_query是为了执行SQL而构建的,而不是为了构建语言服务器,但是在解析器crate中已经成功地减轻了任何缺点。您可以阅读带注释的源代码,了解解析器内部工作的更多细节。

一旦解析器稳定,并且实现了一个健壮的、可扩展的数据模型,语言服务器将不仅提供语义高亮、代码完成和语法错误诊断等基本功能,而且还将作为Postgres生态系统中所有伟大工具的用户界面。

举报

相关推荐

0 条评论