Loading mysql-test/suite/ndb/r/ndb_dd_basic.result +10 −0 Original line number Diff line number Diff line Loading @@ -406,6 +406,16 @@ a b c 1 7 7 2 2 2 3 3 3 DELETE FROM t1; INSERT INTO t1 VALUES (3,'1','1'); BEGIN; UPDATE t1 SET b = b + 2 WHERE A = 3; DELETE FROM t1 WHERE A = 3; INSERT INTO t1 VALUES (3,'0','0'); COMMIT; SELECT * from t1 ORDER BY 1; a b c 3 0 0 DROP TABLE t1; CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY, Loading mysql-test/suite/ndb/t/ndb_dd_basic.test +10 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,16 @@ UPDATE t1 SET c = '6' WHERE b = '7'; SELECT * FROM t1 ORDER BY 1; UPDATE t1 SET c = '7' WHERE c = '6'; SELECT * FROM t1 ORDER BY 1; DELETE FROM t1; INSERT INTO t1 VALUES (3,'1','1'); BEGIN; UPDATE t1 SET b = b + 2 WHERE A = 3; DELETE FROM t1 WHERE A = 3; INSERT INTO t1 VALUES (3,'0','0'); COMMIT; SELECT * from t1 ORDER BY 1; DROP TABLE t1; ######################## Loading storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +17 −25 Original line number Diff line number Diff line Loading @@ -1503,33 +1503,23 @@ int Dbtup::handleDeleteReq(Signal* signal, else { regOperPtr->tupVersion= req_struct->m_tuple_ptr->get_tuple_version(); if(regTabPtr->m_no_of_disk_attributes) { Uint32 sz; if(regTabPtr->m_attributes[DD].m_no_of_varsize) { /** * Need to have page in memory to read size * to alloc undo space */ abort(); } else sz= (sizeof(Dbtup::Disk_undo::Free) >> 2) + regTabPtr->m_offsets[DD].m_fix_header_size - 1; regOperPtr->m_undo_buffer_space= sz; if(disk && regOperPtr->m_undo_buffer_space == 0) { regOperPtr->op_struct.m_wait_log_buffer = 1; regOperPtr->op_struct.m_load_diskpage_on_commit = 1; Uint32 sz= regOperPtr->m_undo_buffer_space= (sizeof(Dbtup::Disk_undo::Free) >> 2) + regTabPtr->m_offsets[DD].m_fix_header_size - 1; int res; if((res= c_lgman->alloc_log_space(regFragPtr->m_logfile_group_id, sz))) terrorCode= c_lgman->alloc_log_space(regFragPtr->m_logfile_group_id, sz); if(unlikely(terrorCode)) { terrorCode= res; regOperPtr->m_undo_buffer_space= 0; goto error; } } } if (req_struct->attrinfo_len == 0) { Loading @@ -1537,7 +1527,9 @@ int Dbtup::handleDeleteReq(Signal* signal, } if (regTabPtr->need_expand(disk)) { prepare_read(req_struct, regTabPtr, disk); } { Uint32 RlogSize; Loading Loading
mysql-test/suite/ndb/r/ndb_dd_basic.result +10 −0 Original line number Diff line number Diff line Loading @@ -406,6 +406,16 @@ a b c 1 7 7 2 2 2 3 3 3 DELETE FROM t1; INSERT INTO t1 VALUES (3,'1','1'); BEGIN; UPDATE t1 SET b = b + 2 WHERE A = 3; DELETE FROM t1 WHERE A = 3; INSERT INTO t1 VALUES (3,'0','0'); COMMIT; SELECT * from t1 ORDER BY 1; a b c 3 0 0 DROP TABLE t1; CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY, Loading
mysql-test/suite/ndb/t/ndb_dd_basic.test +10 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,16 @@ UPDATE t1 SET c = '6' WHERE b = '7'; SELECT * FROM t1 ORDER BY 1; UPDATE t1 SET c = '7' WHERE c = '6'; SELECT * FROM t1 ORDER BY 1; DELETE FROM t1; INSERT INTO t1 VALUES (3,'1','1'); BEGIN; UPDATE t1 SET b = b + 2 WHERE A = 3; DELETE FROM t1 WHERE A = 3; INSERT INTO t1 VALUES (3,'0','0'); COMMIT; SELECT * from t1 ORDER BY 1; DROP TABLE t1; ######################## Loading
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +17 −25 Original line number Diff line number Diff line Loading @@ -1503,33 +1503,23 @@ int Dbtup::handleDeleteReq(Signal* signal, else { regOperPtr->tupVersion= req_struct->m_tuple_ptr->get_tuple_version(); if(regTabPtr->m_no_of_disk_attributes) { Uint32 sz; if(regTabPtr->m_attributes[DD].m_no_of_varsize) { /** * Need to have page in memory to read size * to alloc undo space */ abort(); } else sz= (sizeof(Dbtup::Disk_undo::Free) >> 2) + regTabPtr->m_offsets[DD].m_fix_header_size - 1; regOperPtr->m_undo_buffer_space= sz; if(disk && regOperPtr->m_undo_buffer_space == 0) { regOperPtr->op_struct.m_wait_log_buffer = 1; regOperPtr->op_struct.m_load_diskpage_on_commit = 1; Uint32 sz= regOperPtr->m_undo_buffer_space= (sizeof(Dbtup::Disk_undo::Free) >> 2) + regTabPtr->m_offsets[DD].m_fix_header_size - 1; int res; if((res= c_lgman->alloc_log_space(regFragPtr->m_logfile_group_id, sz))) terrorCode= c_lgman->alloc_log_space(regFragPtr->m_logfile_group_id, sz); if(unlikely(terrorCode)) { terrorCode= res; regOperPtr->m_undo_buffer_space= 0; goto error; } } } if (req_struct->attrinfo_len == 0) { Loading @@ -1537,7 +1527,9 @@ int Dbtup::handleDeleteReq(Signal* signal, } if (regTabPtr->need_expand(disk)) { prepare_read(req_struct, regTabPtr, disk); } { Uint32 RlogSize; Loading