DuckDB v2.0、SQLパーサをPEGベースに刷新 拡張性向上

DuckDB V2 PEG-based SQL parser

DuckDB v2.0、SQLパーサをPEGベースに刷新 拡張性向上

DuckDB v2.0は、PostgreSQL由来のSQLパーサをPEG(Parsing Expression Grammar)ベースの新パーサに置き換えた。文法の拡張が容易になり、実行時の拡張も可能になる。新構文としてSELECTを省略できる式文やCONNECT文、外部リソース管理構文などが追加された。パックラット構文解析により、不正な入力に対する指数関数的な遅延も解消している。

「PEG文法により、DuckSQLの進化を続けやすくなった。次のステップは、拡張機能が独自のルールを追加できるようにすることだ」
  1. zcw100

    これは楽しみです。もういくつかユースケースも考えていますが、各拡張作者が文法を変更しようとするにつれて、文法の無秩序な競合が起こるのではと常に心配しています。彼らがすでに何らかの対策を講じていることを願っていますが、まだ読んでいないだけかもしれません。拡張をロードすると構文の解釈が変わってしまう可能性があるのが心配です。2つの拡張作者が正当に矛盾するパーサーを望むこともあり得ますし、DuckDBでは拡張をアンロードする簡単な方法もありません。「GRAMMAR SQL」や「GRAMMAR GGSQL」のような明示的な指定があればいいのにと思います。

  2. tofflos

    > 以前のブログ記事では、DuckDBのフレンドリーなSQLについて取り上げてきました。GROUP BY ALLやSELECT * EXCLUDE (...)を使った列選択などです。

    フレンドリーなSQLというアイデアは素晴らしいと思います!私はよく同じ形のビューを作成するのですが、UNIONとUNION ALLがリストを受け付けてくれると嬉しいです。しかし、それは標準にはないので、PostgreSQLで実装されることはないだろうと諦めています。

    select * from view1 union all view2, view3, view4;

  3. pspeter3

    これが意味するのは、Duck SQL用のOxfmtプラグインが作れるかもしれないということでしょうか?

この日のほかの記事

2026-08-21