Postgres Language Server: 첫번째 릴리즈
(github.com/supabase-community)- Postgres 전용 Language Server Protocol (LSP) 구현과 다양한 개발 도구를 제공
- Postgres의 기본 파서인
libpg_query
를 기반으로 하여 Postgres 구문과 100% 호환되는 안정적인 SQL 기능을 제공 - 서버-클라이언트 구조로 설계되었으며, 전송 방식에 구애받지 않는 유연한 디자인을 채택함
- 이를 통해 Language Server Protocol뿐만 아니라 CLI, HTTP API, WebAssembly 모듈 같은 다양한 인터페이스로 기능을 사용할 수 있음
- 목표는 기존의 훌륭한 Postgres 도구를 최대한 접근하기 쉽게 만들고, 부족한 부분은 직접 개발하는 것임
- 현재 구현된 기능:
- 자동완성 기능
- 구문 오류 하이라이팅 지원
-
EXPLAIN
명령을 이용한 타입 체크 기능 - Squawk에서 영감을 받은 SQL Linter 기능 포함
Hacker News 의견
- Postgres Language Server의 초기 버전을 공개함
- VSCode 확장,
nvim-lspconfig
,mason
, npm에서 설치 가능함 - 2년간 다양한 시행착오를 겪으며 만든 프로젝트임
- 현재는 실용적이고 단순한 방식으로 동작하게 구성함
- Biome 코드베이스에서 많은 영감을 받았으며 큰 도움을 받음
- Rust로 구현되어 있으며 Rust에 기여하고 싶은 사람을 환영함
- VSCode 확장,
- 현재는 SQL 문만 지원하며, 향후 PL/pgSQL도 지원할 예정임
- PostgreSQL의 SQL 방언을 따르며 Postgres의 파서를 사용함
- DB 연결을 제공하면
pg_catalog
테이블을 통해 메타데이터를 읽어옴 - 연결 정보가 없으면 해당 기능은 비활성화됨
- JetBrains IDE들이 오래전부터 훌륭한 SQL 지원을 제공해왔음. FOSS 대안이 드디어 등장한 것이 긍정적
- IntelliJ DB 도구가 특별하진 않으며, SQL Squirrel 같은 오래된 툴도 꽤 괜찮음
- DB를 자주 변경하지 않는다면 유용하지 않을 수도 있음
- Supabase처럼 SQL로 많은 로직을 작성하는 플랫폼에서 매우 유용함
- SQL 함수, RLS, 마이그레이션 파일 등을 자주 다룬다면 도움을 많이 받을 수 있음
- Postgres 문법은 매우 복잡하고 자주 변경되기 때문에 기존 도구들이 지속적으로 지원하기 어려움
- Postgres 서버의 실제 파서를 추출한 libpg_query를 사용해 문제를 해결함
-JetBrains 도구는 쿼리를 분석할 뿐 아니라 실제 테이블과 매칭하는 기능도 제공함 - 코드 내 SQL 문자열도 분석 가능한 점이 인상적임
- Postgres 서버의 실제 파서를 추출한 libpg_query를 사용해 문제를 해결함
- PL/pgSQL 코드베이스를 마이그레이션 파일로 관리하는 사람들에게는 게임 체인저라고 평가함