Commit 32034246 authored by unknown's avatar unknown

ndb - bug#24039

  Make sure index scan does not commitDelete


mysql-test/r/ndb_index_ordered.result:
  testcase
mysql-test/t/ndb_index_ordered.test:
  testcase
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
  Make sure index scan does not commitDelete
parent ed7eb26a
......@@ -796,3 +796,42 @@ Variable_name Value
ndb_index_stat_cache_entries 32
ndb_index_stat_enable OFF
ndb_index_stat_update_freq 20
create table t1 (a int primary key) engine = ndb;
insert into t1 values (1), (2), (3);
begin;
delete from t1 where a > 1;
rollback;
select * from t1 order by a;
a
1
2
3
begin;
delete from t1 where a > 1;
rollback;
begin;
select * from t1 order by a;
a
1
2
3
delete from t1 where a > 2;
select * from t1 order by a;
a
1
2
delete from t1 where a > 1;
select * from t1 order by a;
a
1
delete from t1 where a > 0;
select * from t1 order by a;
a
rollback;
select * from t1 order by a;
a
1
2
3
delete from t1;
drop table t1;
......@@ -430,3 +430,28 @@ set ndb_index_stat_update_freq = @@global.ndb_index_stat_update_freq;
show session variables like 'ndb_index_stat_%';
# End of 4.1 tests
# bug#24039
create table t1 (a int primary key) engine = ndb;
insert into t1 values (1), (2), (3);
begin;
delete from t1 where a > 1;
rollback;
select * from t1 order by a;
begin;
delete from t1 where a > 1;
rollback;
begin;
select * from t1 order by a;
delete from t1 where a > 2;
select * from t1 order by a;
delete from t1 where a > 1;
select * from t1 order by a;
delete from t1 where a > 0;
select * from t1 order by a;
rollback;
select * from t1 order by a;
delete from t1;
drop table t1;
......@@ -4394,7 +4394,8 @@ void Dbacc::commitOperation(Signal* signal)
Uint32 opbits = operationRecPtr.p->m_op_bits;
Uint32 op = opbits & Operationrec::OP_MASK;
ndbrequire((opbits & Operationrec::OP_STATE_MASK) == Operationrec::OP_STATE_EXECUTED);
if ((opbits & Operationrec::OP_COMMIT_DELETE_CHECK) == 0 && (op != ZREAD))
if ((opbits & Operationrec::OP_COMMIT_DELETE_CHECK) == 0 &&
(op != ZREAD && op != ZSCAN_OP))
{
jam();
/* This method is used to check whether the end result of the transaction
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment