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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
af898aec
Commit
af898aec
authored
Apr 11, 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
196bcbf7
fae02215
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
65 additions
and
75 deletions
+65
-75
mysql-test/t/ndb_basic.test
mysql-test/t/ndb_basic.test
+0
-11
sql/field.cc
sql/field.cc
+5
-5
sql/ha_ndbcluster_binlog.cc
sql/ha_ndbcluster_binlog.cc
+60
-59
No files found.
mysql-test/t/ndb_basic.test
View file @
af898aec
...
...
@@ -6,17 +6,6 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
drop
database
if
exists
mysqltest
;
--
enable_warnings
# workaround for bug#16445
# remove to reproduce bug and run tests drom ndb start
# and with ndb_autodiscover disabled
CREATE
TABLE
t1
(
pk1
INT
NOT
NULL
PRIMARY
KEY
,
attr1
INT
NOT
NULL
,
attr2
INT
,
attr3
VARCHAR
(
10
)
)
ENGINE
=
ndbcluster
;
drop
table
t1
;
#
# Basic test to show that the NDB
# table handler is working
...
...
sql/field.cc
View file @
af898aec
...
...
@@ -5989,7 +5989,7 @@ int Field_str::store(double nr)
uint
Field
::
is_equal
(
create_field
*
new_field
)
{
return
(
new_field
->
sql_type
==
type
());
return
(
new_field
->
sql_type
==
real_
type
());
}
...
...
@@ -6001,7 +6001,7 @@ uint Field_str::is_equal(create_field *new_field)
(
flags
&
(
BINCMP_FLAG
|
BINARY_FLAG
))))
return
0
;
/* One of the fields is binary and the other one isn't */
return
((
new_field
->
sql_type
==
type
())
&&
return
((
new_field
->
sql_type
==
real_
type
())
&&
new_field
->
charset
==
field_charset
&&
new_field
->
length
==
max_length
());
}
...
...
@@ -6798,7 +6798,7 @@ Field *Field_varstring::new_key_field(MEM_ROOT *root,
uint
Field_varstring
::
is_equal
(
create_field
*
new_field
)
{
if
(
new_field
->
sql_type
==
type
()
&&
if
(
new_field
->
sql_type
==
real_
type
()
&&
new_field
->
charset
==
field_charset
)
{
if
(
new_field
->
length
==
max_length
())
...
...
@@ -7957,12 +7957,12 @@ bool Field_num::eq_def(Field *field)
uint
Field_num
::
is_equal
(
create_field
*
new_field
)
{
return
((
new_field
->
sql_type
==
type
())
&&
return
((
new_field
->
sql_type
==
real_
type
())
&&
((
new_field
->
flags
&
UNSIGNED_FLAG
)
==
(
uint
)
(
flags
&
UNSIGNED_FLAG
))
&&
((
new_field
->
flags
&
AUTO_INCREMENT_FLAG
)
==
(
uint
)
(
flags
&
AUTO_INCREMENT_FLAG
))
&&
(
new_field
->
length
>
=
max_length
()));
(
new_field
->
length
<
=
max_length
()));
}
...
...
sql/ha_ndbcluster_binlog.cc
View file @
af898aec
...
...
@@ -1373,6 +1373,9 @@ ndb_handle_schema_change(THD *thd, Ndb *ndb, NdbEventOperation *pOp,
NDB_SHARE
*
share
)
{
DBUG_ENTER
(
"ndb_handle_schema_change"
);
TABLE
*
table
=
share
->
table
;
TABLE_SHARE
*
table_share
=
table
->
s
;
const
char
*
dbname
=
table_share
->
db
.
str
;
bool
do_close_cached_tables
=
FALSE
;
bool
is_online_alter_table
=
FALSE
;
bool
is_rename_table
=
FALSE
;
...
...
@@ -1392,70 +1395,68 @@ ndb_handle_schema_change(THD *thd, Ndb *ndb, NdbEventOperation *pOp,
}
}
if
(
is_remote_change
)
/* includes CLUSTER_FAILURE */
/*
Refresh local dictionary cache by
invalidating table and all it's indexes
*/
ndb
->
setDatabaseName
(
dbname
);
Thd_ndb
*
thd_ndb
=
get_thd_ndb
(
thd
);
DBUG_ASSERT
(
thd_ndb
!=
NULL
);
Ndb
*
old_ndb
=
thd_ndb
->
ndb
;
thd_ndb
->
ndb
=
ndb
;
ha_ndbcluster
table_handler
(
table_share
);
table_handler
.
set_dbname
(
share
->
key
);
table_handler
.
set_tabname
(
share
->
key
);
table_handler
.
open_indexes
(
ndb
,
table
,
TRUE
);
table_handler
.
invalidate_dictionary_cache
(
TRUE
);
thd_ndb
->
ndb
=
old_ndb
;
/*
Refresh local frm file and dictionary cache if
remote on-line alter table
*/
if
(
is_remote_change
&&
is_online_alter_table
)
{
TABLE
*
table
=
share
->
table
;
TABLE_SHARE
*
table_share
=
table
->
s
;
const
char
*
dbname
=
table_share
->
db
.
str
;
const
char
*
tabname
=
table_share
->
table_name
.
str
;
char
key
[
FN_REFLEN
];
const
void
*
data
=
0
,
*
pack_data
=
0
;
uint
length
,
pack_length
;
int
error
;
NDBDICT
*
dict
=
ndb
->
getDictionary
();
const
NDBTAB
*
altered_table
=
pOp
->
getTable
();
/*
Invalidate table and all it's indexes
DBUG_PRINT
(
"info"
,
(
"Detected frm change of table %s.%s"
,
dbname
,
tabname
));
build_table_filename
(
key
,
FN_LEN
-
1
,
dbname
,
tabname
,
NullS
);
/*
If the frm of the altered table is different than the one on
disk then overwrite it with the new table definition
*/
ndb
->
setDatabaseName
(
dbname
);
Thd_ndb
*
thd_ndb
=
get_thd_ndb
(
thd
);
DBUG_ASSERT
(
thd_ndb
!=
NULL
);
Ndb
*
old_ndb
=
thd_ndb
->
ndb
;
thd_ndb
->
ndb
=
ndb
;
ha_ndbcluster
table_handler
(
table_share
);
table_handler
.
set_dbname
(
share
->
key
);
table_handler
.
set_tabname
(
share
->
key
);
table_handler
.
open_indexes
(
ndb
,
table
,
TRUE
);
table_handler
.
invalidate_dictionary_cache
(
TRUE
);
thd_ndb
->
ndb
=
old_ndb
;
if
(
is_online_alter_table
)
{
const
char
*
tabname
=
table_share
->
table_name
.
str
;
char
key
[
FN_REFLEN
];
const
void
*
data
=
0
,
*
pack_data
=
0
;
uint
length
,
pack_length
;
int
error
;
NDBDICT
*
dict
=
ndb
->
getDictionary
();
const
NDBTAB
*
altered_table
=
pOp
->
getTable
();
DBUG_PRINT
(
"info"
,
(
"Detected frm change of table %s.%s"
,
dbname
,
tabname
));
build_table_filename
(
key
,
FN_LEN
-
1
,
dbname
,
tabname
,
NullS
);
/*
If the frm of the altered table is different than the one on
disk then overwrite it with the new table definition
*/
if
(
readfrm
(
key
,
&
data
,
&
length
)
==
0
&&
packfrm
(
data
,
length
,
&
pack_data
,
&
pack_length
)
==
0
&&
cmp_frm
(
altered_table
,
pack_data
,
pack_length
))
if
(
readfrm
(
key
,
&
data
,
&
length
)
==
0
&&
packfrm
(
data
,
length
,
&
pack_data
,
&
pack_length
)
==
0
&&
cmp_frm
(
altered_table
,
pack_data
,
pack_length
))
{
DBUG_DUMP
(
"frm"
,
(
char
*
)
altered_table
->
getFrmData
(),
altered_table
->
getFrmLength
());
pthread_mutex_lock
(
&
LOCK_open
);
const
NDBTAB
*
old
=
dict
->
getTable
(
tabname
);
if
(
!
old
&&
old
->
getObjectVersion
()
!=
altered_table
->
getObjectVersion
())
dict
->
putTable
(
altered_table
);
if
((
error
=
unpackfrm
(
&
data
,
&
length
,
altered_table
->
getFrmData
()))
||
(
error
=
writefrm
(
key
,
data
,
length
)))
{
DBUG_DUMP
(
"frm"
,
(
char
*
)
altered_table
->
getFrmData
(),
altered_table
->
getFrmLength
());
pthread_mutex_lock
(
&
LOCK_open
);
const
NDBTAB
*
old
=
dict
->
getTable
(
tabname
);
if
(
!
old
&&
old
->
getObjectVersion
()
!=
altered_table
->
getObjectVersion
())
dict
->
putTable
(
altered_table
);
if
((
error
=
unpackfrm
(
&
data
,
&
length
,
altered_table
->
getFrmData
()))
||
(
error
=
writefrm
(
key
,
data
,
length
)))
{
sql_print_information
(
"NDB: Failed write frm for %s.%s, error %d"
,
dbname
,
tabname
,
error
);
}
ndbcluster_binlog_close_table
(
thd
,
share
);
close_cached_tables
((
THD
*
)
0
,
0
,
(
TABLE_LIST
*
)
0
,
TRUE
);
if
((
error
=
ndbcluster_binlog_open_table
(
thd
,
share
,
table_share
,
table
)))
sql_print_information
(
"NDB: Failed to re-open table %s.%s"
,
dbname
,
tabname
);
pthread_mutex_unlock
(
&
LOCK_open
);
sql_print_information
(
"NDB: Failed write frm for %s.%s, error %d"
,
dbname
,
tabname
,
error
);
}
ndbcluster_binlog_close_table
(
thd
,
share
);
close_cached_tables
((
THD
*
)
0
,
0
,
(
TABLE_LIST
*
)
0
,
TRUE
);
if
((
error
=
ndbcluster_binlog_open_table
(
thd
,
share
,
table_share
,
table
)))
sql_print_information
(
"NDB: Failed to re-open table %s.%s"
,
dbname
,
tabname
);
pthread_mutex_unlock
(
&
LOCK_open
);
}
}
...
...
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