DuckDB v2.0 заменяет SQL-парсер на PEG-основе

DuckDB V2 PEG-based SQL parser

DuckDB v2.0 заменяет SQL-парсер на PEG-основе

DuckDB v2.0 полностью заменяет свой парсер SQL, основанный на PostgreSQL, на парсер на основе грамматики PEG. Новый парсер, который стал стандартным в этой версии, упрощает развитие диалекта DuckSQL и позволяет расширять его во время выполнения. В блоге отмечается, что замена произошла незаметно для пользователей, но при этом добавлены новые синтаксические возможности, такие как выражения без SELECT и оператор CONNECT.

Новый парсер должен был принимать весь DuckSQL и создавать то же AST, которое ожидает биндер DuckDB.
  1. zcw100

    Я в восторге от этого и уже имею несколько вариантов использования, но меня постоянно беспокоит грамматический беспредел и коллизии, когда каждый автор расширения пытается модифицировать грамматику. Надеюсь, у них уже есть что-то для этого, и я просто ещё не читал об этом. Меня беспокоит, что можно загрузить расширение и, так сказать, исказить интерпретацию синтаксиса. Два расширения от разных авторов могут вполне законно захотеть конфликтующие парсеры, и нет простого способа выгрузить расширение в DuckDB. Что-то вроде явного «GRAMMAR SQL» или «GRAMMAR GGSQL» было бы неплохо.

  2. tofflos

    > В предыдущих постах в блоге рассказывалось о дружелюбном SQL в DuckDB, включая 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