11 điểm bởi GN⁺ 2025-03-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cung cấp triển khai Language Server Protocol (LSP) chuyên cho Postgres cùng nhiều công cụ phát triển khác nhau
  • Dựa trên libpg_query, trình phân tích cú pháp mặc định của Postgres, để cung cấp các tính năng SQL ổn định tương thích 100% với cú pháp Postgres
  • Được thiết kế theo kiến trúc máy chủ-khách và áp dụng thiết kế linh hoạt, không phụ thuộc vào phương thức truyền tải
  • Nhờ đó, có thể sử dụng các tính năng qua nhiều giao diện khác nhau như CLI, HTTP API, mô-đun WebAssembly, không chỉ riêng Language Server Protocol
  • Mục tiêu là giúp các công cụ Postgres vốn đã rất tốt trở nên dễ tiếp cận nhất có thể, và tự phát triển những phần còn thiếu
  • Các tính năng hiện đã được triển khai:
    • Tự động hoàn thành
    • Hỗ trợ làm nổi bật lỗi cú pháp
    • Tính năng kiểm tra kiểu bằng lệnh EXPLAIN
    • Bao gồm tính năng SQL Linter lấy cảm hứng từ Squawk

1 bình luận

 
GN⁺ 2025-03-30

Ý kiến Hacker News

  • Đã công bố phiên bản đầu tiên của Postgres Language Server
    • Có thể cài qua tiện ích mở rộng VSCode, nvim-lspconfig, mason, và npm
    • Đây là dự án được xây dựng sau 2 năm trải qua nhiều thử nghiệm và sai sót
    • Hiện được thiết kế để vận hành theo cách thực dụng và đơn giản
    • Nhận được rất nhiều cảm hứng từ codebase của Biome và cũng được hỗ trợ lớn từ đó
    • Được triển khai bằng Rust, và hoan nghênh những ai muốn đóng góp cho dự án bằng Rust
  • Hiện chỉ hỗ trợ câu lệnh SQL, và trong tương lai dự kiến sẽ hỗ trợ cả PL/pgSQL
    • Tuân theo phương ngữ SQL của PostgreSQL và sử dụng parser của Postgres
    • Nếu cung cấp kết nối DB thì sẽ đọc metadata thông qua bảng pg_catalog
    • Nếu không có thông tin kết nối thì tính năng đó sẽ bị vô hiệu hóa
  • Các IDE của JetBrains từ lâu đã cung cấp hỗ trợ SQL rất tốt. Việc cuối cùng cũng có một lựa chọn FOSS là tín hiệu tích cực
  • Công cụ DB của IntelliJ không hẳn là quá đặc biệt, và các công cụ cũ như SQL Squirrel cũng khá ổn
  • Nếu bạn không thay đổi DB thường xuyên thì có thể nó sẽ không quá hữu ích
    • Rất hữu dụng trên những nền tảng như Supabase, nơi nhiều logic được viết bằng SQL
    • Nếu thường xuyên làm việc với hàm SQL, RLS, file migration, v.v. thì có thể nhận được rất nhiều lợi ích
  • Cú pháp Postgres rất phức tạp và thay đổi thường xuyên, nên các công cụ hiện có khó duy trì hỗ trợ liên tục
    • Vấn đề này được giải quyết bằng cách dùng libpg_query, vốn trích xuất parser thực tế từ máy chủ Postgres
  • Công cụ của JetBrains không chỉ phân tích truy vấn mà còn cung cấp khả năng đối chiếu với các bảng thực tế
    • Khả năng phân tích cả chuỗi SQL nằm trong mã nguồn là điều khá ấn tượng
  • Được đánh giá là một bước ngoặt đối với những ai quản lý codebase PL/pgSQL bằng các file migration