Commit 1dd2efba authored by ndbdev@dl145b.mysql.com's avatar ndbdev@dl145b.mysql.com

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1

into dl145b.mysql.com:/home/ndbdev/tomas/mysql-5.1
parents c3b9a42a fdb645d1
...@@ -6220,6 +6220,17 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal) ...@@ -6220,6 +6220,17 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal)
noOfFragments = 1; noOfFragments = 1;
set_default_node_groups(signal, noOfFragments); set_default_node_groups(signal, noOfFragments);
break; break;
case DictTabInfo::DistrKeyHash:
jam();
case DictTabInfo::DistrKeyLin:
jam();
if (noOfFragments == 0)
{
jam();
noOfFragments = csystemnodes;
set_default_node_groups(signal, noOfFragments);
}
break;
default: default:
jam(); jam();
if (noOfFragments == 0) if (noOfFragments == 0)
......
...@@ -505,19 +505,35 @@ NdbTableImpl::buildColumnHash(){ ...@@ -505,19 +505,35 @@ NdbTableImpl::buildColumnHash(){
Uint32 Uint32
NdbTableImpl::get_nodes(Uint32 hashValue, const Uint16 ** nodes) const NdbTableImpl::get_nodes(Uint32 hashValue, const Uint16 ** nodes) const
{ {
if(m_replicaCount > 0) Uint32 fragmentId;
if(m_replicaCount == 0)
return 0;
switch (m_fragmentType)
{ {
Uint32 fragmentId = hashValue & m_hashValueMask; case NdbDictionary::Object::FragAllSmall:
if(fragmentId < m_hashpointerValue) case NdbDictionary::Object::FragAllMedium:
case NdbDictionary::Object::FragAllLarge:
case NdbDictionary::Object::FragSingle:
case NdbDictionary::Object::DistrKeyLin:
{ {
fragmentId = hashValue & ((m_hashValueMask << 1) + 1); fragmentId = hashValue & m_hashValueMask;
if(fragmentId < m_hashpointerValue)
fragmentId = hashValue & ((m_hashValueMask << 1) + 1);
break;
} }
Uint32 pos = fragmentId * m_replicaCount; case NdbDictionary::Object::DistrKeyHash:
if(pos + m_replicaCount <= m_fragments.size())
{ {
* nodes = m_fragments.getBase()+pos; fragmentId = hashValue % m_fragmentCount;
return m_replicaCount; break;
} }
default:
return 0;
}
Uint32 pos = fragmentId * m_replicaCount;
if (pos + m_replicaCount <= m_fragments.size())
{
*nodes = m_fragments.getBase()+pos;
return m_replicaCount;
} }
return 0; return 0;
} }
......
...@@ -94,6 +94,15 @@ add_distribution_key(Ndb*, NdbDictionary::Table& tab, int when) ...@@ -94,6 +94,15 @@ add_distribution_key(Ndb*, NdbDictionary::Table& tab, int when)
} }
} }
} }
Uint32 linear_hash_ind = rand() & 1;
NdbDictionary::Table::FragmentType ftype;
if (linear_hash_ind)
ftype = NdbDictionary::Table::DistrKeyLin;
else
ftype = NdbDictionary::Table::DistrKeyHash;
tab.setFragmentType(ftype);
ndbout << (NDBT_Table&)tab << endl; ndbout << (NDBT_Table&)tab << endl;
return 0; return 0;
......
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