Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
83d4481a
Commit
83d4481a
authored
Mar 18, 2006
by
mskold@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/usr/local/home/marty/MySQL/mysql-5.1-new
parents
9e9d2e03
a8a2d16c
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
119 additions
and
35 deletions
+119
-35
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+26
-0
mysql-test/r/binlog_row_drop_tmp_tbl.result
mysql-test/r/binlog_row_drop_tmp_tbl.result
+0
-2
mysql-test/r/rpl_ps.result
mysql-test/r/rpl_ps.result
+2
-0
mysql-test/r/rpl_row_log.result
mysql-test/r/rpl_row_log.result
+3
-7
mysql-test/r/rpl_row_log_innodb.result
mysql-test/r/rpl_row_log_innodb.result
+3
-7
mysql-test/r/rpl_row_max_relay_size.result
mysql-test/r/rpl_row_max_relay_size.result
+1
-1
mysql-test/t/alter_table.test
mysql-test/t/alter_table.test
+20
-0
mysql-test/t/rpl_ps.test
mysql-test/t/rpl_ps.test
+4
-0
mysys/my_seek.c
mysys/my_seek.c
+3
-2
sql/field_conv.cc
sql/field_conv.cc
+1
-1
sql/handler.cc
sql/handler.cc
+35
-4
sql/sql_class.cc
sql/sql_class.cc
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+8
-10
sql/table.cc
sql/table.cc
+3
-0
sql/table.h
sql/table.h
+9
-0
No files found.
mysql-test/r/alter_table.result
View file @
83d4481a
...
...
@@ -621,3 +621,29 @@ create table t1 (t varchar(255) default null, key t (t(80)))
engine=myisam default charset=latin1;
alter table t1 change t t text;
drop table t1;
CREATE TABLE t1 (s CHAR(8) BINARY);
INSERT INTO t1 VALUES ('test');
SELECT LENGTH(s) FROM t1;
LENGTH(s)
4
ALTER TABLE t1 MODIFY s CHAR(10) BINARY;
SELECT LENGTH(s) FROM t1;
LENGTH(s)
4
DROP TABLE t1;
CREATE TABLE t1 (s BINARY(8));
INSERT INTO t1 VALUES ('test');
SELECT LENGTH(s) FROM t1;
LENGTH(s)
8
SELECT HEX(s) FROM t1;
HEX(s)
7465737400000000
ALTER TABLE t1 MODIFY s BINARY(10);
SELECT HEX(s) FROM t1;
HEX(s)
74657374000000000000
SELECT LENGTH(s) FROM t1;
LENGTH(s)
10
DROP TABLE t1;
mysql-test/r/binlog_row_drop_tmp_tbl.result
View file @
83d4481a
...
...
@@ -14,7 +14,5 @@ get_lock("a",10)
show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database `drop-temp+table-test`
drop database `drop-temp+table-test`;
mysql-test/r/rpl_ps.result
View file @
83d4481a
...
...
@@ -26,3 +26,5 @@ from-master-2-'',
from-var-from-master-3
drop table t1;
stop slave;
reset master;
reset slave;
mysql-test/r/rpl_row_log.result
View file @
83d4481a
...
...
@@ -57,8 +57,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
show binlog events in 'master-bin.000002';
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log)
master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log)
master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM
master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
master-bin.000002 # Table_map 1 # table_id: # (test.t2)
...
...
@@ -66,12 +64,12 @@ master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
show binary logs;
Log_name File_size
master-bin.000001 1256
master-bin.000002
48
3
master-bin.000002
37
3
start slave;
show binary logs;
Log_name File_size
slave-bin.000001 1354
slave-bin.000002
38
4
slave-bin.000002
27
4
show binlog events in 'slave-bin.000001' from 4;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
...
...
@@ -87,14 +85,12 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
show binlog events in 'slave-bin.000002' from 4;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log)
slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log)
slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
slave-bin.000002 # Table_map 1 # table_id: # (test.t2)
slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002
483 # # master-bin.000002 Yes Yes # 0 0 48
3 # None 0 No #
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002
373 # # master-bin.000002 Yes Yes # 0 0 37
3 # None 0 No #
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
...
...
mysql-test/r/rpl_row_log_innodb.result
View file @
83d4481a
...
...
@@ -61,8 +61,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
show binlog events in 'master-bin.000002';
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log)
master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log)
master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB
master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
master-bin.000002 # Table_map 1 # table_id: # (test.t2)
...
...
@@ -71,12 +69,12 @@ master-bin.000002 # Xid 1 # COMMIT /* XID */
show binary logs;
Log_name File_size
master-bin.000001 1310
master-bin.000002
51
0
master-bin.000002
40
0
start slave;
show binary logs;
Log_name File_size
slave-bin.000001 1408
slave-bin.000002
41
1
slave-bin.000002
30
1
show binlog events in 'slave-bin.000001' from 4;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
...
...
@@ -94,15 +92,13 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
show binlog events in 'slave-bin.000002' from 4;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log)
slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log)
slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
slave-bin.000002 # Table_map 1 # table_id: # (test.t2)
slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
slave-bin.000002 # Xid 1 # COMMIT /* XID */
show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002
510 # # master-bin.000002 Yes Yes # 0 0 51
0 # None 0 No #
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002
400 # # master-bin.000002 Yes Yes # 0 0 40
0 # None 0 No #
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
...
...
mysql-test/r/rpl_row_max_relay_size.result
View file @
83d4481a
...
...
@@ -58,4 +58,4 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000002
21
2 <Binlog_Ignore_DB>
master-bin.000002
10
2 <Binlog_Ignore_DB>
mysql-test/t/alter_table.test
View file @
83d4481a
...
...
@@ -449,3 +449,23 @@ create table t1 (t varchar(255) default null, key t (t(80)))
engine
=
myisam
default
charset
=
latin1
;
alter
table
t1
change
t
t
text
;
drop
table
t1
;
#
# Bug#18038 MySQL server corrupts binary columns data
#
CREATE
TABLE
t1
(
s
CHAR
(
8
)
BINARY
);
INSERT
INTO
t1
VALUES
(
'test'
);
SELECT
LENGTH
(
s
)
FROM
t1
;
ALTER
TABLE
t1
MODIFY
s
CHAR
(
10
)
BINARY
;
SELECT
LENGTH
(
s
)
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
s
BINARY
(
8
));
INSERT
INTO
t1
VALUES
(
'test'
);
SELECT
LENGTH
(
s
)
FROM
t1
;
SELECT
HEX
(
s
)
FROM
t1
;
ALTER
TABLE
t1
MODIFY
s
BINARY
(
10
);
SELECT
HEX
(
s
)
FROM
t1
;
SELECT
LENGTH
(
s
)
FROM
t1
;
DROP
TABLE
t1
;
mysql-test/t/rpl_ps.test
View file @
83d4481a
...
...
@@ -45,3 +45,7 @@ sync_with_master;
stop
slave
;
# End of 4.1 tests
reset
master
;
reset
slave
;
disconnect
master
;
mysys/my_seek.c
View file @
83d4481a
...
...
@@ -22,14 +22,15 @@
my_off_t
my_seek
(
File
fd
,
my_off_t
pos
,
int
whence
,
myf
MyFlags
__attribute__
((
unused
)))
{
reg1
os_off_t
newpos
;
reg1
os_off_t
newpos
=
-
1
;
DBUG_ENTER
(
"my_seek"
);
DBUG_PRINT
(
"my"
,(
"Fd: %d Hpos: %lu Pos: %lu Whence: %d MyFlags: %d"
,
fd
,
(
ulong
)
(((
ulonglong
)
pos
)
>>
32
),
(
ulong
)
pos
,
whence
,
MyFlags
));
DBUG_ASSERT
(
pos
!=
MY_FILEPOS_ERROR
);
/* safety check */
newpos
=
lseek
(
fd
,
pos
,
whence
);
if
(
-
1
!=
fd
)
newpos
=
lseek
(
fd
,
pos
,
whence
);
if
(
newpos
==
(
os_off_t
)
-
1
)
{
my_errno
=
errno
;
...
...
sql/field_conv.cc
View file @
83d4481a
...
...
@@ -593,7 +593,7 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
do_cut_string
:
do_cut_string_complex
);
else
if
(
to_length
>
from_length
)
{
if
(
(
to
->
flags
&
BINARY_FLAG
)
!=
0
)
if
(
to
->
charset
()
==
&
my_charset_bin
)
return
do_expand_binary
;
else
return
do_expand_string
;
...
...
sql/handler.cc
View file @
83d4481a
...
...
@@ -3150,16 +3150,47 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat)
declared static, but it works by putting it into an anonymous
namespace. */
namespace
{
struct
st_table_data
{
char
const
*
db
;
char
const
*
name
;
};
int
table_name_compare
(
void
const
*
a
,
void
const
*
b
)
{
st_table_data
const
*
x
=
(
st_table_data
const
*
)
a
;
st_table_data
const
*
y
=
(
st_table_data
const
*
)
b
;
/* Doing lexical compare in order (db,name) */
int
const
res
=
strcmp
(
x
->
db
,
y
->
db
);
return
res
!=
0
?
res
:
strcmp
(
x
->
name
,
y
->
name
);
}
bool
check_table_binlog_row_based
(
THD
*
thd
,
TABLE
*
table
)
{
static
st_table_data
const
ignore
[]
=
{
{
"mysql"
,
"event"
},
{
"mysql"
,
"general_log"
},
{
"mysql"
,
"slow_log"
}
};
my_size_t
const
ignore_size
=
sizeof
(
ignore
)
/
sizeof
(
*
ignore
);
st_table_data
const
item
=
{
table
->
s
->
db
.
str
,
table
->
s
->
table_name
.
str
};
if
(
table
->
s
->
cached_row_logging_check
==
-
1
)
table
->
s
->
cached_row_logging_check
=
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
)
&&
binlog_filter
->
db_ok
(
table
->
s
->
db
.
str
)
&&
bsearch
(
&
item
,
ignore
,
ignore_size
,
sizeof
(
st_table_data
),
table_name_compare
)
==
NULL
;
DBUG_ASSERT
(
table
->
s
->
cached_row_logging_check
==
0
||
table
->
s
->
cached_row_logging_check
==
1
);
return
thd
->
current_stmt_binlog_row_based
&&
thd
&&
(
thd
->
options
&
OPTION_BIN_LOG
)
&&
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
)
&&
mysql_bin_log
.
is_open
()
&&
binlog_filter
->
db_ok
(
table
->
s
->
db
.
str
)
&&
(
strcmp
(
table
->
s
->
db
.
str
,
"mysql"
)
||
strcmp
(
table
->
s
->
table_name
.
str
,
"event"
));
table
->
s
->
cached_row_logging_check
;
}
}
...
...
sql/sql_class.cc
View file @
83d4481a
...
...
@@ -2602,7 +2602,7 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype,
moving back and forth between using RBR for replication of
system tables and not using it.
Make sure to change in check_table_
current_stmt_binlog_row_based
according
Make sure to change in check_table_
binlog_row_based()
according
to how you treat this.
*/
case
THD
:
:
ROW_QUERY_TYPE
:
...
...
sql/sql_parse.cc
View file @
83d4481a
...
...
@@ -3144,8 +3144,8 @@ end_with_restore_list:
if
(
mysql_bin_log
.
is_open
())
{
thd
->
clear_error
();
// No binlog error generated
Query_log_event
qinfo
(
thd
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
mysql_bin_log
.
write
(
&
qinfo
);
thd
->
binlog_query
(
THD
::
STMT_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
}
}
select_lex
->
table_list
.
first
=
(
byte
*
)
first_table
;
...
...
@@ -3178,8 +3178,8 @@ end_with_restore_list:
if
(
mysql_bin_log
.
is_open
())
{
thd
->
clear_error
();
// No binlog error generated
Query_log_event
qinfo
(
thd
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
mysql_bin_log
.
write
(
&
qinfo
);
thd
->
binlog_query
(
THD
::
STMT_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
}
}
select_lex
->
table_list
.
first
=
(
byte
*
)
first_table
;
...
...
@@ -3203,8 +3203,8 @@ end_with_restore_list:
if
(
mysql_bin_log
.
is_open
())
{
thd
->
clear_error
();
// No binlog error generated
Query_log_event
qinfo
(
thd
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
mysql_bin_log
.
write
(
&
qinfo
);
thd
->
binlog_query
(
THD
::
STMT_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
}
}
select_lex
->
table_list
.
first
=
(
byte
*
)
first_table
;
...
...
@@ -3865,10 +3865,8 @@ end_with_restore_list:
if
(
!
(
res
=
mysql_create_user
(
thd
,
lex
->
users_list
)))
{
if
(
mysql_bin_log
.
is_open
())
{
thd
->
binlog_query
(
THD
::
MYSQL_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
FALSE
,
FALSE
);
}
send_ok
(
thd
);
}
break
;
...
...
@@ -4058,8 +4056,8 @@ end_with_restore_list:
{
if
(
mysql_bin_log
.
is_open
())
{
Query_log_event
qinfo
(
thd
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
mysql_bin_log
.
write
(
&
qinfo
);
thd
->
binlog_query
(
THD
::
STMT_QUERY_TYPE
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
}
}
send_ok
(
thd
);
...
...
sql/table.cc
View file @
83d4481a
...
...
@@ -146,6 +146,8 @@ TABLE_SHARE *alloc_table_share(TABLE_LIST *table_list, char *key,
under the protection of the LOCK_open mutex.
*/
share
->
table_map_id
=
~
0UL
;
share
->
cached_row_logging_check
=
-
1
;
#endif
memcpy
((
char
*
)
&
share
->
mem_root
,
(
char
*
)
&
mem_root
,
sizeof
(
mem_root
));
...
...
@@ -205,6 +207,7 @@ void init_tmp_table_share(TABLE_SHARE *share, const char *key,
*/
share
->
table_map_version
=
~
(
ulonglong
)
0
;
share
->
table_map_id
=
~
0UL
;
share
->
cached_row_logging_check
=
-
1
;
#endif
DBUG_VOID_RETURN
;
...
...
sql/table.h
View file @
83d4481a
...
...
@@ -191,6 +191,15 @@ typedef struct st_table_share
bool
waiting_on_cond
;
/* Protection against free */
ulong
table_map_id
;
/* for row-based replication */
ulonglong
table_map_version
;
/*
Cache for row-based replication table share checks that does not
need to be repeated. Possible values are: -1 when cache value is
not calculated yet, 0 when table *shall not* be replicated, 1 when
table *may* be replicated.
*/
int
cached_row_logging_check
;
/*
TRUE if this is a system table like 'mysql.proc', which we want to be
able to open and lock even when we already have some tables open and
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment