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
33c6df4f
Commit
33c6df4f
authored
Feb 06, 2006
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new
parents
09eab9a8
a8f1cffd
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
98 additions
and
41 deletions
+98
-41
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+1
-7
sql/ha_ndbcluster_binlog.cc
sql/ha_ndbcluster_binlog.cc
+56
-14
sql/ha_ndbcluster_binlog.h
sql/ha_ndbcluster_binlog.h
+16
-10
sql/handler.cc
sql/handler.cc
+17
-7
sql/handler.h
sql/handler.h
+2
-1
sql/sql_db.cc
sql/sql_db.cc
+2
-2
sql/sql_table.cc
sql/sql_table.cc
+4
-0
No files found.
sql/ha_ndbcluster.cc
View file @
33c6df4f
...
...
@@ -4770,13 +4770,7 @@ int ha_ndbcluster::rename_table(const char *from, const char *to)
"Creating event for logging table failed. "
"See error log for details."
);
}
if
(
is_old_table_tmpfile
)
ndbcluster_log_schema_op
(
current_thd
,
share
,
current_thd
->
query
,
current_thd
->
query_length
,
m_dbname
,
new_tabname
,
0
,
0
,
SOT_ALTER_TABLE
);
else
if
(
!
is_old_table_tmpfile
)
ndbcluster_log_schema_op
(
current_thd
,
share
,
current_thd
->
query
,
current_thd
->
query_length
,
m_dbname
,
new_tabname
,
...
...
sql/ha_ndbcluster_binlog.cc
View file @
33c6df4f
...
...
@@ -441,6 +441,7 @@ ndbcluster_binlog_log_query(THD *thd, enum_binlog_command binlog_command,
break
;
case
LOGCOM_ALTER_TABLE
:
type
=
SOT_ALTER_TABLE
;
log
=
1
;
break
;
case
LOGCOM_RENAME_TABLE
:
type
=
SOT_RENAME_TABLE
;
...
...
@@ -461,8 +462,10 @@ ndbcluster_binlog_log_query(THD *thd, enum_binlog_command binlog_command,
break
;
}
if
(
log
)
{
ndbcluster_log_schema_op
(
thd
,
0
,
query
,
query_length
,
db
,
table_name
,
0
,
0
,
type
);
}
DBUG_VOID_RETURN
;
}
...
...
@@ -891,6 +894,7 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
}
char
tmp_buf2
[
FN_REFLEN
];
int
get_a_share
=
0
;
switch
(
type
)
{
case
SOT_DROP_TABLE
:
...
...
@@ -900,13 +904,15 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
/* redo the drop table query as is may contain several tables */
query
=
tmp_buf2
;
query_length
=
(
uint
)
(
strxmov
(
tmp_buf2
,
"drop table `"
,
table_name
,
"`"
,
NullS
)
-
tmp_buf2
);
break
;
table_name
,
"`"
,
NullS
)
-
tmp_buf2
);
// fall through
case
SOT_CREATE_TABLE
:
break
;
// fall through
case
SOT_RENAME_TABLE
:
break
;
// fall through
case
SOT_ALTER_TABLE
:
if
(
!
share
)
get_a_share
=
1
;
break
;
case
SOT_DROP_DB
:
break
;
...
...
@@ -922,6 +928,14 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
abort
();
/* should not happen, programming error */
}
if
(
get_a_share
)
{
char
key
[
FN_REFLEN
];
(
void
)
strxnmov
(
key
,
FN_REFLEN
,
share_prefix
,
db
,
"/"
,
table_name
,
NullS
);
share
=
get_share
(
key
,
0
,
false
,
false
);
}
const
NdbError
*
ndb_error
=
0
;
uint32
node_id
=
g_ndb_cluster_connection
->
node_id
();
Uint64
epoch
=
0
;
...
...
@@ -956,7 +970,7 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
}
Ndb
*
ndb
=
thd_ndb
->
ndb
;
char
old_db
[
128
];
char
old_db
[
FN_REFLEN
];
strcpy
(
old_db
,
ndb
->
getDatabaseName
());
char
tmp_buf
[
SCHEMA_QUERY_SIZE
];
...
...
@@ -974,9 +988,8 @@ int ndbcluster_log_schema_op(THD *thd, NDB_SHARE *share,
strcmp
(
NDB_SCHEMA_TABLE
,
table_name
))
{
ndb_error
=
&
dict
->
getNdbError
();
goto
end
;
}
DBUG_RETURN
(
0
)
;
goto
end
;
}
{
...
...
@@ -1119,6 +1132,10 @@ end:
}
(
void
)
pthread_mutex_unlock
(
&
share
->
mutex
);
}
if
(
get_a_share
)
free_share
(
&
share
);
DBUG_RETURN
(
0
);
}
...
...
@@ -1328,7 +1345,10 @@ static int
ndb_binlog_thread_handle_schema_event
(
THD
*
thd
,
Ndb
*
ndb
,
NdbEventOperation
*
pOp
,
List
<
Cluster_replication_schema
>
*
schema_list
,
MEM_ROOT
*
mem_root
)
*
post_epoch_log_list
,
List
<
Cluster_replication_schema
>
*
post_epoch_unlock_list
,
MEM_ROOT
*
mem_root
)
{
DBUG_ENTER
(
"ndb_binlog_thread_handle_schema_event"
);
NDB_SHARE
*
share
=
(
NDB_SHARE
*
)
pOp
->
getCustomData
();
...
...
@@ -1357,7 +1377,7 @@ ndb_binlog_thread_handle_schema_event(THD *thd, Ndb *ndb,
{
case
SOT_DROP_TABLE
:
/* binlog dropping table after any table operations */
schema
_list
->
push_back
(
schema
,
mem_root
);
post_epoch_log
_list
->
push_back
(
schema
,
mem_root
);
log_query
=
0
;
break
;
case
SOT_RENAME_TABLE
:
...
...
@@ -1389,7 +1409,7 @@ ndb_binlog_thread_handle_schema_event(THD *thd, Ndb *ndb,
TRUE
,
/* print error */
TRUE
);
/* don't binlog the query */
/* binlog dropping database after any table operations */
schema
_list
->
push_back
(
schema
,
mem_root
);
post_epoch_log
_list
->
push_back
(
schema
,
mem_root
);
log_query
=
0
;
break
;
case
SOT_CREATE_DB
:
...
...
@@ -1431,7 +1451,18 @@ ndb_binlog_thread_handle_schema_event(THD *thd, Ndb *ndb,
{
DBUG_DUMP
(
"slock"
,
(
char
*
)
schema
->
slock
,
schema
->
slock_length
);
if
(
bitmap_is_set
(
&
slock
,
node_id
))
ndbcluster_update_slock
(
thd
,
schema
->
db
,
schema
->
name
);
{
/*
If it is an SOT_ALTER_TABLE we need to acknowledge the
schema operation _after_ all the events have been
processed so that all schema events coming through
the event operation has been processed
*/
if
((
enum
SCHEMA_OP_TYPE
)
schema
->
type
==
SOT_ALTER_TABLE
)
post_epoch_unlock_list
->
push_back
(
schema
,
mem_root
);
else
ndbcluster_update_slock
(
thd
,
schema
->
db
,
schema
->
name
);
}
}
if
(
log_query
)
...
...
@@ -2738,7 +2769,8 @@ pthread_handler_t ndb_binlog_thread_func(void *arg)
MEM_ROOT
*
old_root
=
*
root_ptr
;
MEM_ROOT
mem_root
;
init_sql_alloc
(
&
mem_root
,
4096
,
0
);
List
<
Cluster_replication_schema
>
schema_list
;
List
<
Cluster_replication_schema
>
post_epoch_log_list
;
List
<
Cluster_replication_schema
>
post_epoch_unlock_list
;
*
root_ptr
=
&
mem_root
;
if
(
unlikely
(
schema_res
>
0
))
...
...
@@ -2751,7 +2783,9 @@ pthread_handler_t ndb_binlog_thread_func(void *arg)
{
if
(
!
pOp
->
hasError
())
ndb_binlog_thread_handle_schema_event
(
thd
,
schema_ndb
,
pOp
,
&
schema_list
,
&
mem_root
);
&
post_epoch_log_list
,
&
post_epoch_unlock_list
,
&
mem_root
);
else
sql_print_error
(
"NDB: error %lu (%s) on handling "
"binlog schema event"
,
...
...
@@ -2878,9 +2912,17 @@ pthread_handler_t ndb_binlog_thread_func(void *arg)
}
}
/*
process any operations that should be done after
the epoch is complete
*/
{
Cluster_replication_schema
*
schema
;
while
((
schema
=
schema_list
.
pop
()))
while
((
schema
=
post_epoch_unlock_list
.
pop
()))
{
ndbcluster_update_slock
(
thd
,
schema
->
db
,
schema
->
name
);
}
while
((
schema
=
post_epoch_log_list
.
pop
()))
{
char
*
thd_db_save
=
thd
->
db
;
thd
->
db
=
schema
->
db
;
...
...
sql/ha_ndbcluster_binlog.h
View file @
33c6df4f
...
...
@@ -29,18 +29,24 @@ extern ulong ndb_extra_logging;
#define INJECTOR_EVENT_LEN 200
/*
The numbers below must not change as they
are passed between mysql servers, and if changed
would break compatablility. Add new numbers to
the end.
*/
enum
SCHEMA_OP_TYPE
{
SOT_DROP_TABLE
,
SOT_CREATE_TABLE
,
SOT_RENAME_TABLE
,
SOT_ALTER_TABLE
,
SOT_DROP_DB
,
SOT_CREATE_DB
,
SOT_ALTER_DB
,
SOT_CLEAR_SLOCK
,
SOT_TABLESPACE
,
SOT_LOGFILE_GROUP
SOT_DROP_TABLE
=
0
,
SOT_CREATE_TABLE
=
1
,
SOT_RENAME_TABLE
=
2
,
SOT_ALTER_TABLE
=
3
,
SOT_DROP_DB
=
4
,
SOT_CREATE_DB
=
5
,
SOT_ALTER_DB
=
6
,
SOT_CLEAR_SLOCK
=
7
,
SOT_TABLESPACE
=
8
,
SOT_LOGFILE_GROUP
=
9
};
const
uint
max_ndb_nodes
=
64
;
/* multiple of 32 */
...
...
sql/handler.cc
View file @
33c6df4f
...
...
@@ -2529,12 +2529,11 @@ struct binlog_log_query_st
const
char
*
table_name
;
};
static
my_bool
binlog_log_query_handlerton
(
THD
*
thd
,
st_plugin_int
*
plugi
n
,
void
*
args
)
static
my_bool
binlog_log_query_handlerton
2
(
THD
*
thd
,
const
handlerton
*
hto
n
,
void
*
args
)
{
struct
binlog_log_query_st
*
b
=
(
struct
binlog_log_query_st
*
)
args
;
handlerton
*
hton
=
(
handlerton
*
)
plugin
->
plugin
->
info
;
if
(
hton
->
state
==
SHOW_OPTION_YES
&&
hton
->
binlog_log_query
)
hton
->
binlog_log_query
(
thd
,
b
->
binlog_command
,
...
...
@@ -2545,7 +2544,15 @@ static my_bool binlog_log_query_handlerton(THD *thd,
return
FALSE
;
}
void
ha_binlog_log_query
(
THD
*
thd
,
enum_binlog_command
binlog_command
,
static
my_bool
binlog_log_query_handlerton
(
THD
*
thd
,
st_plugin_int
*
plugin
,
void
*
args
)
{
return
binlog_log_query_handlerton2
(
thd
,
(
const
handlerton
*
)
plugin
->
plugin
->
info
,
args
);
}
void
ha_binlog_log_query
(
THD
*
thd
,
const
handlerton
*
hton
,
enum_binlog_command
binlog_command
,
const
char
*
query
,
uint
query_length
,
const
char
*
db
,
const
char
*
table_name
)
{
...
...
@@ -2555,8 +2562,11 @@ void ha_binlog_log_query(THD *thd, enum_binlog_command binlog_command,
b
.
query_length
=
query_length
;
b
.
db
=
db
;
b
.
table_name
=
table_name
;
plugin_foreach
(
thd
,
binlog_log_query_handlerton
,
MYSQL_STORAGE_ENGINE_PLUGIN
,
&
b
);
if
(
hton
==
0
)
plugin_foreach
(
thd
,
binlog_log_query_handlerton
,
MYSQL_STORAGE_ENGINE_PLUGIN
,
&
b
);
else
binlog_log_query_handlerton2
(
thd
,
hton
,
&
b
);
}
#endif
...
...
sql/handler.h
View file @
33c6df4f
...
...
@@ -2020,7 +2020,8 @@ int ha_repl_report_replication_stop(THD *thd);
int
ha_reset_logs
(
THD
*
thd
);
int
ha_binlog_index_purge_file
(
THD
*
thd
,
const
char
*
file
);
void
ha_reset_slave
(
THD
*
thd
);
void
ha_binlog_log_query
(
THD
*
thd
,
enum_binlog_command
binlog_command
,
void
ha_binlog_log_query
(
THD
*
thd
,
const
handlerton
*
db_type
,
enum_binlog_command
binlog_command
,
const
char
*
query
,
uint
query_length
,
const
char
*
db
,
const
char
*
table_name
);
void
ha_binlog_wait
(
THD
*
thd
);
...
...
sql/sql_db.cc
View file @
33c6df4f
...
...
@@ -501,7 +501,7 @@ bool mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create_info,
query_length
=
thd
->
query_length
;
}
ha_binlog_log_query
(
thd
,
LOGCOM_CREATE_DB
,
ha_binlog_log_query
(
thd
,
0
,
LOGCOM_CREATE_DB
,
query
,
query_length
,
db
,
""
);
...
...
@@ -579,7 +579,7 @@ bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create_info)
thd
->
variables
.
collation_database
=
thd
->
db_charset
;
}
ha_binlog_log_query
(
thd
,
LOGCOM_ALTER_DB
,
ha_binlog_log_query
(
thd
,
0
,
LOGCOM_ALTER_DB
,
thd
->
query
,
thd
->
query_length
,
db
,
""
);
...
...
sql/sql_table.cc
View file @
33c6df4f
...
...
@@ -4974,6 +4974,10 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
}
thd
->
proc_info
=
"end"
;
ha_binlog_log_query
(
thd
,
create_info
->
db_type
,
LOGCOM_ALTER_TABLE
,
thd
->
query
,
thd
->
query_length
,
db
,
table_name
);
DBUG_ASSERT
(
!
(
mysql_bin_log
.
is_open
()
&&
binlog_row_based
&&
(
create_info
->
options
&
HA_LEX_CREATE_TMP_TABLE
)));
write_bin_log
(
thd
,
TRUE
,
thd
->
query
,
thd
->
query_length
);
...
...
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