1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

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().
This commit is contained in:
kroki@mysql.com
2006-04-12 19:31:00 +04:00
parent 739ee02cf6
commit c8e22ff70b
7 changed files with 80 additions and 36 deletions

View File

@ -71,14 +71,8 @@ Item *create_func_ceiling(Item* a)
Item *create_func_connection_id(void)
{
THD *thd=current_thd;
thd->lex->safe_to_cache_query= 0;
return new Item_static_int_func("connection_id()",
(longlong)
((thd->slave_thread) ?
thd->variables.pseudo_thread_id :
thd->thread_id),
10);
current_thd->lex->safe_to_cache_query= 0;
return new Item_func_connection_id();
}
Item *create_func_conv(Item* a, Item *b, Item *c)