From 7cde212bead19f6ad5a7f4030396b49e59ce9fb1 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Apr 2007 06:59:56 +0200 Subject: [PATCH 1/2] ndb - bug#27757 tupscan misses uncommitted inserts by own transaction let tupkeyreq handle dirty/savepoint also siable diskscan as temporary fix for bug#27776 storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp: let tupkeyreq handle dirty/savepoint --- storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp index 653a24ba6a1..be80ac487e2 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp @@ -61,11 +61,15 @@ Dbtup::execACC_SCANREQ(Signal* signal) jam(); break; } + +#if BUG_27776_FIXED if (!AccScanReq::getNoDiskScanFlag(req->requestInfo) && tablePtr.p->m_no_of_disk_attributes) { bits |= ScanOp::SCAN_DD; } +#endif + bool mm = (bits & ScanOp::SCAN_DD); if (tablePtr.p->m_attributes[mm].m_no_of_varsize > 0) { bits |= ScanOp::SCAN_VS; @@ -593,7 +597,6 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr) const bool mm = (bits & ScanOp::SCAN_DD); const bool lcp = (bits & ScanOp::SCAN_LCP); - const bool dirty = (bits & ScanOp::SCAN_LOCK) == 0; Uint32 lcp_list = fragPtr.p->m_lcp_keep_list; Uint32 size = table.m_offsets[mm].m_fix_header_size + @@ -764,8 +767,7 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr) jam(); if (! (thbits & Tuple_header::FREE)) { - if (! ((thbits & Tuple_header::ALLOC) && dirty)) - goto found_tuple; + goto found_tuple; } } else From 7b3751fcede63619205c7d9bad35a61543e7ffef Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Apr 2007 07:19:10 +0200 Subject: [PATCH 2/2] ndb - mysql-test-run testcase for bug#27757 mysql-test/r/ndb_dd_basic.result: testcase mysql-test/t/ndb_dd_basic.test: testcase --- mysql-test/r/ndb_dd_basic.result | 7 +++++++ mysql-test/t/ndb_dd_basic.test | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/mysql-test/r/ndb_dd_basic.result b/mysql-test/r/ndb_dd_basic.result index 724b42b6db3..361d282e6d9 100644 --- a/mysql-test/r/ndb_dd_basic.result +++ b/mysql-test/r/ndb_dd_basic.result @@ -440,6 +440,13 @@ insert into t1 values(7,'x'); insert into t1 values(8,'x'); delete from t1 where a = 0; commit; +delete from t1; +begin; +insert into t1 values (1, 'x'); +select * from t1; +a b +1 x +rollback; set autocommit = 1; drop table t1; create table test.t1 (f1 varchar(50) primary key, f2 text,f3 int) diff --git a/mysql-test/t/ndb_dd_basic.test b/mysql-test/t/ndb_dd_basic.test index 5d43d7997b0..bbfc3704673 100644 --- a/mysql-test/t/ndb_dd_basic.test +++ b/mysql-test/t/ndb_dd_basic.test @@ -367,8 +367,16 @@ insert into t1 values(7,'x'); insert into t1 values(8,'x'); delete from t1 where a = 0; commit; + +delete from t1; +begin; +insert into t1 values (1, 'x'); +select * from t1; +rollback; + set autocommit = 1; + drop table t1; ############################# # Customer posted order by test case