Commit a985031a authored by unknown's avatar unknown
Browse files

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

into mysql.com:/home/dlenev/src/mysql-5.0-ttdf


sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
parents 73b4415c d51a5bae
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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);
}
+3 −4
Original line number Diff line number Diff line
@@ -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 @@ class sp_instr_set_trigger_field : public sp_instr

  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

+8 −5
Original line number Diff line number Diff line
@@ -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);
          }