mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
5.5 merge
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2012 Monty Program Ab
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -914,7 +914,7 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
||||
if (save_arena)
|
||||
thd->set_query_arena(save_arena);
|
||||
|
||||
cache->store_packed(value);
|
||||
cache->store_packed(value, item);
|
||||
*cache_arg= cache;
|
||||
*item_arg= cache_arg;
|
||||
}
|
||||
@@ -1353,7 +1353,7 @@ int Arg_comparator::compare_e_row()
|
||||
|
||||
void Item_func_truth::fix_length_and_dec()
|
||||
{
|
||||
maybe_null= 0;
|
||||
set_persist_maybe_null(0);
|
||||
null_value= 0;
|
||||
decimals= 0;
|
||||
max_length= 1;
|
||||
@@ -1865,7 +1865,8 @@ longlong Item_func_eq::val_int()
|
||||
void Item_func_equal::fix_length_and_dec()
|
||||
{
|
||||
Item_bool_func2::fix_length_and_dec();
|
||||
maybe_null=null_value=0;
|
||||
set_persist_maybe_null(0);
|
||||
null_value= 0;
|
||||
}
|
||||
|
||||
longlong Item_func_equal::val_int()
|
||||
@@ -2004,7 +2005,7 @@ void Item_func_interval::fix_length_and_dec()
|
||||
}
|
||||
}
|
||||
}
|
||||
maybe_null= 0;
|
||||
set_persist_maybe_null(0);
|
||||
max_length= 2;
|
||||
used_tables_cache|= row->used_tables();
|
||||
not_null_tables_cache= row->not_null_tables();
|
||||
@@ -2685,7 +2686,7 @@ void
|
||||
Item_func_nullif::fix_length_and_dec()
|
||||
{
|
||||
Item_bool_func2::fix_length_and_dec();
|
||||
maybe_null=1;
|
||||
set_persist_maybe_null(1);
|
||||
if (args[0]) // Only false if EOM
|
||||
{
|
||||
max_length=args[0]->max_length;
|
||||
@@ -4546,6 +4547,8 @@ void Item_cond::update_used_tables()
|
||||
item->update_used_tables();
|
||||
used_tables_cache|= item->used_tables();
|
||||
const_item_cache&= item->const_item();
|
||||
if (!persistent_maybe_null && item->maybe_null)
|
||||
maybe_null= 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4720,10 +4723,9 @@ longlong Item_is_not_null_test::val_int()
|
||||
*/
|
||||
void Item_is_not_null_test::update_used_tables()
|
||||
{
|
||||
args[0]->update_used_tables();
|
||||
if (!args[0]->maybe_null)
|
||||
used_tables_cache= 0; /* is always true */
|
||||
else
|
||||
args[0]->update_used_tables();
|
||||
}
|
||||
|
||||
|
||||
@@ -5004,7 +5006,7 @@ Item_func_regex::fix_fields(THD *thd, Item **ref)
|
||||
int comp_res= regcomp(TRUE);
|
||||
if (comp_res == -1)
|
||||
{ // Will always return NULL
|
||||
maybe_null=1;
|
||||
set_persist_maybe_null(1);
|
||||
fixed= 1;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -5014,7 +5016,7 @@ Item_func_regex::fix_fields(THD *thd, Item **ref)
|
||||
maybe_null= args[0]->maybe_null;
|
||||
}
|
||||
else
|
||||
maybe_null=1;
|
||||
set_persist_maybe_null(1);
|
||||
fixed= 1;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -5828,6 +5830,8 @@ void Item_equal::update_used_tables()
|
||||
used_tables_cache|= item->used_tables();
|
||||
/* see commentary at Item_equal::update_const() */
|
||||
const_item_cache&= item->const_item() && !item->is_outer_field();
|
||||
if (!persistent_maybe_null && item->maybe_null)
|
||||
maybe_null= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user