mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25027
This commit is contained in:
@@ -1528,5 +1528,12 @@ a
|
||||
1
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2 limit ?) IS NULL';
|
||||
SET @arg=1;
|
||||
EXECUTE stmt USING @arg;
|
||||
a
|
||||
1
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.0 tests.
|
||||
|
@@ -1577,8 +1577,13 @@ 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;
|
||||
|
||||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2 limit ?) IS NULL';
|
||||
SET @arg=1;
|
||||
EXECUTE stmt USING @arg;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@@ -2989,7 +2989,7 @@ longlong Item_func_isnull::val_int()
|
||||
Handle optimization if the argument can't be null
|
||||
This has to be here because of the test in update_used_tables().
|
||||
*/
|
||||
if (!used_tables_cache)
|
||||
if (!used_tables_cache && !with_subselect)
|
||||
return cached_value;
|
||||
return args[0]->is_null() ? 1: 0;
|
||||
}
|
||||
@@ -2998,7 +2998,7 @@ longlong Item_is_not_null_test::val_int()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
DBUG_ENTER("Item_is_not_null_test::val_int");
|
||||
if (!used_tables_cache)
|
||||
if (!used_tables_cache && !with_subselect)
|
||||
{
|
||||
owner->was_null|= (!cached_value);
|
||||
DBUG_PRINT("info", ("cached :%ld", (long) cached_value));
|
||||
@@ -3025,7 +3025,7 @@ void Item_is_not_null_test::update_used_tables()
|
||||
else
|
||||
{
|
||||
args[0]->update_used_tables();
|
||||
if (!(used_tables_cache=args[0]->used_tables()))
|
||||
if (!(used_tables_cache=args[0]->used_tables()) && !with_subselect)
|
||||
{
|
||||
/* Remember if the value is always NULL or never NULL */
|
||||
cached_value= (longlong) !args[0]->is_null();
|
||||
|
@@ -1027,7 +1027,8 @@ public:
|
||||
else
|
||||
{
|
||||
args[0]->update_used_tables();
|
||||
if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())))
|
||||
if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())) &&
|
||||
!with_subselect)
|
||||
{
|
||||
/* Remember if the value is always NULL or never NULL */
|
||||
cached_value= (longlong) args[0]->is_null();
|
||||
|
@@ -1902,6 +1902,7 @@ 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() :
|
||||
|
Reference in New Issue
Block a user