Commit aadfa648 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0

into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug15933

parents 1dc282ae 886a35bd
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -952,3 +952,16 @@ load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1();
drop table t1;
drop function f1;
drop function f2;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
conn_id INT,
trigger_conn_id INT
);
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
SET NEW.trigger_conn_id = CONNECTION_ID();
INSERT INTO t1 (conn_id, trigger_conn_id) VALUES (CONNECTION_ID(), -1);
INSERT INTO t1 (conn_id, trigger_conn_id) VALUES (CONNECTION_ID(), -1);
SELECT * FROM t1 WHERE conn_id != trigger_conn_id;
conn_id	trigger_conn_id
DROP TRIGGER t1_bi;
DROP TABLE t1;
+28 −0
Original line number Diff line number Diff line
@@ -1114,3 +1114,31 @@ load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1();
drop table t1;
drop function f1;
drop function f2;

#
# Test for Bug #16461 connection_id() does not work properly inside trigger
#
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

CREATE TABLE t1 (
    conn_id INT,
    trigger_conn_id INT
);
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
  SET NEW.trigger_conn_id = CONNECTION_ID();

INSERT INTO t1 (conn_id, trigger_conn_id) VALUES (CONNECTION_ID(), -1);

connect (con1,localhost,root,,);
INSERT INTO t1 (conn_id, trigger_conn_id) VALUES (CONNECTION_ID(), -1);
connection default;
disconnect con1;

SELECT * FROM t1 WHERE conn_id != trigger_conn_id;

DROP TRIGGER t1_bi;
DROP TABLE t1;

# End of 5.0 tests
+0 −16
Original line number Diff line number Diff line
@@ -644,22 +644,6 @@ Item *Item_num::safe_charset_converter(CHARSET_INFO *tocs)
}


Item *Item_static_int_func::safe_charset_converter(CHARSET_INFO *tocs)
{
  Item_string *conv;
  char buf[64];
  String *s, tmp(buf, sizeof(buf), &my_charset_bin);
  s= val_str(&tmp);
  if ((conv= new Item_static_string_func(func_name, s->ptr(), s->length(),
                                         s->charset())))
  {
    conv->str_value.copy();
    conv->str_value.mark_as_const();
  }
  return conv;
}


Item *Item_static_float_func::safe_charset_converter(CHARSET_INFO *tocs)
{
  Item_string *conv;
+0 −12
Original line number Diff line number Diff line
@@ -1387,18 +1387,6 @@ class Item_int :public Item_num
};


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:
+2 −8
Original line number Diff line number Diff line
@@ -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)
Loading