diff options
author | unknown <dlenev@mysql.com> | 2005-05-27 14:38:34 +0400 |
---|---|---|
committer | unknown <dlenev@mysql.com> | 2005-05-27 14:38:34 +0400 |
commit | a985031a296b587b3c4227c43392afb072843c83 (patch) | |
tree | 9a48b100f23a5306ede89b784f66c2b23eca72a4 | |
parent | 73b4415ce4db3973998f36e4ac92ba4e83c323f1 (diff) | |
parent | d51a5baecb83341e65931b2430f86d9982367a04 (diff) | |
download | mariadb-git-a985031a296b587b3c4227c43392afb072843c83.tar.gz |
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
-rw-r--r-- | sql/sp_head.cc | 6 | ||||
-rw-r--r-- | sql/sp_head.h | 7 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 13 |
3 files changed, 14 insertions, 12 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index cac7a64beea..217bcc0b728 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -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); } diff --git a/sql/sp_head.h b/sql/sp_head.h index 955007d1ea4..49eabce246b 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -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 diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 6b9676c8124..8181521969a 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -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( - lex->sphead->instructions(), lex->spcont, - $2.base_name, it))) + 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, + 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); } |