11 คะแนน โดย GN⁺ 2025-03-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • มีการพัฒนา Language Server Protocol (LSP) สำหรับ Postgres โดยเฉพาะ พร้อมมอบเครื่องมือพัฒนาหลากหลายรูปแบบ
  • พัฒนาบนพื้นฐานของ libpg_query ซึ่งเป็นพาร์เซอร์หลักของ Postgres จึงมอบความสามารถด้าน SQL ที่เสถียรและเข้ากันได้กับไวยากรณ์ของ Postgres 100%
  • ออกแบบด้วยสถาปัตยกรรมเซิร์ฟเวอร์-ไคลเอนต์ และใช้ดีไซน์ที่ยืดหยุ่นโดยไม่ยึดติดกับวิธีการรับส่งข้อมูล
  • ทำให้สามารถใช้งานความสามารถต่าง ๆ ได้ไม่เพียงแค่ผ่าน Language Server Protocol เท่านั้น แต่ยังผ่าน อินเทอร์เฟซที่หลากหลาย เช่น CLI, HTTP API และโมดูล WebAssembly
  • เป้าหมายคือทำให้เครื่องมือ Postgres ที่ยอดเยี่ยมที่มีอยู่เดิมเข้าถึงได้ง่ายที่สุด และพัฒนาส่วนที่ยังขาดอยู่ขึ้นมาเอง
  • ฟีเจอร์ที่มีการพัฒนาแล้วในปัจจุบัน:
    • ระบบเติมโค้ดอัตโนมัติ
    • รองรับการไฮไลต์ข้อผิดพลาดทางไวยากรณ์
    • ฟังก์ชันตรวจสอบชนิดข้อมูลโดยใช้คำสั่ง EXPLAIN
    • มีฟังก์ชัน SQL Linter ที่ได้แรงบันดาลใจจาก Squawk

1 ความคิดเห็น

 
GN⁺ 2025-03-30

ความคิดเห็นบน Hacker News

  • เปิดตัว Postgres Language Server เวอร์ชันเริ่มต้น
    • ติดตั้งได้ผ่านส่วนขยาย VSCode, nvim-lspconfig, mason และ npm
    • เป็นโปรเจ็กต์ที่สร้างขึ้นผ่านการลองผิดลองถูกหลากหลายตลอด 2 ปี
    • ตอนนี้ออกแบบให้ทำงานด้วยแนวทางที่ใช้งานได้จริงและเรียบง่าย
    • ได้รับแรงบันดาลใจอย่างมากจากโค้ดเบสของ Biome และได้รับความช่วยเหลือมากมาย
    • พัฒนาด้วย Rust และยินดีต้อนรับผู้ที่อยากมีส่วนร่วมกับ Rust
  • ตอนนี้รองรับเฉพาะคำสั่ง SQL และมีแผนจะรองรับ PL/pgSQL ในอนาคต
    • ใช้ SQL dialect ของ PostgreSQL และใช้ parser ของ Postgres
    • หากมีการเชื่อมต่อ DB จะอ่านเมทาดาทาผ่านตาราง pg_catalog
    • หากไม่มีข้อมูลการเชื่อมต่อ ฟีเจอร์นี้จะถูกปิดใช้งาน
  • IDE ของ JetBrains มีการรองรับ SQL ที่ยอดเยี่ยมมานานแล้ว ถือเป็นเรื่องน่ายินดีที่ในที่สุดก็มีทางเลือกแบบ FOSS
  • เครื่องมือ DB ของ IntelliJ ไม่ได้พิเศษนัก และเครื่องมือเก่าอย่าง SQL Squirrel ก็ใช้งานได้ดีพอสมควร
  • ถ้าไม่ได้เปลี่ยน DB บ่อย อาจไม่ได้มีประโยชน์มากนัก
    • แต่มีประโยชน์มากในแพลตฟอร์มอย่าง Supabase ที่เขียนโลจิกจำนวนมากด้วย SQL
    • หากต้องทำงานกับฟังก์ชัน SQL, RLS และไฟล์ migration บ่อย ๆ ก็จะช่วยได้มาก
  • ไวยากรณ์ของ Postgres ซับซ้อนมากและเปลี่ยนแปลงบ่อย ทำให้เครื่องมือเดิม ๆ รองรับต่อเนื่องได้ยาก
    • แก้ปัญหานี้ด้วยการใช้ libpg_query ที่ดึง parser จริงจากเซิร์ฟเวอร์ Postgres ออกมา
  • เครื่องมือของ JetBrains ไม่ได้แค่วิเคราะห์คิวรี แต่ยังสามารถจับคู่กับตารางจริงได้ด้วย
    • จุดที่น่าประทับใจคือสามารถวิเคราะห์สตริง SQL ภายในโค้ดได้ด้วย
  • ถูกมองว่าเป็นตัวเปลี่ยนเกมสำหรับคนที่จัดการโค้ดเบส PL/pgSQL ด้วยไฟล์ migration