Oracle mechanics

28.10.2009

mysql bug: EXISTS + GROUP BY

Filed under: MySQL — Игорь Усольцев @ 23:29
Tags:

Простой запрос в приложении клиента может давать ошибочный результат

mysql> SELECT s2.NAME
,COUNT(DISTINCT s2.CONTENT_ID) as CNT
,MAX(s1.DATE)
FROM s2 INNER JOIN s1 ON (s2.CONTENT_ID=s1.ID)
WHERE EXISTS (SELECT 1 FROM content_group sg
WHERE s1.ID = sg.CONTENT_ID AND sg.GROUP_ID IN (2))
GROUP BY s2.NAME;
Empty set (0.01 sec)

Интересно, что если исключить из запроса или GROUP BY, или EXISTS — результат становится правильным — ожидаемо непустым

Проверим версию MySQL

mysql> select version();
5.0.41-log

и проверим базу багов MySQL: аналочичный случай давным-давно замечен у зарубежных товарищей на версия 5.0.40 и 5.0.42 — наша версия как раз между «бажными»

Bug #30175 GROUP BY does not work as expected with subquery condition NOT EXISTS

Upgraded to 5.0.44 и выше решает проблему

Добавить комментарий »

Комментариев нет.

RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Создайте бесплатный сайт или блог на WordPress.com.

%d такие блоггеры, как: