Задать вопрос
@coalesce

Корректно ли работают оконные функции в MySQL 8 (Ver 8.0.3-rc) при использовании MATCH?

Использую mysql Ver 8.0.3-rc for Linux on x86_64 (MySQL Community Server (GPL))

Создал таблицу с FULLTEXT индексом
CREATE TABLE `title` (
  `id` smallint(4) unsigned NOT NULL PRIMARY KEY,
  `name` text COLLATE utf8_unicode_ci,
  FULLTEXT idx (name) WITH PARSER ngram
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


Заполнил данными:
insert into `title` values(14,"I'm flying in for the game (one night in Niagara Falls, NY and one night in Buffalo then back home).");
insert into `title` values(23,"I've never been to the area.");
insert into `title` values(43,"Where and what must I eat (Canadian side of Niagara, American side and Buffalo)?");
insert into `title` values(125,"Don't really have much planned other than the Falls and the game.");


Смотрю процент совпадения текста
select
    id,
    round(MATCH (name) AGAINST ('other than the'),2) scope
from title;


Результат
id   | scope
-------------
14   | 0,43
23   | 0,23
43   | 0,12
125  | 1,15


Если использовать классическую группировку через GROUP BY - всё хорошо:
select
    max(scope),
    min(scope),
    sum(scope)
from
(
    select id, round(MATCH (name) AGAINST ('other than the'),2) scope
    from title
) a;


Получаю ожидаемый результат:
max  | min  | sum
-------------------
1.15 | 0.12 | 1.93


Однако, если использовать оконную функцию over, результат получается странным
select
    id,
    max(scope) over(),
    min(scope) over(),
    sum(scope) over()
from
(
    select id, round(MATCH (name) AGAINST ('other than the'),2) scope
    from title
) a;


Странный результат
id | max  |  min | sum
------------------------
14 | 1.15 | 1.15 |  4.60
23 | 1.15 | 1.15 |  4.60
43 | 1.15 | 1.15 |  4.60
125| 1.15 | 1.15 |  4.60


Я ожидаю получить результат аналогичный использованию классического group by:
id | max  |  min | sum
------------------------
14 | 1.15 | 0.12 |  1.93
23 | 1.15 | 0.12 |  1.93
43 | 1.15 | 0.12 |  1.93
125| 1.15 | 0.12 |  1.93


Вопрос: это баг mysql Ver 8.0.3-rc или у меня некорректный запрос? Спасибо.
  • Вопрос задан
  • 1198 просмотров
Подписаться 2 Сложный Комментировать
Решения вопроса 1
@coalesce Автор вопроса
На stackoverflow разработчик MySQL признал это багом.
В релизе обещают исправить.
Подробнее тут:
https://stackoverflow.com/questions/46845850/mysql...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы