DuckDB v2.0 заменяет SQL-парсер на PEG-основе
DuckDB V2 PEG-based SQL parser
DuckDB v2.0 полностью заменяет свой парсер SQL, основанный на PostgreSQL, на парсер на основе грамматики PEG. Новый парсер, который стал стандартным в этой версии, упрощает развитие диалекта DuckSQL и позволяет расширять его во время выполнения. В блоге отмечается, что замена произошла незаметно для пользователей, но при этом добавлены новые синтаксические возможности, такие как выражения без SELECT и оператор CONNECT.
Новый парсер должен был принимать весь DuckSQL и создавать то же AST, которое ожидает биндер DuckDB.
- zcw100
Я в восторге от этого и уже имею несколько вариантов использования, но меня постоянно беспокоит грамматический беспредел и коллизии, когда каждый автор расширения пытается модифицировать грамматику. Надеюсь, у них уже есть что-то для этого, и я просто ещё не читал об этом. Меня беспокоит, что можно загрузить расширение и, так сказать, исказить интерпретацию синтаксиса. Два расширения от разных авторов могут вполне законно захотеть конфликтующие парсеры, и нет простого способа выгрузить расширение в DuckDB. Что-то вроде явного «GRAMMAR SQL» или «GRAMMAR GGSQL» было бы неплохо.
- tofflos
> В предыдущих постах в блоге рассказывалось о дружелюбном SQL в DuckDB, включая GROUP BY ALL и выбор столбцов с помощью SELECT * EXCLUDE (...).
Мне нравится идея дружелюбного SQL! Я часто создаю представления одинаковой формы и хотел бы, чтобы UNION и UNION ALL принимали список. Но это не входит в стандарт, поэтому я потерял надежду, что это когда-нибудь появится в PostgreSQL.
select * from view1 union all view2, view3, view4;
- pspeter3
Мне интересно, означает ли это, что у нас может быть плагин Duck SQL Oxfmt?