diff options
author | monty@donna.mysql.fi <> | 2001-03-15 11:55:44 +0200 |
---|---|---|
committer | monty@donna.mysql.fi <> | 2001-03-15 11:55:44 +0200 |
commit | c36f4fd0c222bba60b575f2538ad35b142fb30e3 (patch) | |
tree | 4cbc0ef76ce9d184843d9c7b9ab153d5f4d8e35b /sql/item_func.cc | |
parent | d0722d73b08d143ae23cdd44e22024995e8cf1a5 (diff) | |
download | mariadb-git-c36f4fd0c222bba60b575f2538ad35b142fb30e3.tar.gz |
Added tests if a user variable is changed in the same query.
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index ef46a624aaf..61e64be1e74 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1606,6 +1606,7 @@ static user_var_entry *get_variable(HASH *hash, LEX_STRING &name, entry->name.length=name.length; entry->value=0; entry->length=0; + entry->update_query_id=0; entry->type=STRING_RESULT; memcpy(entry->name.str, name.str, name.length+1); if (hash_insert(hash,(byte*) entry)) @@ -1625,6 +1626,7 @@ bool Item_func_set_user_var::fix_fields(THD *thd,TABLE_LIST *tables) if (Item_func::fix_fields(thd,tables) || !(entry= get_variable(&thd->user_vars, name, 1))) return 1; + entry->update_query_id=thd->query_id; return 0; } @@ -1809,10 +1811,12 @@ longlong Item_func_get_user_var::val_int() void Item_func_get_user_var::fix_length_and_dec() { + THD *thd=current_thd; maybe_null=1; decimals=NOT_FIXED_DEC; max_length=MAX_BLOB_WIDTH; - entry= get_variable(¤t_thd->user_vars, name, 0); + if ((entry= get_variable(&thd->user_vars, name, 0))) + const_var_flag= thd->query_id != entry->update_query_id; } |