Ошибка. Под "админом" в инфоблоке "Прямой эфир" при клике на "Публикации"

Столкнулся вот с такой проблемой. Когда я нахожусь под учетной записью админа (только под ней!) и нажимаю на ссылку «Публикации» в инфо-блоке «Прямой эфир» (http://floomby.ru/content/s1b6B9miUU/), происходит ошибка.
Вот что говорит firebug:
SQL Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay at /home/ХХХ/classes/modules/topic/mapper/Topic.mapper.class.php line 460


Вот что вываливается в логе об ошибках:
[2009-08-05 12:50:58][19684][ERROR][SQL Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay at /home/ХХХ/classes/modules/topic/mapper/Topic.mapper.class.php line 460
Array
(
    [code] => 1104
    [message] => The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
    [query] => 
				SELECT 
					t_fast.*, 
					tc.*,
					u.user_login as user_login,
					IF(tv.topic_id IS NULL,0,1) as user_is_vote,
					tv.vote_delta as user_vote_delta,
					IF(tqv.topic_id IS NULL,0,1) as user_question_is_vote,
					bu.is_moderator as user_is_blog_moderator,
					bu.is_administrator as user_is_blog_administrator,
					IF(tr.comment_count_last IS NULL,t_fast.topic_count_comment,t_fast.topic_count_comment-tr.comment_count_last) as count_comment_new,
					IF(ft.topic_id IS NULL,0,1) as topic_is_favourite
				FROM (
					SELECT 
						t.*,	
						b.blog_title as blog_title,
						b.blog_type as blog_type,
						b.blog_url as blog_url,
						b.user_owner_id as blog_owner_id									
					FROM 
						prefix_topic as t,	
						prefix_blog as b				
					WHERE 
						1=1
					
						 AND t.topic_publish =  1 AND b.blog_type in ('personal','open') 								
					
						AND
						t.blog_id=b.blog_id											
					ORDER by t.topic_date_add desc
					LIMIT 0, 20
				) as t_fast
				JOIN prefix_user AS u ON t_fast.user_id=u.user_id
				LEFT JOIN (
						SELECT
							topic_id,
							vote_delta												
						FROM prefix_topic_vote 
						WHERE user_voter_id = 1
					) AS tv ON t_fast.topic_id=tv.topic_id 
				LEFT JOIN (
						SELECT
							topic_id												
						FROM prefix_favourite_topic 
						WHERE user_id = 1
					) AS ft ON t_fast.topic_id=ft.topic_id
				LEFT JOIN (
						SELECT
							topic_id,
							comment_count_last												
						FROM prefix_topic_read 
						WHERE user_id = 1
					) AS tr ON t_fast.topic_id=tr.topic_id
				LEFT JOIN (
						SELECT
							topic_id																			
						FROM prefix_topic_question_vote 
						WHERE user_voter_id = 1
					) AS tqv ON t_fast.topic_id=tqv.topic_id
				LEFT JOIN (
						SELECT
							is_moderator,
							is_administrator,
							blog_id												
						FROM prefix_blog_user 
						WHERE user_id = 1
					) AS bu ON t_fast.blog_id=bu.blog_id
				JOIN  prefix_topic_content AS tc ON t_fast.topic_id=tc.topic_id
				order by t_fast.topic_date_add desc
				;	
					
    [context] => /home/ХХХ/classes/modules/topic/mapper/Topic.mapper.class.php line 460
)
]


Писать об этом в багрепорт, думается, рановато, ибо ничего подобного я на проекте не нашел, следовательно этот косяк только у меня случился. Хотелось бы с вашей помощью разобраться.

Вопрос не самый критичный (т.к. у гостей и других зарегенных юзеров все нормально), но все же неприятно когда неизвестные ошибки имеют место быть.

5 комментариев

avatar
Проблема все еще актуальна :( Так же заметил что глючит RSS главной страницы. Только под админом. В чем дело — ума не приложу…
avatar
Это означает буквально следующее:
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
avatar
Это я понял :)
Код исходный, я в него не лазил, посему интересна возможная первопричина.
Ну если нет возможности подсказать первопричину — подскажите где именно прописать
SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=#
avatar
Первопричину можно легко найти, если погуглить чуть-чуть. Используемый запрос превышает значения, которые установлены для MySQL у данного хостера на данном тарифе.

Можно попробовать их изменить. Например, в файле Database.class.php после стирок
$oDbSimple->query("set character_set_client='utf8'");
$oDbSimple->query("set character_set_results='utf8'");
$oDbSimple->query("set collation_connection='utf8_bin'");
добавить
$oDbSimple->query("SET SQL_BIG_SELECTS=1");

avatar
Спасибо большое! Все заработало.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.