summaryrefslogtreecommitdiff
path: root/ndb/src/kernel
diff options
context:
space:
mode:
authorunknown <pekka@orca.ndb.mysql.com>2006-10-09 12:35:11 +0200
committerunknown <pekka@orca.ndb.mysql.com>2006-10-09 12:35:11 +0200
commita82f6781af744c98ee483f366b8ab7606d7d0541 (patch)
tree08f69133aa4662535253e61a661ff22f703b7873 /ndb/src/kernel
parent81526834b5c4f3c1672bcfc3759592798d68b72e (diff)
downloadmariadb-git-a82f6781af744c98ee483f366b8ab7606d7d0541.tar.gz
ndb - bug#20446: test case and cleanups (not fix)
ndb/test/ndbapi/testOIBasic.cpp: test -case h for parallel ordered update (bug#20446) ndb/test/run-test/daily-basic-tests.txt: test -case h for parallel ordered update (bug#20446) ndb/src/kernel/blocks/dbtux/Dbtux.hpp: remove stupid Data abstraction which is not completely transparent ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: remove stupid Data abstraction which is not completely transparent ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: remove stupid Data abstraction which is not completely transparent
Diffstat (limited to 'ndb/src/kernel')
-rw-r--r--ndb/src/kernel/blocks/dbtux/Dbtux.hpp137
-rw-r--r--ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp38
-rw-r--r--ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp8
3 files changed, 33 insertions, 150 deletions
diff --git a/ndb/src/kernel/blocks/dbtux/Dbtux.hpp b/ndb/src/kernel/blocks/dbtux/Dbtux.hpp
index d4a44b9e641..2f177da9eb0 100644
--- a/ndb/src/kernel/blocks/dbtux/Dbtux.hpp
+++ b/ndb/src/kernel/blocks/dbtux/Dbtux.hpp
@@ -121,41 +121,17 @@ private:
// forward declarations
struct DescEnt;
- /*
- * Pointer to array of Uint32.
- */
- struct Data {
- private:
- Uint32* m_data;
- public:
- Data();
- Data(Uint32* data);
- Data& operator=(Uint32* data);
- operator Uint32*() const;
- Data& operator+=(size_t n);
- AttributeHeader& ah() const;
- };
- friend class Data;
+ // Pointer to array of Uint32 represents attribute data and bounds
- /*
- * Pointer to array of constant Uint32.
- */
- struct ConstData;
- friend struct ConstData;
- struct ConstData {
- private:
- const Uint32* m_data;
- public:
- ConstData();
- ConstData(const Uint32* data);
- ConstData& operator=(const Uint32* data);
- operator const Uint32*() const;
- ConstData& operator+=(size_t n);
- const AttributeHeader& ah() const;
- // non-const pointer can be cast to const pointer
- ConstData(Data data);
- ConstData& operator=(Data data);
- };
+ typedef Uint32 *Data;
+ inline AttributeHeader& ah(Data data) {
+ return *reinterpret_cast<AttributeHeader*>(data);
+ }
+
+ typedef const Uint32* ConstData;
+ inline const AttributeHeader& ah(ConstData data) {
+ return *reinterpret_cast<const AttributeHeader*>(data);
+ }
// AttributeHeader size is assumed to be 1 word
STATIC_CONST( AttributeHeaderSize = 1 );
@@ -737,99 +713,6 @@ private:
static unsigned max(unsigned x, unsigned y);
};
-// Dbtux::Data
-
-inline
-Dbtux::Data::Data() :
- m_data(0)
-{
-}
-
-inline
-Dbtux::Data::Data(Uint32* data) :
- m_data(data)
-{
-}
-
-inline Dbtux::Data&
-Dbtux::Data::operator=(Uint32* data)
-{
- m_data = data;
- return *this;
-}
-
-inline
-Dbtux::Data::operator Uint32*() const
-{
- return m_data;
-}
-
-inline Dbtux::Data&
-Dbtux::Data::operator+=(size_t n)
-{
- m_data += n;
- return *this;
-}
-
-inline AttributeHeader&
-Dbtux::Data::ah() const
-{
- return *reinterpret_cast<AttributeHeader*>(m_data);
-}
-
-// Dbtux::ConstData
-
-inline
-Dbtux::ConstData::ConstData() :
- m_data(0)
-{
-}
-
-inline
-Dbtux::ConstData::ConstData(const Uint32* data) :
- m_data(data)
-{
-}
-
-inline Dbtux::ConstData&
-Dbtux::ConstData::operator=(const Uint32* data)
-{
- m_data = data;
- return *this;
-}
-
-inline
-Dbtux::ConstData::operator const Uint32*() const
-{
- return m_data;
-}
-
-inline Dbtux::ConstData&
-Dbtux::ConstData::operator+=(size_t n)
-{
- m_data += n;
- return *this;
-}
-
-inline const AttributeHeader&
-Dbtux::ConstData::ah() const
-{
- return *reinterpret_cast<const AttributeHeader*>(m_data);
-}
-
-inline
-Dbtux::ConstData::ConstData(Data data) :
- m_data(static_cast<Uint32*>(data))
-{
-}
-
-inline Dbtux::ConstData&
-Dbtux::ConstData::operator=(Data data)
-{
- m_data = static_cast<Uint32*>(data);
- return *this;
-}
-
// Dbtux::TupLoc
inline
diff --git a/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp b/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp
index cf815b14c1a..058409c99b0 100644
--- a/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp
+++ b/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp
@@ -34,7 +34,7 @@ Dbtux::cmpSearchKey(const Frag& frag, unsigned& start, ConstData searchKey, Cons
// skip to right position in search key only
for (unsigned i = 0; i < start; i++) {
jam();
- searchKey += AttributeHeaderSize + searchKey.ah().getDataSize();
+ searchKey += AttributeHeaderSize + ah(searchKey).getDataSize();
}
// number of words of entry data left
unsigned len2 = maxlen;
@@ -46,16 +46,16 @@ Dbtux::cmpSearchKey(const Frag& frag, unsigned& start, ConstData searchKey, Cons
break;
}
len2 -= AttributeHeaderSize;
- if (! searchKey.ah().isNULL()) {
- if (! entryData.ah().isNULL()) {
+ if (! ah(searchKey).isNULL()) {
+ if (! ah(entryData).isNULL()) {
jam();
// verify attribute id
const DescAttr& descAttr = descEnt.m_descAttr[start];
- ndbrequire(searchKey.ah().getAttributeId() == descAttr.m_primaryAttrId);
- ndbrequire(entryData.ah().getAttributeId() == descAttr.m_primaryAttrId);
+ ndbrequire(ah(searchKey).getAttributeId() == descAttr.m_primaryAttrId);
+ ndbrequire(ah(entryData).getAttributeId() == descAttr.m_primaryAttrId);
// sizes
- const unsigned size1 = searchKey.ah().getDataSize();
- const unsigned size2 = min(entryData.ah().getDataSize(), len2);
+ const unsigned size1 = ah(searchKey).getDataSize();
+ const unsigned size2 = min(ah(entryData).getDataSize(), len2);
len2 -= size2;
// compare
NdbSqlUtil::Cmp* const cmp = c_sqlCmp[start];
@@ -74,15 +74,15 @@ Dbtux::cmpSearchKey(const Frag& frag, unsigned& start, ConstData searchKey, Cons
break;
}
} else {
- if (! entryData.ah().isNULL()) {
+ if (! ah(entryData).isNULL()) {
jam();
// NULL < not NULL
ret = -1;
break;
}
}
- searchKey += AttributeHeaderSize + searchKey.ah().getDataSize();
- entryData += AttributeHeaderSize + entryData.ah().getDataSize();
+ searchKey += AttributeHeaderSize + ah(searchKey).getDataSize();
+ entryData += AttributeHeaderSize + ah(entryData).getDataSize();
start++;
}
return ret;
@@ -130,17 +130,17 @@ Dbtux::cmpScanBound(const Frag& frag, unsigned idir, ConstData boundInfo, unsign
// get and skip bound type (it is used after the loop)
type = boundInfo[0];
boundInfo += 1;
- if (! boundInfo.ah().isNULL()) {
- if (! entryData.ah().isNULL()) {
+ if (! ah(boundInfo).isNULL()) {
+ if (! ah(entryData).isNULL()) {
jam();
// verify attribute id
- const Uint32 index = boundInfo.ah().getAttributeId();
+ const Uint32 index = ah(boundInfo).getAttributeId();
ndbrequire(index < frag.m_numAttrs);
const DescAttr& descAttr = descEnt.m_descAttr[index];
- ndbrequire(entryData.ah().getAttributeId() == descAttr.m_primaryAttrId);
+ ndbrequire(ah(entryData).getAttributeId() == descAttr.m_primaryAttrId);
// sizes
- const unsigned size1 = boundInfo.ah().getDataSize();
- const unsigned size2 = min(entryData.ah().getDataSize(), len2);
+ const unsigned size1 = ah(boundInfo).getDataSize();
+ const unsigned size2 = min(ah(entryData).getDataSize(), len2);
len2 -= size2;
// compare
NdbSqlUtil::Cmp* const cmp = c_sqlCmp[index];
@@ -159,14 +159,14 @@ Dbtux::cmpScanBound(const Frag& frag, unsigned idir, ConstData boundInfo, unsign
}
} else {
jam();
- if (! entryData.ah().isNULL()) {
+ if (! ah(entryData).isNULL()) {
jam();
// NULL < not NULL
return -1;
}
}
- boundInfo += AttributeHeaderSize + boundInfo.ah().getDataSize();
- entryData += AttributeHeaderSize + entryData.ah().getDataSize();
+ boundInfo += AttributeHeaderSize + ah(boundInfo).getDataSize();
+ entryData += AttributeHeaderSize + ah(entryData).getDataSize();
boundCount -= 1;
}
// all attributes were equal
diff --git a/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp b/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp
index 5640fdf2899..806eac1dcba 100644
--- a/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp
+++ b/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp
@@ -221,7 +221,7 @@ Dbtux::setKeyAttrs(const Frag& frag)
const DescAttr& descAttr = descEnt.m_descAttr[i];
Uint32 size = AttributeDescriptor::getSizeInWords(descAttr.m_attrDesc);
// set attr id and fixed size
- keyAttrs.ah() = AttributeHeader(descAttr.m_primaryAttrId, size);
+ ah(keyAttrs) = AttributeHeader(descAttr.m_primaryAttrId, size);
keyAttrs += 1;
// set comparison method pointer
const NdbSqlUtil::Type& sqlType = NdbSqlUtil::getTypeBinary(descAttr.m_typeId);
@@ -251,8 +251,8 @@ Dbtux::readKeyAttrs(const Frag& frag, TreeEnt ent, unsigned start, Data keyData)
ConstData data = keyData;
Uint32 totalSize = 0;
for (Uint32 i = start; i < frag.m_numAttrs; i++) {
- Uint32 attrId = data.ah().getAttributeId();
- Uint32 dataSize = data.ah().getDataSize();
+ Uint32 attrId = ah(data).getAttributeId();
+ Uint32 dataSize = ah(data).getDataSize();
debugOut << i << " attrId=" << attrId << " size=" << dataSize;
data += 1;
for (Uint32 j = 0; j < dataSize; j++) {
@@ -290,7 +290,7 @@ Dbtux::copyAttrs(const Frag& frag, ConstData data1, Data data2, unsigned maxlen2
unsigned len2 = maxlen2;
while (n != 0) {
jam();
- const unsigned dataSize = data1.ah().getDataSize();
+ const unsigned dataSize = ah(data1).getDataSize();
// copy header
if (len2 == 0)
return;