Browse Source

rename Virtual_column_info::expr_item

now, when expr_str is gone, expr_item can be unambiguously
renamed to expr.
pull/220/head
Sergei Golubchik 9 years ago
parent
commit
a72f1deb2d
  1. 20
      sql/field.cc
  2. 4
      sql/field.h
  3. 2
      sql/filesort.cc
  4. 18
      sql/item.cc
  5. 2
      sql/item.h
  6. 2
      sql/item_func.cc
  7. 2
      sql/sql_base.cc
  8. 2
      sql/sql_insert.cc
  9. 2
      sql/sql_show.cc
  10. 14
      sql/sql_table.cc
  11. 2
      sql/sql_yacc.yy
  12. 46
      sql/table.cc
  13. 2
      sql/unireg.cc
  14. 2
      storage/innobase/handler/ha_innodb.cc

20
sql/field.cc

@ -2310,7 +2310,7 @@ void Field::set_default()
if (default_value)
{
table->in_use->reset_arena_for_cached_items(table->expr_arena);
(void) default_value->expr_item->save_in_field(this, 0);
(void) default_value->expr->save_in_field(this, 0);
table->in_use->reset_arena_for_cached_items(0);
return;
}
@ -9788,7 +9788,7 @@ bool check_expression(Virtual_column_info *vcol, const char *name,
to be part of the virtual column
*/
res.errors= 0;
ret= vcol->expr_item->walk(&Item::check_vcol_func_processor, 0, &res);
ret= vcol->expr->walk(&Item::check_vcol_func_processor, 0, &res);
vcol->flags= res.errors;
uint filter= VCOL_IMPOSSIBLE;
@ -9805,7 +9805,7 @@ bool check_expression(Virtual_column_info *vcol, const char *name,
Safe to call before fix_fields as long as vcol's don't include sub
queries (which is now checked in check_vcol_func_processor)
*/
if (vcol->expr_item->check_cols(1))
if (vcol->expr->check_cols(1))
return TRUE;
return FALSE;
}
@ -9821,7 +9821,7 @@ bool Column_definition::check(THD *thd)
/* Initialize data for a computed field */
if (vcol_info)
{
DBUG_ASSERT(vcol_info->expr_item);
DBUG_ASSERT(vcol_info->expr);
vcol_info->set_field_type(sql_type);
if (check_expression(vcol_info, field_name, vcol_info->stored_in_db
? VCOL_GENERATED_STORED : VCOL_GENERATED_VIRTUAL))
@ -9834,7 +9834,7 @@ bool Column_definition::check(THD *thd)
if (default_value)
{
Item *def_expr= default_value->expr_item;
Item *def_expr= default_value->expr;
if (check_expression(default_value, field_name, VCOL_DEFAULT))
DBUG_RETURN(TRUE);
@ -9859,15 +9859,15 @@ bool Column_definition::check(THD *thd)
DBUG_RETURN(1);
}
if (default_value && !default_value->expr_item->basic_const_item() &&
if (default_value && !default_value->expr->basic_const_item() &&
mysql_type_to_time_type(sql_type) == MYSQL_TIMESTAMP_DATETIME &&
default_value->expr_item->type() == Item::FUNC_ITEM)
default_value->expr->type() == Item::FUNC_ITEM)
{
/*
Special case: NOW() for TIMESTAMP and DATETIME fields are handled
as in MariaDB 10.1 by marking them in unireg_check.
*/
Item_func *fn= static_cast<Item_func*>(default_value->expr_item);
Item_func *fn= static_cast<Item_func*>(default_value->expr);
if (fn->functype() == Item_func::NOW_FUNC &&
(fn->decimals == 0 || fn->decimals >= length))
{
@ -10563,7 +10563,7 @@ Column_definition::Column_definition(THD *thd, Field *old_field,
String *res= orig_field->val_str(&tmp, orig_field->ptr_in_record(dv));
char *pos= (char*) thd->strmake(res->ptr(), res->length());
default_value= new (thd->mem_root) Virtual_column_info();
default_value->expr_item=
default_value->expr=
new (thd->mem_root) Item_string(thd, pos, res->length(), charset);
default_value->utf8= 0;
}
@ -10627,7 +10627,7 @@ Create_field *Create_field::clone(MEM_ROOT *mem_root) const
bool Column_definition::has_default_expression()
{
return (default_value &&
(!default_value->expr_item->basic_const_item() ||
(!default_value->expr->basic_const_item() ||
(flags & BLOB_FLAG)));
}

4
sql/field.h

@ -621,14 +621,14 @@ public:
/* Flag indicating that the field is physically stored in the database */
bool stored_in_db;
bool utf8; /* Already in utf8 */
Item *expr_item;
Item *expr;
LEX_STRING name; /* Name of constraint */
uint flags;
Virtual_column_info()
: field_type((enum enum_field_types)MYSQL_TYPE_VIRTUAL),
in_partitioning_expr(FALSE), stored_in_db(FALSE),
utf8(TRUE), expr_item(NULL), flags(0)
utf8(TRUE), expr(NULL), flags(0)
{
name.str= NULL;
name.length= 0;

2
sql/filesort.cc

@ -1272,7 +1272,7 @@ static void register_used_fields(Sort_param *param)
{
if (field->vcol_info)
{
Item *vcol_item= field->vcol_info->expr_item;
Item *vcol_item= field->vcol_info->expr;
vcol_item->walk(&Item::register_field_in_read_map, 1, 0);
}
bitmap_set_bit(bitmap, field->field_index);

18
sql/item.cc

@ -905,7 +905,7 @@ bool Item_field::register_field_in_read_map(void *arg)
if (field->vcol_info &&
!bitmap_fast_test_and_set(field->table->vcol_set, field->field_index))
{
res= field->vcol_info->expr_item->walk(&Item::register_field_in_read_map,1,arg);
res= field->vcol_info->expr->walk(&Item::register_field_in_read_map,1,arg);
}
if (field->table == table || !table)
bitmap_set_bit(field->table->read_set, field->field_index);
@ -1000,8 +1000,8 @@ bool Item_field::update_vcol_processor(void *arg)
if (field->vcol_info &&
!bitmap_fast_test_and_set(map, field->field_index))
{
field->vcol_info->expr_item->walk(&Item::update_vcol_processor, 0, arg);
field->vcol_info->expr_item->save_in_field(field, 0);
field->vcol_info->expr->walk(&Item::update_vcol_processor, 0, arg);
field->vcol_info->expr->save_in_field(field, 0);
}
return 0;
}
@ -8642,7 +8642,7 @@ bool Item_default_value::fix_fields(THD *thd, Item **items)
{
fix_session_vcol_expr_for_read(thd, field, field->default_value);
if (thd->mark_used_columns != MARK_COLUMNS_NONE)
field->default_value->expr_item->walk(&Item::register_field_in_read_map, 1, 0);
field->default_value->expr->walk(&Item::register_field_in_read_map, 1, 0);
IF_DBUG(def_field->is_stat_field=1,); // a hack to fool ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
}
return FALSE;
@ -10454,9 +10454,9 @@ void Item::register_in(THD *thd)
void Virtual_column_info::print(String *str)
{
expr_item->print(str, (enum_query_type)(QT_ITEM_ORIGINAL_FUNC_NULLIF |
QT_ITEM_IDENT_SKIP_DB_NAMES |
QT_ITEM_IDENT_SKIP_TABLE_NAMES |
QT_ITEM_CACHE_WRAPPER_SKIP_DETAILS |
QT_TO_SYSTEM_CHARSET));
expr->print(str, (enum_query_type)(QT_ITEM_ORIGINAL_FUNC_NULLIF |
QT_ITEM_IDENT_SKIP_DB_NAMES |
QT_ITEM_IDENT_SKIP_TABLE_NAMES |
QT_ITEM_CACHE_WRAPPER_SKIP_DETAILS |
QT_TO_SYSTEM_CHARSET));
}

2
sql/item.h

@ -5788,7 +5788,7 @@ inline bool Virtual_column_info::is_equal(const Virtual_column_info* vcol) const
{
return field_type == vcol->get_real_type()
&& stored_in_db == vcol->is_stored()
&& expr_item->eq(vcol->expr_item, true);
&& expr->eq(vcol->expr, true);
}
#endif /* SQL_ITEM_INCLUDED */

2
sql/item_func.cc

@ -4747,7 +4747,7 @@ bool Item_func_set_user_var::register_field_in_read_map(void *arg)
bitmap_set_bit(result_field->table->read_set, result_field->field_index);
if (result_field->vcol_info)
return result_field->vcol_info->
expr_item->walk(&Item::register_field_in_read_map, 1, arg);
expr->walk(&Item::register_field_in_read_map, 1, arg);
}
return 0;
}

2
sql/sql_base.cc

@ -7950,7 +7950,7 @@ void switch_defaults_to_nullable_trigger_fields(TABLE *table)
for (Field **field_ptr= table->default_field; *field_ptr ; field_ptr++)
{
Field *field= (*field_ptr);
field->default_value->expr_item->walk(&Item::switch_to_nullable_fields_processor, 1, trigger_field);
field->default_value->expr->walk(&Item::switch_to_nullable_fields_processor, 1, trigger_field);
*field_ptr= (trigger_field[field->field_index]);
}
}

2
sql/sql_insert.cc

@ -2357,7 +2357,7 @@ end_create:
if (vcol) \
{ \
(vcol)= (Virtual_column_info*)(thd)->memdup((vcol), sizeof(*(vcol))); \
(vcol)->expr_item= NULL; \
(vcol)->expr= NULL; \
}
/**

2
sql/sql_show.cc

@ -1663,7 +1663,7 @@ static bool get_field_default_value(THD *thd, Field *field, String *def_value,
if (field->default_value)
{
field->default_value->print(&str);
if (field->default_value->expr_item->need_parentheses_in_default())
if (field->default_value->expr->need_parentheses_in_default())
{
def_value->set_charset(&my_charset_utf8mb4_general_ci);
def_value->append('(');

14
sql/sql_table.cc

@ -3345,8 +3345,8 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
We can only do this for constants as we have not yet run fix_fields.
*/
if (sql_field->default_value &&
sql_field->default_value->expr_item->basic_const_item() &&
save_cs != sql_field->default_value->expr_item->collation.collation &&
sql_field->default_value->expr->basic_const_item() &&
save_cs != sql_field->default_value->expr->collation.collation &&
(sql_field->sql_type == MYSQL_TYPE_VAR_STRING ||
sql_field->sql_type == MYSQL_TYPE_STRING ||
sql_field->sql_type == MYSQL_TYPE_SET ||
@ -3357,7 +3357,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
sql_field->sql_type == MYSQL_TYPE_ENUM))
{
Item *item;
if (!(item= sql_field->default_value->expr_item->
if (!(item= sql_field->default_value->expr->
safe_charset_converter(thd, save_cs)))
{
/* Could not convert */
@ -3365,16 +3365,16 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
DBUG_RETURN(TRUE);
}
/* Fix for prepare statement */
thd->change_item_tree(&sql_field->default_value->expr_item, item);
thd->change_item_tree(&sql_field->default_value->expr, item);
}
if (sql_field->default_value &&
sql_field->default_value->expr_item->basic_const_item() &&
sql_field->default_value->expr->basic_const_item() &&
(sql_field->sql_type == MYSQL_TYPE_SET ||
sql_field->sql_type == MYSQL_TYPE_ENUM))
{
StringBuffer<MAX_FIELD_WIDTH> str;
String *def= sql_field->default_value->expr_item->val_str(&str);
String *def= sql_field->default_value->expr->val_str(&str);
bool not_found;
if (def == NULL) /* SQL "NULL" maps to NULL */
{
@ -6412,7 +6412,7 @@ static bool fill_alter_inplace_info(THD *thd,
uses DEFAULT() function. The check is kind of expensive, so don't
do it if ALTER_COLUMN_VCOL is already set.
*/
if (field->vcol_info->expr_item->walk(
if (field->vcol_info->expr->walk(
&Item::check_func_default_processor, 0, 0))
{
ha_alter_info->handler_flags|= alter_expr;

2
sql/sql_yacc.yy

@ -918,7 +918,7 @@ Virtual_column_info *add_virtual_expression(THD *thd, Item *expr)
mem_alloc_error(sizeof(Virtual_column_info));
return 0;
}
v->expr_item= expr;
v->expr= expr;
v->utf8= 0; /* connection charset */
return v;
}

46
sql/table.cc

@ -1039,7 +1039,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
case VCOL_GENERATED_STORED:
vcol= unpack_vcol_info_from_frm(thd, mem_root, table, pos, expr_length,
(*field_ptr)->vcol_info, error_reported);
DBUG_ASSERT((*field_ptr)->vcol_info->expr_item == NULL);
DBUG_ASSERT((*field_ptr)->vcol_info->expr == NULL);
(*field_ptr)->vcol_info= vcol;
*(vfield_ptr++)= *field_ptr;
break;
@ -1047,7 +1047,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
vcol= unpack_vcol_info_from_frm(thd, mem_root, table, pos, expr_length,
(*field_ptr)->default_value,
error_reported);
DBUG_ASSERT((*field_ptr)->default_value->expr_item == NULL);
DBUG_ASSERT((*field_ptr)->default_value->expr == NULL);
(*field_ptr)->default_value= vcol;
*(dfield_ptr++)= *field_ptr;
break;
@ -1055,7 +1055,7 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
vcol= unpack_vcol_info_from_frm(thd, mem_root, table, pos, expr_length,
(*field_ptr)->check_constraint,
error_reported);
DBUG_ASSERT((*field_ptr)->check_constraint->expr_item == NULL);
DBUG_ASSERT((*field_ptr)->check_constraint->expr == NULL);
(*field_ptr)->check_constraint= vcol;
*check_constraint_ptr++= vcol;
break;
@ -1081,10 +1081,10 @@ bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
vcol= unpack_vcol_info_from_frm(thd, mem_root, table, (uchar*)buf, len,
(*field_ptr)->default_value,
error_reported);
DBUG_ASSERT((*field_ptr)->default_value->expr_item == NULL);
DBUG_ASSERT((*field_ptr)->default_value->expr == NULL);
(*field_ptr)->default_value= vcol;
*(dfield_ptr++)= *field_ptr;
if (!field->default_value->expr_item)
if (!field->default_value->expr)
DBUG_RETURN(1);
}
else if (field->has_update_default_function() && !field->default_value)
@ -2663,7 +2663,7 @@ static bool fix_vcol_expr(THD *thd, Virtual_column_info *vcol)
const char *save_where= thd->where;
thd->where= "virtual column function";
int error= vcol->expr_item->fix_fields(thd, &vcol->expr_item);
int error= vcol->expr->fix_fields(thd, &vcol->expr);
thd->mark_used_columns= save_mark_used_columns;
thd->where= save_where;
@ -2690,8 +2690,8 @@ bool fix_session_vcol_expr(THD *thd, Virtual_column_info *vcol)
if (!(vcol->flags & (VCOL_TIME_FUNC|VCOL_SESSION_FUNC)))
DBUG_RETURN(0);
vcol->expr_item->cleanup();
DBUG_ASSERT(!vcol->expr_item->fixed);
vcol->expr->cleanup();
DBUG_ASSERT(!vcol->expr->fixed);
DBUG_RETURN(fix_vcol_expr(thd, vcol));
}
@ -2747,7 +2747,7 @@ bool fix_session_vcol_expr_for_read(THD *thd, Field *field,
static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
Virtual_column_info *vcol)
{
Item* func_expr= vcol->expr_item;
Item* func_expr= vcol->expr;
DBUG_ENTER("fix_and_check_vcol_expr");
DBUG_PRINT("info", ("vcol: %p", vcol));
DBUG_ASSERT(func_expr);
@ -2762,7 +2762,7 @@ static bool fix_and_check_vcol_expr(THD *thd, TABLE *table,
DBUG_RETURN(0); // already checked, no need to do it again
/* fix_fields could've changed the expression */
func_expr= vcol->expr_item;
func_expr= vcol->expr;
/* this was checked in check_expression(), but the frm could be mangled... */
if (unlikely(func_expr->result_type() == ROW_RESULT))
@ -2941,7 +2941,7 @@ end:
static bool check_vcol_forward_refs(Field *field, Virtual_column_info *vcol)
{
bool res= vcol &&
vcol->expr_item->walk(&Item::check_field_expression_processor, 0,
vcol->expr->walk(&Item::check_field_expression_processor, 0,
field);
return res;
}
@ -5077,7 +5077,7 @@ int TABLE::verify_constraints(bool ignore_failure)
{
for (Virtual_column_info **chk= check_constraints ; *chk ; chk++)
{
if ((*chk)->expr_item->val_int() == 0)
if ((*chk)->expr->val_int() == 0)
{
my_error(ER_CONSTRAINT_FAILED,
MYF(ignore_failure ? ME_JUST_WARNING : 0), (*chk)->name.str,
@ -6187,9 +6187,9 @@ void TABLE::mark_columns_used_by_index_no_reset(uint index,
{
bitmap_set_bit(bitmap, key_part->fieldnr-1);
if (key_part->field->vcol_info &&
key_part->field->vcol_info->expr_item)
key_part->field->vcol_info->expr)
key_part->field->vcol_info->
expr_item->walk(&Item::register_field_in_bitmap, 1, bitmap);
expr->walk(&Item::register_field_in_bitmap, 1, bitmap);
}
}
@ -6553,7 +6553,7 @@ bool TABLE::mark_virtual_col(Field *field)
DBUG_ASSERT(field->vcol_info);
if (!(res= bitmap_fast_test_and_set(vcol_set, field->field_index)))
{
Item *vcol_item= field->vcol_info->expr_item;
Item *vcol_item= field->vcol_info->expr;
DBUG_ASSERT(vcol_item);
vcol_item->walk(&Item::register_field_in_read_map, 1, 0);
}
@ -6611,7 +6611,7 @@ bool TABLE::mark_virtual_columns_for_write(bool insert_fl)
else
{
MY_BITMAP *save_read_set= read_set, *save_vcol_set= vcol_set;
Item *vcol_item= tmp_vfield->vcol_info->expr_item;
Item *vcol_item= tmp_vfield->vcol_info->expr;
DBUG_ASSERT(vcol_item);
bitmap_clear_all(&tmp_set);
read_set= vcol_set= &tmp_set;
@ -6652,7 +6652,7 @@ void TABLE::mark_columns_used_by_check_constraints(void)
read_set= s->check_set;
for (Virtual_column_info **chk= check_constraints ; *chk ; chk++)
(*chk)->expr_item->walk(&Item::register_field_in_read_map, 1, 0);
(*chk)->expr->walk(&Item::register_field_in_read_map, 1, 0);
read_set= save_read_set;
s->check_set_initialized= 1;
@ -6680,7 +6680,7 @@ void TABLE::mark_default_fields_for_write(bool is_insert)
if (is_insert && field->default_value)
{
bitmap_set_bit(write_set, field->field_index);
field->default_value->expr_item->
field->default_value->expr->
walk(&Item::register_field_in_read_map, 1, 0);
}
else if (!is_insert && field->has_update_default_function())
@ -7355,7 +7355,7 @@ int TABLE::update_virtual_fields(enum_vcol_update_mode update_mode)
vf= (*vfield_ptr);
Virtual_column_info *vcol_info= vf->vcol_info;
DBUG_ASSERT(vcol_info);
DBUG_ASSERT(vcol_info->expr_item);
DBUG_ASSERT(vcol_info->expr);
bool update;
switch (update_mode) {
@ -7382,7 +7382,7 @@ int TABLE::update_virtual_fields(enum_vcol_update_mode update_mode)
if (update)
{
/* Compute the actual value of the virtual fields */
vcol_info->expr_item->save_in_field(vf, 0);
vcol_info->expr->save_in_field(vf, 0);
DBUG_PRINT("info", ("field '%s' - updated", vf->field_name));
}
else
@ -7400,8 +7400,8 @@ int TABLE::update_virtual_field(Field *vf)
in_use->reset_arena_for_cached_items(expr_arena);
bitmap_clear_all(&tmp_set);
vf->vcol_info->expr_item->walk(&Item::update_vcol_processor, 0, &tmp_set);
vf->vcol_info->expr_item->save_in_field(vf, 0);
vf->vcol_info->expr->walk(&Item::update_vcol_processor, 0, &tmp_set);
vf->vcol_info->expr->save_in_field(vf, 0);
in_use->reset_arena_for_cached_items(0);
DBUG_RETURN(0);
}
@ -7450,7 +7450,7 @@ int TABLE::update_default_fields(bool update_command, bool ignore_errors)
{
if (field->default_value &&
(field->default_value->flags || field->flags & BLOB_FLAG))
res|= (field->default_value->expr_item->save_in_field(field, 0) < 0);
res|= (field->default_value->expr->save_in_field(field, 0) < 0);
}
else
res|= field->evaluate_update_default_function();

2
sql/unireg.cc

@ -981,7 +981,7 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options,
if (field->default_value && !field->default_value->flags &&
!(field->flags & BLOB_FLAG))
{
Item *expr= field->default_value->expr_item;
Item *expr= field->default_value->expr;
int res= !expr->fixed && // may be already fixed if ALTER TABLE
expr->fix_fields(thd, &expr);
if (!res)

2
storage/innobase/handler/ha_innodb.cc

@ -11811,7 +11811,7 @@ prepare_vcol_for_base_setup(
field->table->read_set = field->table->vcol_set = &field->table->tmp_set;
bitmap_clear_all(&field->table->tmp_set);
field->vcol_info->expr_item->walk(
field->vcol_info->expr->walk(
&Item::register_field_in_read_map, 1, field->table);
col->num_base= bitmap_bits_set(&field->table->tmp_set);
if (col->num_base != 0) {

Loading…
Cancel
Save