diff options
author | unknown <kroki@mysql.com> | 2006-04-12 19:31:00 +0400 |
---|---|---|
committer | unknown <kroki@mysql.com> | 2006-04-12 19:31:00 +0400 |
commit | 886a35bd82c153253007040202116b5f634705f4 (patch) | |
tree | 79c3147160f25f4c191b0d31943796b18cc50c8d /sql/item.h | |
parent | daac388624f52f9d95c43d186e9a759ff15fff18 (diff) | |
download | mariadb-git-886a35bd82c153253007040202116b5f634705f4.tar.gz |
Bug#16461: connection_id() does not work properly inside trigger
CONNECTION_ID() was implemented as a constant Item, i.e. an instance of
Item_static_int_func class holding value computed at creation time.
Since Items are created on parsing, and trigger statements are parsed
on table open, the first connection to open a particular table would
effectively set its own CONNECTION_ID() inside trigger statements for
that table.
Re-implement CONNECTION_ID() as a class derived from Item_int_func, and
compute connection_id on every call to fix_fields().
mysql-test/r/trigger.result:
Add result for bug#16461.
mysql-test/t/trigger.test:
Add test case for bug#16461.
sql/item.cc:
Remove now unused class Item_static_int_func.
sql/item.h:
Remove now unused class Item_static_int_func.
sql/item_create.cc:
Use new implementation of CONNECTION_ID().
sql/item_func.cc:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func). Set max_length to 10, as it was before.
Compute connection_id dynamically on every call to fix_fields().
sql/item_func.h:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func).
Diffstat (limited to 'sql/item.h')
-rw-r--r-- | sql/item.h | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/sql/item.h b/sql/item.h index 3b96091af38..d33e0ae34be 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1387,18 +1387,6 @@ public: }; -class Item_static_int_func :public Item_int -{ - const char *func_name; -public: - Item_static_int_func(const char *str_arg, longlong i, uint length) - :Item_int(NullS, i, length), func_name(str_arg) - {} - Item *safe_charset_converter(CHARSET_INFO *tocs); - void print(String *str) { str->append(func_name); } -}; - - class Item_uint :public Item_int { public: |