1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00

Added 3 psuedo columns

Cleaned up code
Changed ndb_select_all


ndb/include/kernel/AttributeHeader.hpp:
  Added commit count to psuedo columns
  Added bit for psuedo columns
ndb/include/kernel/GlobalSignalNumbers.h:
  Changed into READ_PSUEDO
ndb/include/ndbapi/NdbDictionary.hpp:
  Added 3 psuedo columns
ndb/include/ndbapi/NdbOperation.hpp:
  Added 3 psuedo columns
ndb/src/kernel/blocks/dbacc/Dbacc.hpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dbacc/DbaccInit.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dblqh/DblqhInit.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
  Changed into READ_PSUEDO
  Added commit count
ndb/src/ndbapi/NdbDictionary.cpp:
  Added 3 psuedo columns
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Added 3 psuedo columns
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
  Added 3 psuedo columns
ndb/src/ndbapi/NdbOperation.cpp:
  Added 3 psuedo columns
ndb/tools/select_count.cpp:
  Changed select_count into using new features
This commit is contained in:
unknown
2004-08-27 22:31:16 +02:00
parent 40358d1af9
commit fa5d6ac3b3
18 changed files with 178 additions and 137 deletions

View File

@@ -35,6 +35,7 @@
#include <NdbEventOperation.hpp>
#include "NdbEventOperationImpl.hpp"
#include "NdbBlob.hpp"
#include <AttributeHeader.hpp>
#define DEBUG_PRINT 0
#define INCOMPATIBLE_VERSION -2
@@ -197,32 +198,26 @@ NdbColumnImpl::equal(const NdbColumnImpl& col) const
if(strcmp(m_defaultValue.c_str(), col.m_defaultValue.c_str()) != 0){
return false;
}
return true;
}
void
NdbColumnImpl::assign(const NdbColumnImpl& org)
{
m_attrId = org.m_attrId;
m_name.assign(org.m_name);
m_type = org.m_type;
m_precision = org.m_precision;
m_scale = org.m_scale;
m_length = org.m_length;
m_pk = org.m_pk;
m_tupleKey = org.m_tupleKey;
m_distributionKey = org.m_distributionKey;
m_distributionGroup = org.m_distributionGroup;
m_distributionGroupBits = org.m_distributionGroupBits;
m_nullable = org.m_nullable;
m_indexOnly = org.m_indexOnly;
m_autoIncrement = org.m_autoIncrement;
m_autoIncrementInitialValue = org.m_autoIncrementInitialValue;
m_defaultValue.assign(org.m_defaultValue);
m_keyInfoPos = org.m_keyInfoPos;
m_attrSize = org.m_attrSize;
m_arraySize = org.m_arraySize;
NdbDictionary::Column *
NdbColumnImpl::create_psuedo(const char * name){
NdbDictionary::Column * col = new NdbDictionary::Column();
col->setName(name);
if(!strcmp(name, "NDB$FRAGMENT")){
col->setType(NdbDictionary::Column::Unsigned);
col->m_impl.m_attrId = AttributeHeader::FRAGMENT;
} else if(!strcmp(name, "NDB$ROW_COUNT")){
col->setType(NdbDictionary::Column::Bigunsigned);
col->m_impl.m_attrId = AttributeHeader::ROW_COUNT;
} else if(!strcmp(name, "NDB$COMMIT_COUNT")){
col->setType(NdbDictionary::Column::Bigunsigned);
col->m_impl.m_attrId = AttributeHeader::COMMIT_COUNT;
} else {
abort();
}
}
/**
@@ -332,7 +327,7 @@ NdbTableImpl::assign(const NdbTableImpl& org)
for(unsigned i = 0; i<org.m_columns.size(); i++){
NdbColumnImpl * col = new NdbColumnImpl();
const NdbColumnImpl * iorg = org.m_columns[i];
col->assign(* iorg);
(* col) = (* iorg);
m_columns.push_back(col);
}
@@ -593,6 +588,8 @@ NdbDictionaryImpl::NdbDictionaryImpl(Ndb &ndb,
m_globalHash = 0;
}
static int f_dictionary_count = 0;
NdbDictionaryImpl::~NdbDictionaryImpl()
{
NdbElement_t<NdbTableImpl> * curr = m_localHash.m_tableHash.getNext(0);
@@ -603,17 +600,20 @@ NdbDictionaryImpl::~NdbDictionaryImpl()
curr = m_localHash.m_tableHash.getNext(curr);
}
m_globalHash->lock();
if(--f_dictionary_count == 0){
delete NdbDictionary::Column::FRAGMENT;
delete NdbDictionary::Column::ROW_COUNT;
delete NdbDictionary::Column::COMMIT_COUNT;
NdbDictionary::Column::FRAGMENT= 0;
NdbDictionary::Column::ROW_COUNT= 0;
NdbDictionary::Column::COMMIT_COUNT= 0;
}
m_globalHash->unlock();
}
void
initDict(NdbDictionary::Dictionary & d)
{
TransporterFacade * tf = TransporterFacade::instance();
NdbDictionaryImpl & impl = NdbDictionaryImpl::getImpl(d);
impl.m_receiver.setTransporter(tf);
}
#if 0
bool
NdbDictionaryImpl::setTransporter(class TransporterFacade * tf)
{
@@ -624,13 +624,25 @@ NdbDictionaryImpl::setTransporter(class TransporterFacade * tf)
return false;
}
#endif
bool
NdbDictionaryImpl::setTransporter(class Ndb* ndb,
class TransporterFacade * tf)
{
m_globalHash = &tf->m_globalDictCache;
return m_receiver.setTransporter(ndb, tf);
if(m_receiver.setTransporter(ndb, tf)){
m_globalHash->lock();
if(f_dictionary_count++ == 0){
NdbDictionary::Column::FRAGMENT=
NdbColumnImpl::create_psuedo("NDB$FRAGMENT");
NdbDictionary::Column::ROW_COUNT=
NdbColumnImpl::create_psuedo("NDB$ROW_COUNT");
NdbDictionary::Column::COMMIT_COUNT=
NdbColumnImpl::create_psuedo("NDB$COMMIT_COUNT");
}
m_globalHash->unlock();
}
}
NdbTableImpl *
@@ -1223,6 +1235,7 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret,
impl->m_columns[attrDesc.AttributeId] = col;
it.next();
}
impl->m_noOfKeys = keyCount;
impl->m_keyLenInWords = keyInfoPos;
impl->m_sizeOfKeysInWords = keyInfoPos;