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
8e8dfe43
Commit
8e8dfe43
authored
Mar 07, 2005
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for Bug #8753 Invalid schema object version after dropping index
parent
ae81d530
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
184 additions
and
6 deletions
+184
-6
mysql-test/include/have_multi_ndb.inc
mysql-test/include/have_multi_ndb.inc
+28
-0
mysql-test/r/ndb_alter_table.result
mysql-test/r/ndb_alter_table.result
+14
-0
mysql-test/r/ndb_multi.result
mysql-test/r/ndb_multi.result
+49
-0
mysql-test/t/ndb_alter_table.test
mysql-test/t/ndb_alter_table.test
+16
-0
mysql-test/t/ndb_multi.test
mysql-test/t/ndb_multi.test
+44
-0
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+32
-6
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+1
-0
No files found.
mysql-test/include/have_multi_ndb.inc
0 → 100644
View file @
8e8dfe43
# Setup connections to both MySQL Servers connected to the cluster
connect
(
server1
,
127.0
.
0.1
,
root
,,
test
,
$MASTER_MYPORT
,);
connect
(
server2
,
127.0
.
0.1
,
root
,,
test
,
$MASTER_MYPORT1
,);
# Check that server1 has NDB support
connection
server1
;
disable_query_log
;
--
disable_warnings
drop
table
if
exists
t1
,
t2
;
--
enable_warnings
flush
tables
;
@
r
/
have_ndb
.
require
show
variables
like
"have_ndbcluster"
;
# @r/server_id.require show variables like "server_id";
enable_query_log
;
# Check that server2 has NDB support
connection
server2
;
disable_query_log
;
--
disable_warnings
drop
table
if
exists
t1
,
t2
;
--
enable_warnings
flush
tables
;
@
r
/
have_ndb
.
require
show
variables
like
"have_ndbcluster"
;
# @r/server_id1.require show variables like "server_id";
enable_query_log
;
# Set the default connection to 'server1'
connection
server1
;
mysql-test/r/ndb_alter_table.result
View file @
8e8dfe43
...
@@ -170,3 +170,17 @@ c
...
@@ -170,3 +170,17 @@ c
4
4
5
5
drop table t1;
drop table t1;
create table t1 ( a int primary key, b varchar(10), c varchar(10), index (b) )
engine=ndb;
insert into t1 values (1,'one','one'), (2,'two','two'), (3,'three','three');
create index c on t1(c);
select * from t1 where b = 'two';
a b c
2 two two
alter table t1 drop index c;
select * from t1 where b = 'two';
ERROR 42S02: Table 'test.t1' doesn't exist
select * from t1 where b = 'two';
a b c
2 two two
drop table t1;
mysql-test/r/ndb_multi.result
0 → 100644
View file @
8e8dfe43
drop table if exists t1, t2, t3, t4;
flush status;
create table t1 (a int) engine=ndbcluster;
create table t2 (a int) engine=ndbcluster;
insert into t1 value (2);
insert into t2 value (3);
select * from t1;
a
2
select * from t2;
a
3
show status like 'handler_discover%';
Variable_name Value
Handler_discover 0
flush status;
select * from t1;
a
2
update t1 set a=3 where a=2;
show status like 'handler_discover%';
Variable_name Value
Handler_discover 1
create table t3 (a int not null primary key, b varchar(22),
c int, last_col text) engine=ndb;
insert into t3 values(1, 'Hi!', 89, 'Longtext column');
create table t4 (pk int primary key, b int) engine=ndb;
select * from t1;
a
3
select * from t3;
a b c last_col
1 Hi! 89 Longtext column
show status like 'handler_discover%';
Variable_name Value
Handler_discover 1
show tables like 't4';
Tables_in_test (t4)
t4
show status like 'handler_discover%';
Variable_name Value
Handler_discover 2
show tables;
Tables_in_test
t1
t2
t3
t4
drop table t1, t2, t3, t4;
mysql-test/t/ndb_alter_table.test
View file @
8e8dfe43
--
source
include
/
have_ndb
.
inc
--
source
include
/
have_ndb
.
inc
--
source
include
/
have_multi_ndb
.
inc
--
disable_warnings
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
DROP
TABLE
IF
EXISTS
t1
;
...
@@ -133,6 +134,21 @@ INSERT INTO t1 VALUES (1,2,0),(18,19,4),(20,21,0);
...
@@ -133,6 +134,21 @@ INSERT INTO t1 VALUES (1,2,0),(18,19,4),(20,21,0);
select
c
from
t1
order
by
c
;
select
c
from
t1
order
by
c
;
drop
table
t1
;
drop
table
t1
;
create
table
t1
(
a
int
primary
key
,
b
varchar
(
10
),
c
varchar
(
10
),
index
(
b
)
)
engine
=
ndb
;
insert
into
t1
values
(
1
,
'one'
,
'one'
),
(
2
,
'two'
,
'two'
),
(
3
,
'three'
,
'three'
);
create
index
c
on
t1
(
c
);
connection
server2
;
select
*
from
t1
where
b
=
'two'
;
connection
server1
;
alter
table
t1
drop
index
c
;
connection
server2
;
--
error
1146
select
*
from
t1
where
b
=
'two'
;
select
*
from
t1
where
b
=
'two'
;
connection
server1
;
drop
table
t1
;
#--disable_warnings
#--disable_warnings
#DROP TABLE IF EXISTS t2;
#DROP TABLE IF EXISTS t2;
#--enable_warnings
#--enable_warnings
...
...
mysql-test/t/ndb_multi.test
0 → 100644
View file @
8e8dfe43
--
source
include
/
have_ndb
.
inc
--
source
include
/
have_multi_ndb
.
inc
--
disable_warnings
drop
table
if
exists
t1
,
t2
,
t3
,
t4
;
--
enable_warnings
flush
status
;
# Create test tables on server1
create
table
t1
(
a
int
)
engine
=
ndbcluster
;
create
table
t2
(
a
int
)
engine
=
ndbcluster
;
insert
into
t1
value
(
2
);
insert
into
t2
value
(
3
);
select
*
from
t1
;
select
*
from
t2
;
show
status
like
'handler_discover%'
;
# Connect to server2 and use the tables from there
connection
server2
;
flush
status
;
select
*
from
t1
;
update
t1
set
a
=
3
where
a
=
2
;
show
status
like
'handler_discover%'
;
# Create a new table on server2
create
table
t3
(
a
int
not
null
primary
key
,
b
varchar
(
22
),
c
int
,
last_col
text
)
engine
=
ndb
;
insert
into
t3
values
(
1
,
'Hi!'
,
89
,
'Longtext column'
);
create
table
t4
(
pk
int
primary
key
,
b
int
)
engine
=
ndb
;
# Check that the tables are accessible from server1
connection
server1
;
select
*
from
t1
;
select
*
from
t3
;
show
status
like
'handler_discover%'
;
show
tables
like
't4'
;
show
status
like
'handler_discover%'
;
show
tables
;
drop
table
t1
,
t2
,
t3
,
t4
;
sql/ha_ndbcluster.cc
View file @
8e8dfe43
...
@@ -328,6 +328,36 @@ void ha_ndbcluster::no_uncommitted_rows_reset(THD *thd)
...
@@ -328,6 +328,36 @@ void ha_ndbcluster::no_uncommitted_rows_reset(THD *thd)
# The mapped error code
# The mapped error code
*/
*/
void
ha_ndbcluster
::
invalidateCache
()
{
NDBDICT
*
dict
=
get_ndb
()
->
getDictionary
();
DBUG_PRINT
(
"info"
,
(
"invalidating %s"
,
m_tabname
));
dict
->
invalidateTable
(
m_tabname
);
table
->
version
=
0L
;
/* Free when thread is ready */
/* Invalidate indexes */
for
(
uint
i
=
0
;
i
<
table
->
keys
;
i
++
)
{
NDBINDEX
*
index
=
(
NDBINDEX
*
)
m_index
[
i
].
index
;
NDBINDEX
*
unique_index
=
(
NDBINDEX
*
)
m_index
[
i
].
unique_index
;
NDB_INDEX_TYPE
idx_type
=
m_index
[
i
].
type
;
switch
(
m_index
[
i
].
type
)
{
case
(
PRIMARY_KEY_ORDERED_INDEX
):
case
(
ORDERED_INDEX
):
dict
->
invalidateIndex
(
index
->
getName
(),
m_tabname
);
break
;
case
(
UNIQUE_ORDERED_INDEX
):
dict
->
invalidateIndex
(
index
->
getName
(),
m_tabname
);
case
(
UNIQUE_INDEX
):
dict
->
invalidateIndex
(
unique_index
->
getName
(),
m_tabname
);
break
;
case
(
PRIMARY_KEY_INDEX
):
case
(
UNDEFINED_INDEX
):
break
;
}
}
}
int
ha_ndbcluster
::
ndb_err
(
NdbConnection
*
trans
)
int
ha_ndbcluster
::
ndb_err
(
NdbConnection
*
trans
)
{
{
...
@@ -339,11 +369,7 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans)
...
@@ -339,11 +369,7 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans)
switch
(
err
.
classification
)
{
switch
(
err
.
classification
)
{
case
NdbError
:
:
SchemaError
:
case
NdbError
:
:
SchemaError
:
{
{
Ndb
*
ndb
=
get_ndb
();
invalidateCache
();
NDBDICT
*
dict
=
ndb
->
getDictionary
();
DBUG_PRINT
(
"info"
,
(
"invalidateTable %s"
,
m_tabname
));
dict
->
invalidateTable
(
m_tabname
);
table
->
version
=
0L
;
/* Free when thread is ready */
break
;
break
;
}
}
default:
default:
...
@@ -733,7 +759,7 @@ int ha_ndbcluster::get_metadata(const char *path)
...
@@ -733,7 +759,7 @@ int ha_ndbcluster::get_metadata(const char *path)
if
(
!
invalidating_ndb_table
)
if
(
!
invalidating_ndb_table
)
{
{
DBUG_PRINT
(
"info"
,
(
"Invalidating table"
));
DBUG_PRINT
(
"info"
,
(
"Invalidating table"
));
dict
->
invalidateTable
(
m_tabname
);
invalidateCache
(
);
invalidating_ndb_table
=
TRUE
;
invalidating_ndb_table
=
TRUE
;
}
}
else
else
...
...
sql/ha_ndbcluster.h
View file @
8e8dfe43
...
@@ -201,6 +201,7 @@ class ha_ndbcluster: public handler
...
@@ -201,6 +201,7 @@ class ha_ndbcluster: public handler
void
print_results
();
void
print_results
();
longlong
get_auto_increment
();
longlong
get_auto_increment
();
void
invalidateCache
();
int
ndb_err
(
NdbConnection
*
);
int
ndb_err
(
NdbConnection
*
);
bool
uses_blob_value
(
bool
all_fields
);
bool
uses_blob_value
(
bool
all_fields
);
...
...
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