summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <dlenev@mysql.com>2005-05-27 14:38:34 +0400
committerunknown <dlenev@mysql.com>2005-05-27 14:38:34 +0400
commita985031a296b587b3c4227c43392afb072843c83 (patch)
tree9a48b100f23a5306ede89b784f66c2b23eca72a4
parent73b4415ce4db3973998f36e4ac92ba4e83c323f1 (diff)
parentd51a5baecb83341e65931b2430f86d9982367a04 (diff)
downloadmariadb-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.cc6
-rw-r--r--sql/sp_head.h7
-rw-r--r--sql/sql_yacc.yy13
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);
}