SQL: port window functions from SQLite
Для поддержки распределенных оконных функций, нужно завести в тарантуле их локальную версию. Для POC нам достаточно самого базового функционала из всех возможностей sqlite:
- в over поддерживаются только ключевые слова partition by и order by. Фильтрация (filter) и настройки окна должны добавляться в следующих итерациях.
- из функций поддерживаются все агрегатные функции (avg, count, max, min, total, sum, group_concat), а из непосредственно оконных только row_number.
window_function (...) OVER ( [[ PARTITION BY ( expr, ... ) ]] [[ ORDER BY ( expr, ... ) ]] )
Чтобы портировать оконные функции из SQLite в Тарантул, нужны как минимум следующие коммиты:
- https://github.com/sqlite/sqlite/commit/86fb6e173885b9ac170b14ce9a9d0ccf7cd34e50
- https://github.com/sqlite/sqlite/commit/dfa552f45be381ec1834573e6a94eccea728de2c
А так же багфиксы:
- https://github.com/sqlite/sqlite/commit/a83899754423bea16d4efeb4f39482b57d79c083
- https://github.com/sqlite/sqlite/commit/a83899754423bea16d4efeb4f39482b57d79c083
- https://github.com/sqlite/sqlite/commit/2e362f9775ba05e353276039acc788e592fea0e4
- https://github.com/sqlite/sqlite/commit/4780b9ad46ebf5b9a2628cd80ef2ec95a6566f56
- ...
- PROFIT
Edited by Denis Smirnov