Commit bfdbb179 authored by unknown's avatar unknown

merge 5.5->10.0-base

parents 74cca641 41fd4844
...@@ -4019,4 +4019,25 @@ c1 ...@@ -4019,4 +4019,25 @@ c1
NULL NULL
2 2
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# MDEV-5369: Wrong result (0 instead of NULL) on 2nd execution of
# PS with LEFT JOIN, TEMPTABLE view
#
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (0),(8);
CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=MyISAM;
CREATE ALGORITHM=TEMPTABLE VIEW v2 AS SELECT * FROM t2;
SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk;
SUM(pk)
NULL
PREPARE stmt FROM "SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk";
EXECUTE stmt;
SUM(pk)
NULL
EXECUTE stmt;
SUM(pk)
NULL
DEALLOCATE PREPARE stmt;
DROP VIEW v2;
DROP TABLE t1, t2;
# End of 5.3 tests # End of 5.3 tests
...@@ -3,10 +3,23 @@ ...@@ -3,10 +3,23 @@
# get .result differences from CURRENT_USER(). # get .result differences from CURRENT_USER().
--source include/not_as_root.inc --source include/not_as_root.inc
# The previous check verifies that the user does not have root permissions.
# However in some cases tests are run under a user named 'root',
# even although this user does not have real root permissions.
# This test should be skipped in this case, since it does not expect
# that there are records in mysql.user where user=<username>
if ($USER=="root") {
skip Cannot be run by user named 'root' even if it does not have all privileges;
}
if (!$AUTH_SOCKET_SO) { if (!$AUTH_SOCKET_SO) {
skip No auth_socket plugin; skip No auth_socket plugin;
} }
if (!$USER) {
skip USER variable is undefined;
}
let $plugindir=`SELECT @@global.plugin_dir`; let $plugindir=`SELECT @@global.plugin_dir`;
eval install plugin unix_socket soname '$AUTH_SOCKET_SO'; eval install plugin unix_socket soname '$AUTH_SOCKET_SO';
......
...@@ -3594,4 +3594,27 @@ EXECUTE stmt; ...@@ -3594,4 +3594,27 @@ EXECUTE stmt;
DROP TABLE t1,t2; DROP TABLE t1,t2;
--echo #
--echo # MDEV-5369: Wrong result (0 instead of NULL) on 2nd execution of
--echo # PS with LEFT JOIN, TEMPTABLE view
--echo #
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (0),(8);
CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=MyISAM;
CREATE ALGORITHM=TEMPTABLE VIEW v2 AS SELECT * FROM t2;
SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk;
PREPARE stmt FROM "SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk";
EXECUTE stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP VIEW v2;
DROP TABLE t1, t2;
--echo # End of 5.3 tests --echo # End of 5.3 tests
...@@ -625,7 +625,7 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived) ...@@ -625,7 +625,7 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
if ((res= sl->handle_derived(lex, DT_PREPARE))) if ((res= sl->handle_derived(lex, DT_PREPARE)))
goto exit; goto exit;
if (derived->outer_join) if (derived->outer_join && sl->first_cond_optimization)
{ {
/* Mark that table is part of OUTER JOIN and fields may be NULL */ /* Mark that table is part of OUTER JOIN and fields may be NULL */
for (TABLE_LIST *cursor= (TABLE_LIST*) sl->table_list.first; for (TABLE_LIST *cursor= (TABLE_LIST*) sl->table_list.first;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment