set @row_number = 0;
SELECT
*
FROM
(SELECT
(@row_number:=@row_number + 1) AS num,
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
videos.itsOK,
viewed
FROM
tbl_videos videos
WHERE
videos.tbl_user_id = 23
AND videos.tbl_category_id = 265
ORDER BY videos.create_date DESC
) AS paginateTbl
WHERE
paginateTbl.num > 0
&& paginateTbl.num <= 9
mysql results: mysql results
mariadb results: enter image description here
Inner query work on both of them but main query work only in mariadb! What's the matter in mysql not working?
Versions used are mysql: 5.5.44-0ubuntu0.14.04.1
and mariadb 10.0.13-MariaDB-log
.
The CREATE TABLE
statements are identical (except for the AUTO_INCREMENT
, number of rows):
MySQL result:
SHOW CREATE TABLE tbl_videos;
CREATE TABLE `tbl_videos` (
`id` INT (20) NOT NULL AUTO_INCREMENT
,`title` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`description` TEXT COLLATE utf8_persian_ci NOT NULL
,`tags` TEXT COLLATE utf8_persian_ci NOT NULL
,`video_quality` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link1` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link2` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link3` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`viewed` INT (11) NOT NULL
,`viewed_duration` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`viewed_traffic` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`embed_code` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`sharing_code` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`replace_times` INT (11) NOT NULL
,`actual_link` TEXT COLLATE utf8_persian_ci NOT NULL
,`tbl_user_id` INT (11) NOT NULL
,`tbl_category_id` INT (11) NOT NULL
,`tbl_player_id` INT (11) NOT NULL
,`itsOK` TINYINT (2) NOT NULL
,`length` INT (20) NOT NULL
,`create_date` INT (11) NOT NULL
,`modified_date` INT (11) NOT NULL
,`thumbnails` TEXT COLLATE utf8_persian_ci
,`serverId` VARCHAR(32) COLLATE utf8_persian_ci NOT NULL
,`sizes` VARCHAR(100) COLLATE utf8_persian_ci DEFAULT NULL
,`our_server_link` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`like` INT (11) NOT NULL DEFAULT '0'
,`file_size` FLOAT DEFAULT NULL
,`islogo` TEXT COLLATE utf8_persian_ci
,`uuid` VARCHAR(64) COLLATE utf8_persian_ci DEFAULT NULL
,`output_type` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`video_file` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`video_setting` TEXT COLLATE utf8_persian_ci NOT NULL
,`soft_hard` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`soft_hard_logo` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`vastTag` TEXT COLLATE utf8_persian_ci
,`extra_cat_id` INT (11) NOT NULL DEFAULT '0'
,`all_terafic` BIGINT (20) NOT NULL DEFAULT '0'
,PRIMARY KEY (`id`)
,KEY `tbl_user_id`(`tbl_user_id`)
,KEY `tbl_category_id`(`tbl_category_id`)
,CONSTRAINT `tbl_videos_ibfk_1` FOREIGN KEY (`tbl_user_id`) REFERENCES `tbl_users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
,CONSTRAINT `tbl_videos_ibfk_2` FOREIGN KEY (`tbl_category_id`) REFERENCES `tbl_categories`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 4622 DEFAULT CHARSET = utf8 COLLATE = utf8_persian_ci
MariaDB result:
SHOW CREATE TABLE tbl_videos;
CREATE TABLE `tbl_videos` (
`id` INT (20) NOT NULL AUTO_INCREMENT
,`title` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`description` TEXT COLLATE utf8_persian_ci NOT NULL
,`tags` TEXT COLLATE utf8_persian_ci NOT NULL
,`video_quality` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link1` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link2` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`dl_link3` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`viewed` INT (11) NOT NULL
,`viewed_duration` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`viewed_traffic` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`embed_code` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`sharing_code` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`replace_times` INT (11) NOT NULL
,`actual_link` TEXT COLLATE utf8_persian_ci NOT NULL
,`tbl_user_id` INT (11) NOT NULL
,`tbl_category_id` INT (11) NOT NULL
,`tbl_player_id` INT (11) NOT NULL
,`itsOK` TINYINT (2) NOT NULL
,`length` INT (20) NOT NULL
,`create_date` INT (11) NOT NULL
,`modified_date` INT (11) NOT NULL
,`thumbnails` TEXT COLLATE utf8_persian_ci
,`serverId` VARCHAR(32) COLLATE utf8_persian_ci NOT NULL
,`sizes` VARCHAR(100) COLLATE utf8_persian_ci DEFAULT NULL
,`our_server_link` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`like` INT (11) NOT NULL DEFAULT '0'
,`file_size` FLOAT DEFAULT NULL
,`islogo` TEXT COLLATE utf8_persian_ci
,`uuid` VARCHAR(64) COLLATE utf8_persian_ci DEFAULT NULL
,`output_type` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`video_file` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`video_setting` TEXT COLLATE utf8_persian_ci NOT NULL
,`soft_hard` VARCHAR(255) COLLATE utf8_persian_ci DEFAULT NULL
,`soft_hard_logo` VARCHAR(255) COLLATE utf8_persian_ci NOT NULL
,`vastTag` TEXT COLLATE utf8_persian_ci
,`extra_cat_id` INT (11) NOT NULL DEFAULT '0'
,`all_terafic` BIGINT (20) NOT NULL DEFAULT '0'
,PRIMARY KEY (`id`)
,KEY `tbl_user_id`(`tbl_user_id`)
,KEY `tbl_category_id`(`tbl_category_id`)
,CONSTRAINT `tbl_videos_ibfk_1` FOREIGN KEY (`tbl_user_id`) REFERENCES `tbl_users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
,CONSTRAINT `tbl_videos_ibfk_2` FOREIGN KEY (`tbl_category_id`) REFERENCES `tbl_categories`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 9387 DEFAULT CHARSET = utf8 COLLATE = utf8_persian_ci
mysql results:
EXPLAIN SELECT * from FROM ...
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 14 Using where
2 DERIVED videos index_merge tbl_user_id,tbl_category_id tbl_category_id,tbl_user_id 4,4 NULL 1 Using intersect(tbl_category_id,tbl_user_id); Using where; Using filesort
mariadb results:
EXPLAIN SELECT * from tbl_videos
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using where
2 DERIVED videos index_merge tbl_user_id,tbl_category_id tbl_category_id,tbl_user_id 4,4 NULL 1 Using intersect(tbl_category_id,tbl_user_id); Using where; Using filesort
1 Answer 1
It's MySQL 5.5 bug which reported to MySQL. so I installed mysql 5.6 and main query works well. same query with @@version in results.
set @row_number = 0;
SELECT
*, @@version mysql_version
FROM
(SELECT
(@row_number:=@row_number + 1) AS num,
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
videos.itsOK,
viewed
FROM
tbl_videos videos
WHERE
videos.tbl_user_id = 9
AND videos.tbl_category_id = 113
AND length > 0
ORDER BY videos.create_date ASC
) AS paginateTbl
WHERE
paginateTbl.num > 0
&& paginateTbl.num <= 9
mysql 5.5 & mysql 5.6 main query results: mysql 5.5 bug - main query mysql 5.6 - main qu
Now I check a special id eg: 1103 in tbl_videos and both select works well.
SELECT
id,
tbl_user_id,
title,
description,
length lengths,
create_date,
file_size,
thumbnails,
itsOK,
viewed,
@@version mysql_version
FROM
tbl_videos
WHERE
id = 1103
mysql 5.5 & mysql 5.6 results: mysql 5.5 bug - tiny query mysql 5.6 - tiny query
-
2Did you find which bug exactly it was (a link to mysql bugs) and when it was fixed?ypercubeᵀᴹ– ypercubeᵀᴹ2015年09月07日 07:56:24 +00:00Commented Sep 7, 2015 at 7:56
-
1There would be more upvotes coming your way if you could provide more specific details of the bug in this answer. It would help people know if the problem they are seeing is likely to be fixed the same way (or if they are unable to upgrade immediately could give them the clues needed to work around or otherwise mitigate the problem in the meantime)David Spillett– David Spillett2015年09月07日 08:36:19 +00:00Commented Sep 7, 2015 at 8:36
-
Would you like to send the screen shot of mysql 5.5 and mysql 5.6 of retured data?Ario– Ario2015年09月07日 08:38:47 +00:00Commented Sep 7, 2015 at 8:38
-
Nice. I think you should also make a bug request at the MySQL site. 5.5 is still a supported version and bugs like this should be fixed.ypercubeᵀᴹ– ypercubeᵀᴹ2015年09月07日 12:11:58 +00:00Commented Sep 7, 2015 at 12:11
AND length>0
) in the inner query to show results that have some useful data and check again.