Commit 2f78d5ca authored by unknown's avatar unknown
Browse files

Fixed bug #25027.

Removed an assertion that was not valid for the cases where the query
in a prepared statement contained a single-row non-correlated
subquery that was used as an argument of the IS NULL predicate.


mysql-test/r/ps.result:
  Added a test case for bug #25027.
mysql-test/t/ps.test:
  Added a test case for bug #25027.
parent 22192d08
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1514,4 +1514,19 @@ Variable_name Value
Slow_queries	1
deallocate prepare no_index;
deallocate prepare sq;
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2 (b int);
INSERT INTO t2 VALUES (NULL);
SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL;
a
1
2
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL';
EXECUTE stmt;
a
1
2
DEALLOCATE PREPARE stmt;
DROP TABLE t1,t2;
End of 5.0 tests.
+18 −0
Original line number Diff line number Diff line
@@ -1563,4 +1563,22 @@ execute sq;
deallocate prepare no_index;
deallocate prepare sq;

#
# Bug 25027: query with a single-row non-correlated subquery
#            and IS NULL predicate
#

CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2 (b int);
INSERT INTO t2 VALUES (NULL);

SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL;
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL';

EXECUTE stmt;

DEALLOCATE PREPARE stmt;
DROP TABLE t1,t2;

--echo End of 5.0 tests.
+0 −1
Original line number Diff line number Diff line
@@ -1903,7 +1903,6 @@ void st_select_lex_unit::set_limit(SELECT_LEX *sl)
{
  ha_rows select_limit_val;

  DBUG_ASSERT(! thd->stmt_arena->is_stmt_prepare());
  select_limit_val= (ha_rows)(sl->select_limit ? sl->select_limit->val_uint() :
                                                 HA_POS_ERROR);
  offset_limit_cnt= (ha_rows)(sl->offset_limit ? sl->offset_limit->val_uint() :