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
405ebbf2
Commit
405ebbf2
authored
Apr 12, 2006
by
mats@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug#17400 (Cluster Replication: Delete and update of row w/o PK fails):
Restarting scan after call to delete_row().
parent
3fd8cfe5
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
323 additions
and
14 deletions
+323
-14
mysql-test/include/rpl_multi_engine3.inc
mysql-test/include/rpl_multi_engine3.inc
+1
-1
mysql-test/t/disabled.def
mysql-test/t/disabled.def
+2
-1
mysql-test/t/rpl_ndb_dd_partitions.test
mysql-test/t/rpl_ndb_dd_partitions.test
+301
-0
sql/log_event.cc
sql/log_event.cc
+19
-12
No files found.
mysql-test/include/rpl_multi_engine3.inc
View file @
405ebbf2
...
...
@@ -41,7 +41,7 @@ SELECT id,hex(b1),vc,bc,d,f,total,y,t FROM t1 WHERE id = 412;
# Must give injector thread a little time to get update
# into the binlog other wise we will miss the update.
sleep
3
;
sleep
10
;
sync_slave_with_master
;
--
echo
---
Check
Update
on
slave
---
...
...
mysql-test/t/disabled.def
View file @
405ebbf2
...
...
@@ -31,7 +31,8 @@ rpl_ndb_blob : interferes with following tests, causing hang
rpl_ndb_blob2 : interferes with following tests, causing hang
rpl_ndb_ddl : master hangs
#rpl_ndb_delete_nowhere : Bug#17400: delete & update of rows in table without pk fails
rpl_ndb_innodb2ndb : Bug#18261: Cluster Replication: tests rpl_ndb_xxx2ndb fails
rpl_ndb_innodb2ndb : Bug#18094 - Slave caches invalid table definition...
rpl_ndb_dd_partitions : Bug#18094 - Slave caches invalid table definition...
rpl_ndb_insert_ignore : Bugs: #17431: INSERT IGNORE INTO returns failed: 1296
rpl_ndb_myisam2ndb : Bug#18261: Cluster Replication: tests rpl_ndb_xxx2ndb fails
rpl_ndb_log : result not deterministic, TBD if should remove
...
...
mysql-test/t/rpl_ndb_dd_partitions.test
0 → 100644
View file @
405ebbf2
#######################################
# Author: JBM #
# Date: 2006-03-09 #
# Purpose: To test the replication of #
# Cluster Disk Data using partitions #
#######################################
--
source
include
/
have_ndb
.
inc
--
source
include
/
have_binlog_format_row
.
inc
--
source
include
/
master
-
slave
.
inc
--
echo
---
Doing
pre
test
cleanup
---
connection
master
;
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_query_log
# Start by creating a logfile group
##################################
CREATE
LOGFILE
GROUP
lg1
ADD
UNDOFILE
'undofile.dat'
INITIAL_SIZE
16
M
UNDO_BUFFER_SIZE
=
1
M
ENGINE
=
NDB
;
ALTER
LOGFILE
GROUP
lg1
ADD
UNDOFILE
'undofile02.dat'
INITIAL_SIZE
=
4
M
ENGINE
=
NDB
;
###################################################
# Create a tablespace connected to the logfile group
###################################################
CREATE
TABLESPACE
ts1
ADD
DATAFILE
'datafile.dat'
USE
LOGFILE
GROUP lg1
INITIAL_SIZE 12M
ENGINE NDB
;
ALTER
TABLESPACE
ts1
ADD
DATAFILE
'datafile02.dat'
INITIAL_SIZE
=
4
M
ENGINE
=
NDB
;
#################################################################
--
echo
---
Start
test
2
partition
RANGE
testing
--
--
echo
---
Do
setup
--
#################################################
# Requirment: Create table that is partitioned #
# by range on year i.e. year(t) and replicate #
# basice operations such at insert, update #
# delete between 2 different storage engines #
# Alter table and ensure table is handled #
# Correctly on the slave #
#################################################
CREATE
TABLE
t1
(
id
MEDIUMINT
NOT
NULL
,
b1
BIT
(
8
),
vc
VARCHAR
(
63
),
bc
CHAR
(
63
),
d
DECIMAL
(
10
,
4
)
DEFAULT
0
,
f
FLOAT
DEFAULT
0
,
total
BIGINT
UNSIGNED
,
y
YEAR
,
t
DATE
)
TABLESPACE
ts1
STORAGE
DISK
ENGINE
=
NDB
PARTITION
BY
RANGE
(
YEAR
(
t
))
(
PARTITION
p0
VALUES
LESS
THAN
(
1901
),
PARTITION
p1
VALUES
LESS
THAN
(
1946
),
PARTITION
p2
VALUES
LESS
THAN
(
1966
),
PARTITION
p3
VALUES
LESS
THAN
(
1986
),
PARTITION
p4
VALUES
LESS
THAN
(
2005
),
PARTITION
p5
VALUES
LESS
THAN
MAXVALUE
);
--
echo
---
Show
table
on
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Show
table
on
slave
--
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
Check
that
simple
Alter
statements
are
replicated
correctly
---
ALTER
TABLE
t1
MODIFY
vc
VARCHAR
(
255
);
--
echo
---
Show
the
new
improved
table
on
the
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Make
sure
that
our
tables
on
slave
are
still
same
engine
---
--
echo
---
and
that
the
alter
statements
replicated
correctly
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
enable_query_log
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
End
test
2
partition
RANGE
testing
---
--
echo
---
Do
Cleanup
---
DROP
TABLE
IF
EXISTS
t1
;
########################################################
--
echo
---
Start
test
3
partition
LIST
testing
---
--
echo
---
Do
setup
---
#################################################
CREATE
TABLE
t1
(
id
MEDIUMINT
NOT
NULL
,
b1
BIT
(
8
),
vc
VARCHAR
(
63
),
bc
CHAR
(
63
),
d
DECIMAL
(
10
,
4
)
DEFAULT
0
,
f
FLOAT
DEFAULT
0
,
total
BIGINT
UNSIGNED
,
y
YEAR
,
t
DATE
)
TABLESPACE
ts1
STORAGE
DISK
ENGINE
=
NDB
PARTITION
BY
LIST
(
id
)
(
PARTITION
p0
VALUES
IN
(
2
,
4
),
PARTITION
p1
VALUES
IN
(
42
,
142
));
--
echo
---
Test
3
Alter
to
add
partition
---
ALTER
TABLE
t1
ADD
PARTITION
(
PARTITION
p2
VALUES
IN
(
412
));
--
echo
---
Show
table
on
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Show
table
on
slave
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
Check
that
simple
Alter
statements
are
replicated
correctly
---
ALTER
TABLE
t1
MODIFY
vc
VARCHAR
(
255
);
--
echo
---
Show
the
new
improved
table
on
the
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Make
sure
that
our
tables
on
slave
are
still
same
engine
---
--
echo
---
and
that
the
alter
statements
replicated
correctly
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
End
test
3
partition
LIST
testing
---
--
echo
---
Do
Cleanup
--
DROP
TABLE
IF
EXISTS
t1
;
########################################################
--
echo
---
Start
test
4
partition
HASH
testing
---
--
echo
---
Do
setup
---
#################################################
CREATE
TABLE
t1
(
id
MEDIUMINT
NOT
NULL
,
b1
BIT
(
8
),
vc
VARCHAR
(
63
),
bc
CHAR
(
63
),
d
DECIMAL
(
10
,
4
)
DEFAULT
0
,
f
FLOAT
DEFAULT
0
,
total
BIGINT
UNSIGNED
,
y
YEAR
,
t
DATE
)
TABLESPACE
ts1
STORAGE
DISK
ENGINE
=
NDB
PARTITION
BY
HASH
(
YEAR
(
t
)
)
PARTITIONS
4
;
--
echo
---
show
that
tables
have
been
created
correctly
---
SHOW
CREATE
TABLE
t1
;
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
Check
that
simple
Alter
statements
are
replicated
correctly
---
ALTER
TABLE
t1
MODIFY
vc
VARCHAR
(
255
);
--
echo
---
Show
the
new
improved
table
on
the
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Make
sure
that
our
tables
on
slave
are
still
same
engine
---
--
echo
---
and
that
the
alter
statements
replicated
correctly
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
End
test
4
partition
HASH
testing
---
--
echo
---
Do
Cleanup
--
DROP
TABLE
IF
EXISTS
t1
;
########################################################
--
echo
---
Start
test
5
partition
by
key
testing
---
--
echo
---
Create
Table
Section
---
#################################################
CREATE
TABLE
t1
(
id
MEDIUMINT
NOT
NULL
,
b1
BIT
(
8
),
vc
VARCHAR
(
63
),
bc
CHAR
(
63
),
d
DECIMAL
(
10
,
4
)
DEFAULT
0
,
f
FLOAT
DEFAULT
0
,
total
BIGINT
UNSIGNED
,
y
YEAR
,
t
DATE
,
PRIMARY
KEY
(
id
))
TABLESPACE
ts1
STORAGE
DISK
ENGINE
=
NDB
PARTITION
BY
KEY
()
PARTITIONS
4
;
--
echo
---
Show
that
tables
on
master
are
ndbcluster
tables
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Show
that
tables
on
slave
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
# Okay lets see how it holds up to table changes
--
echo
---
Check
that
simple
Alter
statements
are
replicated
correctly
---
ALTER
TABLE
t1
DROP
PRIMARY
KEY
,
ADD
PRIMARY
KEY
(
id
,
total
);
--
echo
---
Show
the
new
improved
table
on
the
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Make
sure
that
our
tables
on
slave
are
still
right
type
---
--
echo
---
and
that
the
alter
statements
replicated
correctly
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
Check
that
simple
Alter
statements
are
replicated
correctly
---
ALTER
TABLE
t1
MODIFY
vc
VARCHAR
(
255
);
--
echo
---
Show
the
new
improved
table
on
the
master
---
SHOW
CREATE
TABLE
t1
;
--
echo
---
Make
sure
that
our
tables
on
slave
are
still
same
engine
---
--
echo
---
and
that
the
alter
statements
replicated
correctly
---
sync_slave_with_master
;
SHOW
CREATE
TABLE
t1
;
--
echo
---
Perform
basic
operation
on
master
---
--
echo
---
and
ensure
replicated
correctly
---
--
source
include
/
rpl_multi_engine3
.
inc
--
echo
---
End
test
5
key
partition
testing
---
--
echo
---
Do
Cleanup
---
DROP
TABLE
IF
EXISTS
t1
;
# End of 5.1 test case
sql/log_event.cc
View file @
405ebbf2
...
...
@@ -6579,18 +6579,6 @@ int Delete_rows_log_event::do_before_row_operations(TABLE *table)
if
(
!
m_memory
)
return
HA_ERR_OUT_OF_MEM
;
if
(
table
->
s
->
keys
>
0
)
{
/* We have a key: search the table using the index */
if
(
!
table
->
file
->
inited
)
error
=
table
->
file
->
ha_index_init
(
0
,
FALSE
);
}
else
{
/* We doesn't have a key: search the table using rnd_next() */
error
=
table
->
file
->
ha_rnd_init
(
1
);
}
return
error
;
}
...
...
@@ -6638,6 +6626,20 @@ int Delete_rows_log_event::do_exec_row(TABLE *table)
{
DBUG_ASSERT
(
table
!=
NULL
);
if
(
table
->
s
->
keys
>
0
)
{
/* We have a key: search the table using the index */
if
(
!
table
->
file
->
inited
)
if
(
int
error
=
table
->
file
->
ha_index_init
(
0
,
FALSE
))
return
error
;
}
else
{
/* We doesn't have a key: search the table using rnd_next() */
if
(
int
error
=
table
->
file
->
ha_rnd_init
(
1
))
return
error
;
}
int
error
=
find_and_fetch_row
(
table
,
m_key
);
if
(
error
)
return
error
;
...
...
@@ -6649,6 +6651,11 @@ int Delete_rows_log_event::do_exec_row(TABLE *table)
*/
error
=
table
->
file
->
ha_delete_row
(
table
->
record
[
0
]);
/*
Have to restart the scan to be able to fetch the next row.
*/
table
->
file
->
ha_index_or_rnd_end
();
return
error
;
}
...
...
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