11P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 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에 기여하고 싶은 사람을 환영함
  • 현재는 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 문자열도 분석 가능한 점이 인상적임
  • PL/pgSQL 코드베이스를 마이그레이션 파일로 관리하는 사람들에게는 게임 체인저라고 평가함