DuckDB v2.0: より進化し、実行時に拡張可能なPEGベースのSQLパーサーを導入
DuckDB V2 PEG-based SQL parser
DuckDB v2.0では、PostgreSQL由来のSQLパーサーをPEG(Parsing Expression Grammars)ベースのパーサーに置き換えました。この新しいパーサーは、進化が容易で、実行時に拡張可能であることが特徴です。PEGパーサーは、文法規則の順序によって曖昧さを解消し、従来のLALR(1)パーサーで発生しがちなシフト/リデュース競合を防ぎます。また、バックトラッキングによる指数関数的なパフォーマンス低下を防ぐためにパックラット(メモ化)を採用し、パフォーマンスを大幅に改善しました。この変更により、DuckDBはSQL方言(DuckSQL)を進化させ続け、拡張機能が独自の構文を直接DuckDBの文法に追加できるようになります。例えば、Googleのパイプクエリ構文のような新しい構文を、既存のDuckDBの文法や変換処理を再利用しながら統合することが可能になります。これにより、拡張機能はSQLの大部分を自身で実装する必要がなくなり、必要な構文のみを追加できるようになります。DuckDB v2.0では、この新しいPEGパーサーがデフォルトとなり、既存のクエリは引き続き動作しますが、将来的な機能追加や拡張性が向上しています。
- DuckDB v2.0がPostgreSQL由来のSQLパーサーをPEGベースの新しいパーサーに置き換え、デフォルトとして採用した
- 新しいPEGパーサーは実行時に拡張可能で、拡張機能が独自の構文を直接DuckDBの文法に追加できるようになった
- パックラット(メモ化)を採用し、バックトラッキングによる指数関数的なパフォーマンス低下を防止
DuckDBは分析用データベースとして急成長するオープンソースプロジェクトであり、v2.0でのPEGベースSQLパーサーへの刷新は、拡張機能エコシステムの拡大とSQL方言の進化を加速させる。これにより、DuckDB周辺の商用サービスや拡張エコシステムの投資価値が高まる可能性がある。