CREATE TABLE `tt00` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `f0` int(11) unsigned NOT NULL DEFAULT '0', `f1` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 ROW_FORMAT=DYNAMIC; CREATE TABLE `tt01` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `f02` bigint(20) unsigned NOT NULL DEFAULT '0', `f03` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 ROW_FORMAT=DYNAMIC; CREATE ALGORITHM=UNDEFINED DEFINER=`DB`@`localhost` SQL SECURITY DEFINER VIEW `tt0000` AS SELECT `tt00`.`f0` AS `f0`, `tt00`.`f1` AS `f1`, `tt01`.`f02` AS `f02`, `tt01`.`f03` AS `f03` FROM (`tt00` LEFT JOIN `tt01` ON((`tt00`.`id` = `tt01`.`f02`))); CREATE DEFINER = 'DB'@'localhost' FUNCTION `BugTest`( p0 BIGINT(20) UNSIGNED ) RETURNS bigint(20) unsigned DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE k0 INTEGER UNSIGNED DEFAULT 0; DECLARE lResult INTEGER UNSIGNED DEFAULT 0; SET k0 = 0; WHILE k0 < 1000 DO SELECT COUNT(*) as `f00` INTO lResult FROM `tt0000` WHERE `tt0000`.`f0` = p0; -- BUG -- SELECT COUNT(*) as `f00` INTO lResult FROM `tt00` LEFT JOIN `tt01` ON (`tt00`.`id` = `tt01`.`f02`) WHERE `tt00`.`f0` = p0; -- OK SET k0 = k0 + 1; END WHILE; RETURN(k0); END; //---------------------------------------------------------------------------------------------- // pseudocode client query CONNECT TO DB i = 1; while(true) { QuerY -> [SELECT `BugTest`(i++)]; } END CONNECT