2007-06-19 09:56:19 +02:00
|
|
|
show status like "binlog_cache_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_use 0
|
|
|
|
show status like "binlog_cache_disk_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_disk_use 0
|
|
|
|
create table t1 (a int) engine=innodb;
|
|
|
|
show status like "binlog_cache_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_use 1
|
|
|
|
show status like "binlog_cache_disk_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_disk_use 1
|
|
|
|
begin;
|
|
|
|
delete from t1;
|
|
|
|
commit;
|
|
|
|
show status like "binlog_cache_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_use 2
|
|
|
|
show status like "binlog_cache_disk_use";
|
|
|
|
Variable_name Value
|
|
|
|
Binlog_cache_disk_use 1
|
|
|
|
drop table t1;
|
2008-02-19 17:27:18 +02:00
|
|
|
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM;
|
|
|
|
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
|
|
|
CREATE FUNCTION bug23333()
|
|
|
|
RETURNS int(11)
|
|
|
|
DETERMINISTIC
|
|
|
|
BEGIN
|
|
|
|
INSERT INTO t1 VALUES (NULL);
|
|
|
|
SELECT COUNT(*) FROM t1 INTO @a;
|
|
|
|
RETURN @a;
|
|
|
|
END|
|
|
|
|
INSERT INTO t2 VALUES (2),(10+bug23333());
|
|
|
|
SHOW MASTER STATUS;
|
|
|
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
Bug#36570: Parse error of CREATE PROCEDURE stmt with comments on \
slave
The stored-routine code took the contents of the (lowest) parser
and copied it directly to the binlog, which causes problems if there
is a special case of interpretation at the parser level -- which
there is, in the "/*!VER */" comments. The trailing "*/" caused
errors on the slave, naturally.
Now, since by that point we have /properly/ created parse-tree (as
the rest of the server should do!) for the stored-routine CREATE, we
can construct a perfect statement from that information, instead of
writing uncertain information from an unknown parser state.
Fortunately, there's already a function nearby that does exactly
that.
---
Update for Bug#36570. Qualify routine names with db name when
writing to the binlog ONLY if the source text is qualified.
mysql-test/r/binlog_innodb.result:
Offsets changed due to quoting.
---
New offset to account for db-qualified names.
mysql-test/r/ctype_cp932_binlog.result:
Offsets changed due to quoting.
---
Qualify routine names with DB. Offsets change also.
mysql-test/r/mysqlbinlog.result:
Case changed in result due to interpretation of data instead of
literal recitation.
---
Qualify procedure name with db.
mysql-test/r/rpl_sp.result:
Offsets changed due to quoting. Added tests.
---
Qualify routine names with DB if qualified in query. Offsets change also.
mysql-test/t/rpl_sp.test:
Add version-limiting quotes to exercise bug#36570. Test that
backtick-quoted identifiers and labels work also.
---
Use different db to show qualification works. Qualify routine names
with DB if qualified in query.
sql/sp.cc:
In create_string, we may not have a sp_name parameter yet, so
instead pass the char* and length of the only member we'd get out
of it.
Having done that, we can use the same function to write the
CREATE (FUNC|TRIG|PROC) statement to the binlog as we always used
to display the statement to the user.
---
Make the db name part of the CREATE string if it is specified.
Specify it in part of writing to the binlog when creating a new
routine.
sql/sp_head.cc:
Set the sp_head m_explicit_name member as the sp_name member is set.
We can not peek at this later, as the sp_name is gone by then.
sql/sp_head.h:
Add a member to track whether the name is qualified with the
database.
2008-05-15 19:13:24 -04:00
|
|
|
# 184141
|
2008-02-19 17:27:18 +02:00
|
|
|
DROP FUNCTION bug23333;
|
|
|
|
DROP TABLE t1, t2;
|