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
d15f2426
Commit
d15f2426
authored
Dec 21, 2003
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug in replacation for not x86 platforms
Portability fixes
parent
2e77049d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
27 additions
and
27 deletions
+27
-27
mysql-test/r/rpl_relayrotate.result
mysql-test/r/rpl_relayrotate.result
+1
-1
mysql-test/t/rpl_relayrotate.test
mysql-test/t/rpl_relayrotate.test
+1
-0
sql/log_event.cc
sql/log_event.cc
+13
-13
sql/uniques.cc
sql/uniques.cc
+12
-13
No files found.
mysql-test/r/rpl_relayrotate.result
View file @
d15f2426
...
@@ -18,5 +18,5 @@ max(a)
...
@@ -18,5 +18,5 @@ max(a)
8000
8000
show slave status;
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
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
9306
1 master-bin.000001 687207 # # master-bin.000001 Yes Yes 0 0 687207 # None 0 No #
# 127.0.0.1 root
MASTER_MYPORT
1 master-bin.000001 687207 # # master-bin.000001 Yes Yes 0 0 687207 # None 0 No #
drop table t1;
drop table t1;
mysql-test/t/rpl_relayrotate.test
View file @
d15f2426
...
@@ -58,6 +58,7 @@ start slave;
...
@@ -58,6 +58,7 @@ start slave;
select
master_pos_wait
(
'master-bin.001'
,
3000
)
>=
0
;
select
master_pos_wait
(
'master-bin.001'
,
3000
)
>=
0
;
select
max
(
a
)
from
t1
;
select
max
(
a
)
from
t1
;
--
replace_column
1
# 8 # 9 # 23 # 33 #
--
replace_column
1
# 8 # 9 # 23 # 33 #
--
replace_result
$MASTER_MYPORT
MASTER_MYPORT
show
slave
status
;
show
slave
status
;
# The following DROP is a very important cleaning task:
# The following DROP is a very important cleaning task:
...
...
sql/log_event.cc
View file @
d15f2426
...
@@ -1138,20 +1138,19 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
...
@@ -1138,20 +1138,19 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
/* variable-part: the status vars; only in MySQL 5.0 */
/* variable-part: the status vars; only in MySQL 5.0 */
const
char
*
start
=
buf
+
post_header_len
;
const
uchar
*
start
=
(
uchar
*
)
(
buf
+
post_header_len
)
;
const
char
*
end
=
start
+
status_vars_len
;
const
uchar
*
end
=
(
uchar
*
)
(
start
+
status_vars_len
)
;
/*
/*
The place from which we will start string duplication.
The place from which we will start string duplication.
*/
*/
const
char
*
start_dup
=
end
;
const
uchar
*
start_dup
=
end
;
for
(
const
char
*
pos
=
start
;
pos
<
end
;)
for
(
const
u
char
*
pos
=
start
;
pos
<
end
;)
{
{
switch
(
*
pos
)
switch
(
*
pos
++
)
{
{
case
Q_FLAGS2_CODE
:
case
Q_FLAGS2_CODE
:
flags2_inited
=
1
;
flags2_inited
=
1
;
flags2
=
uint4korr
(
++
pos
);
flags2
=
uint4korr
(
pos
);
DBUG_PRINT
(
"info"
,(
"In Query_log_event, read flags2: %lu"
,
flags2
));
DBUG_PRINT
(
"info"
,(
"In Query_log_event, read flags2: %lu"
,
flags2
));
pos
+=
4
;
pos
+=
4
;
break
;
break
;
...
@@ -1161,14 +1160,14 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
...
@@ -1161,14 +1160,14 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
char
buff
[
22
];
char
buff
[
22
];
#endif
#endif
sql_mode_inited
=
1
;
sql_mode_inited
=
1
;
sql_mode
=
(
ulong
)
uint8korr
(
++
pos
);
// QQ: Fix when sql_mode is ulonglong
sql_mode
=
(
ulong
)
uint8korr
(
pos
);
// QQ: Fix when sql_mode is ulonglong
DBUG_PRINT
(
"info"
,(
"In Query_log_event, read sql_mode: %s"
,
DBUG_PRINT
(
"info"
,(
"In Query_log_event, read sql_mode: %s"
,
llstr
(
sql_mode
,
buff
)));
llstr
(
sql_mode
,
buff
)));
pos
+=
8
;
pos
+=
8
;
break
;
break
;
}
}
case
Q_CATALOG_CODE
:
case
Q_CATALOG_CODE
:
catalog_len
=
*
(
++
pos
)
;
catalog_len
=
*
pos
;
/*
/*
Now 'pos' points to beginning of catalog - 1.
Now 'pos' points to beginning of catalog - 1.
The catalog must be included in the string which we will duplicate
The catalog must be included in the string which we will duplicate
...
@@ -1184,14 +1183,14 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
...
@@ -1184,14 +1183,14 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
default:
default:
/* That's why you must write status vars in growing order of code */
/* That's why you must write status vars in growing order of code */
DBUG_PRINT
(
"info"
,(
"Query_log_event has unknown status vars (first has\
DBUG_PRINT
(
"info"
,(
"Query_log_event has unknown status vars (first has\
code
=%d), skipping the rest of them"
,
*
pos
));
code
: %u), skipping the rest of them"
,
(
uint
)
*
(
pos
-
1
)
));
pos
=
end
;
pos
=
end
;
}
}
}
}
/* A 2nd variable part; this is common to all versions */
/* A 2nd variable part; this is common to all versions */
data_len
-=
start_dup
-
start
;
/* cut not-to-be-duplicated head */
data_len
-=
(
uint
)
(
start_dup
-
start
)
;
/* cut not-to-be-duplicated head */
if
(
!
(
data_buf
=
(
char
*
)
my_strdup_with_length
((
byte
*
)
start_dup
,
if
(
!
(
data_buf
=
(
char
*
)
my_strdup_with_length
((
byte
*
)
start_dup
,
data_len
,
data_len
,
MYF
(
MY_WME
))))
MYF
(
MY_WME
))))
...
@@ -1202,17 +1201,18 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
...
@@ -1202,17 +1201,18 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
if
(
catalog_len
)
if
(
catalog_len
)
{
{
catalog
=
tmp_buf
;
catalog
=
tmp_buf
;
tmp_buf
+=
end
-
start_dup
;
/* "seek" to db */
tmp_buf
+=
(
uint
)
(
end
-
start_dup
)
;
/* "seek" to db */
}
}
db
=
tmp_buf
;
db
=
tmp_buf
;
query
=
tmp_buf
+
db_len
+
1
;
query
=
tmp_buf
+
db_len
+
1
;
q_len
=
data_buf
+
data_len
-
query
;
q_len
=
data_buf
+
data_len
-
query
;
/* This is used to detect wrong parsing. Could be removed in the future. */
/* This is used to detect wrong parsing. Could be removed in the future. */
DBUG_PRINT
(
"info"
,
(
"catalog_len
=%d catalog='%s' db='%s' q_len=
%d"
,
DBUG_PRINT
(
"info"
,
(
"catalog_len
:%d catalog: '%s' db: '%s' q_len:
%d"
,
catalog_len
,
catalog
,
db
,
q_len
));
catalog_len
,
catalog
,
db
,
q_len
));
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
/*
/*
Query_log_event::print()
Query_log_event::print()
*/
*/
...
...
sql/uniques.cc
View file @
d15f2426
...
@@ -101,7 +101,6 @@ inline double log2_n_fact(double x)
...
@@ -101,7 +101,6 @@ inline double log2_n_fact(double x)
get_merge_buffers_cost()
get_merge_buffers_cost()
buff_elems Array of #s of elements in buffers
buff_elems Array of #s of elements in buffers
elem_size Size of element stored in buffer
elem_size Size of element stored in buffer
output_buff Pointer to storage for result buffer size
first Pointer to first merged element size
first Pointer to first merged element size
last Pointer to last merged element size
last Pointer to last merged element size
...
@@ -125,8 +124,7 @@ inline double log2_n_fact(double x)
...
@@ -125,8 +124,7 @@ inline double log2_n_fact(double x)
*/
*/
static
double
get_merge_buffers_cost
(
uint
*
buff_elems
,
uint
elem_size
,
static
double
get_merge_buffers_cost
(
uint
*
buff_elems
,
uint
elem_size
,
uint
*
output_buff
,
uint
*
first
,
uint
*
first
,
uint
*
last
)
uint
*
last
)
{
{
uint
total_buf_elems
=
0
;
uint
total_buf_elems
=
0
;
for
(
uint
*
pbuf
=
first
;
pbuf
<=
last
;
pbuf
++
)
for
(
uint
*
pbuf
=
first
;
pbuf
<=
last
;
pbuf
++
)
...
@@ -137,7 +135,7 @@ static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
...
@@ -137,7 +135,7 @@ static double get_merge_buffers_cost(uint *buff_elems, uint elem_size,
/* Using log2(n)=log(n)/log(2) formula */
/* Using log2(n)=log(n)/log(2) formula */
return
2
*
((
double
)
total_buf_elems
*
elem_size
)
/
IO_SIZE
+
return
2
*
((
double
)
total_buf_elems
*
elem_size
)
/
IO_SIZE
+
total_buf_elems
*
log
(
n_buffers
)
/
(
TIME_FOR_COMPARE_ROWID
*
M_LN2
);
total_buf_elems
*
log
(
(
double
)
n_buffers
)
/
(
TIME_FOR_COMPARE_ROWID
*
M_LN2
);
}
}
...
@@ -175,7 +173,6 @@ static double get_merge_many_buffs_cost(uint *buffer,
...
@@ -175,7 +173,6 @@ static double get_merge_many_buffs_cost(uint *buffer,
register
int
i
;
register
int
i
;
double
total_cost
=
0.0
;
double
total_cost
=
0.0
;
uint
*
buff_elems
=
buffer
;
/* #s of elements in each of merged sequences */
uint
*
buff_elems
=
buffer
;
/* #s of elements in each of merged sequences */
uint
*
lastbuff
;
/*
/*
Set initial state: first maxbuffer sequences contain max_n_elems elements
Set initial state: first maxbuffer sequences contain max_n_elems elements
...
@@ -193,21 +190,23 @@ static double get_merge_many_buffs_cost(uint *buffer,
...
@@ -193,21 +190,23 @@ static double get_merge_many_buffs_cost(uint *buffer,
{
{
while
(
maxbuffer
>=
MERGEBUFF2
)
while
(
maxbuffer
>=
MERGEBUFF2
)
{
{
lastbuff
=
0
;
uint
lastbuff
=
0
;
for
(
i
=
0
;
i
<=
(
int
)
maxbuffer
-
MERGEBUFF
*
3
/
2
;
i
+=
MERGEBUFF
)
for
(
i
=
0
;
i
<=
(
int
)
maxbuffer
-
MERGEBUFF
*
3
/
2
;
i
+=
MERGEBUFF
)
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
lastbuff
++
,
{
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
buff_elems
+
i
,
buff_elems
+
i
,
buff_elems
+
i
+
MERGEBUFF
-
1
);
buff_elems
+
i
+
MERGEBUFF
-
1
);
lastbuff
++
;
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
lastbuff
++
,
}
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
buff_elems
+
i
,
buff_elems
+
i
,
buff_elems
+
maxbuffer
);
buff_elems
+
maxbuffer
);
maxbuffer
=
(
uint
)
lastbuff
-
1
;
maxbuffer
=
lastbuff
;
}
}
}
}
/* Simulate final merge_buff call. */
/* Simulate final merge_buff call. */
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
buff_elems
,
total_cost
+=
get_merge_buffers_cost
(
buff_elems
,
elem_size
,
buff_elems
,
buff_elems
+
maxbuffer
);
buff_elems
,
buff_elems
+
maxbuffer
);
return
total_cost
;
return
total_cost
;
}
}
...
@@ -293,8 +292,8 @@ double Unique::get_use_cost(uint *buffer, uint nkeys, uint key_size,
...
@@ -293,8 +292,8 @@ double Unique::get_use_cost(uint *buffer, uint nkeys, uint key_size,
writes are sequential.
writes are sequential.
*/
*/
result
+=
DISK_SEEK_BASE_COST
*
n_full_trees
*
result
+=
DISK_SEEK_BASE_COST
*
n_full_trees
*
ceil
(
key_size
*
max_elements_in_tree
/
IO_SIZE
);
ceil
(
((
double
)
key_size
)
*
max_elements_in_tree
/
IO_SIZE
);
result
+=
DISK_SEEK_BASE_COST
*
ceil
(
key_size
*
last_tree_elems
/
IO_SIZE
);
result
+=
DISK_SEEK_BASE_COST
*
ceil
(
((
double
)
key_size
)
*
last_tree_elems
/
IO_SIZE
);
/* Cost of merge */
/* Cost of merge */
double
merge_cost
=
get_merge_many_buffs_cost
(
buffer
,
n_full_trees
,
double
merge_cost
=
get_merge_many_buffs_cost
(
buffer
,
n_full_trees
,
...
...
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