Commit eaa7f6ab authored by dlenev@mysql.com's avatar dlenev@mysql.com

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/home/dlenev/src/mysql-5.0-ttdf
parents 34901082 0ef32672
......@@ -1499,8 +1499,8 @@ sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
DBUG_ENTER("sp_instr_set_trigger_field::execute");
/* QQ: Still unsure what should we return in case of error 1 or -1 ? */
if (!value->fixed && value->fix_fields(thd, 0, &value) ||
trigger_field.fix_fields(thd, 0, 0) ||
(value->save_in_field(trigger_field.field, 0) < 0))
trigger_field->fix_fields(thd, 0, 0) ||
(value->save_in_field(trigger_field->field, 0) < 0))
res= -1;
*nextp= m_ip + 1;
DBUG_RETURN(res);
......@@ -1510,7 +1510,7 @@ void
sp_instr_set_trigger_field::print(String *str)
{
str->append("set ", 4);
trigger_field.print(str);
trigger_field->print(str);
str->append(":=", 2);
value->print(str);
}
......
......@@ -467,9 +467,9 @@ class sp_instr_set_trigger_field : public sp_instr
public:
sp_instr_set_trigger_field(uint ip, sp_pcontext *ctx,
LEX_STRING field_name, Item *val)
Item_trigger_field *trg_fld, Item *val)
: sp_instr(ip, ctx),
trigger_field(Item_trigger_field::NEW_ROW, field_name.str),
trigger_field(trg_fld),
value(val)
{}
......@@ -480,9 +480,8 @@ public:
virtual void print(String *str);
Item_trigger_field trigger_field;
private:
Item_trigger_field *trigger_field;
Item *value;
}; // class sp_instr_trigger_field : public sp_instr
......
......@@ -7569,6 +7569,7 @@ sys_option_value:
{
/* We are in trigger and assigning value to field of new row */
Item *it;
Item_trigger_field *trg_fld;
sp_instr_set_trigger_field *i;
if ($1)
{
......@@ -7589,17 +7590,19 @@ sys_option_value:
it= new Item_null();
}
if (!(i= new sp_instr_set_trigger_field(
if (!(trg_fld= new Item_trigger_field(Item_trigger_field::NEW_ROW,
$2.base_name.str)) ||
!(i= new sp_instr_set_trigger_field(
lex->sphead->instructions(), lex->spcont,
$2.base_name, it)))
trg_fld, it)))
YYABORT;
/*
Let us add this item to list of all Item_trigger_field
objects in trigger.
*/
lex->trg_table_fields.link_in_list((byte *)&i->trigger_field,
(byte **)&i->trigger_field.next_trg_field);
lex->trg_table_fields.link_in_list((byte *)trg_fld,
(byte **)&trg_fld->next_trg_field);
lex->sphead->add_instr(i);
}
......
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