summaryrefslogtreecommitdiff
path: root/sql/item.h
diff options
context:
space:
mode:
authorunknown <kroki@mysql.com>2006-04-12 19:31:00 +0400
committerunknown <kroki@mysql.com>2006-04-12 19:31:00 +0400
commit886a35bd82c153253007040202116b5f634705f4 (patch)
tree79c3147160f25f4c191b0d31943796b18cc50c8d /sql/item.h
parentdaac388624f52f9d95c43d186e9a759ff15fff18 (diff)
downloadmariadb-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.h12
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: