HeadlinesBriefing HeadlinesBriefing.com

DuckDB v2.0 Hadirkan Parser SQL Baru Berbasis PEG

Hacker News •
×

DuckDB v2.0 memperkenalkan parser SQL baru berbasis PEG, menggantikan parser turunan PostgreSQL yang digunakan sejak commit pertama proyek pada tahun 2018. Parser LALR(1) yang dihasilkan Bison sebelumnya menjadi semakin sulit untuk dikembangkan karena konflik shift/reduce dan reduce/reduce saat Duck SQL berevolusi. Parser baru ini, yang dibangun menggunakan Parsing Expression Grammars, menghilangkan konflik tersebut dengan mengurutkan alternatif secara eksplisit dan memungkinkan ekstensibilitas saat runtime.

Parser memproses kueri SQL melalui tiga tahap: tokenizer, parser, dan transformer. Tokenizer membagi masukan menjadi token seperti kata kunci dan pengenal. Parser memvalidasi sintaks terhadap tata bahasa Duck SQL, menghasilkan pohon parse. Transformer mengubahnya menjadi AST internal DuckDB untuk binder.

Pengembangan dimulai dengan prototipe penelitian yang hanya menangani subset SQL. Prototipe itu dikembangkan secara bertahap dan diperkenalkan sebagai fitur eksperimental di DuckDB v1.5. Tata bahasa lengkap kini mendukung semua jenis pernyataan dan ekspresi, presedensi operator yang benar, klasifikasi kata kunci yang tepat, serta kompatibilitas dengan struktur AST yang ada.

Meskipun implementasinya berubah signifikan, Duck SQL sendiri tetap tidak berubah. Parser baru juga meningkatkan pelaporan kesalahan, memberikan konteks yang lebih baik untuk kegagalan sintaks. Transisi ini sejalan dengan langkah serupa oleh sistem lain seperti Python 3.9, yang juga mengadopsi parsing berbasis PEG untuk fleksibilitas lebih besar.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing