ndbdictionary.cpp

来自「MySQL源码文件5.X系列, 可自已编译到服务器」· C++ 代码 · 共 946 行 · 第 1/2 页

CPP
946
字号
  if(pTab != 0 && !equal(* pTab))    return -1;  return pNdb->getDictionary()->createTable(* this);}/***************************************************************** * Index facade */NdbDictionary::Index::Index(const char * name)  : m_impl(* new NdbIndexImpl(* this)){  setName(name);}NdbDictionary::Index::Index(NdbIndexImpl & impl)  : m_impl(impl) {}NdbDictionary::Index::~Index(){  NdbIndexImpl * tmp = &m_impl;    if(this != tmp){    delete tmp;  }}void NdbDictionary::Index::setName(const char * name){  m_impl.setName(name);}const char * NdbDictionary::Index::getName() const {  return m_impl.getName();}void NdbDictionary::Index::setTable(const char * table){  m_impl.setTable(table);}const char * NdbDictionary::Index::getTable() const {  return m_impl.getTable();}unsignedNdbDictionary::Index::getNoOfColumns() const {  return m_impl.m_columns.size();}intNdbDictionary::Index::getNoOfIndexColumns() const {  return m_impl.m_columns.size();}const NdbDictionary::Column *NdbDictionary::Index::getColumn(unsigned no) const {  if(no < m_impl.m_columns.size())    return m_impl.m_columns[no];  return NULL;}const char *NdbDictionary::Index::getIndexColumn(int no) const {  const NdbDictionary::Column* col = getColumn(no);  if (col)    return col->getName();  else    return NULL;}voidNdbDictionary::Index::addColumn(const Column & c){  NdbColumnImpl* col = new NdbColumnImpl;  (* col) = NdbColumnImpl::getImpl(c);  m_impl.m_columns.push_back(col);}voidNdbDictionary::Index::addColumnName(const char * name){  const Column c(name);  addColumn(c);}voidNdbDictionary::Index::addIndexColumn(const char * name){  const Column c(name);  addColumn(c);}voidNdbDictionary::Index::addColumnNames(unsigned noOfNames, const char ** names){  for(unsigned i = 0; i < noOfNames; i++) {    const Column c(names[i]);    addColumn(c);  }}voidNdbDictionary::Index::addIndexColumns(int noOfNames, const char ** names){  for(int i = 0; i < noOfNames; i++) {    const Column c(names[i]);    addColumn(c);  }}voidNdbDictionary::Index::setType(NdbDictionary::Index::Type t){  m_impl.m_type = t;}NdbDictionary::Index::TypeNdbDictionary::Index::getType() const {  return m_impl.m_type;}voidNdbDictionary::Index::setLogging(bool val){  m_impl.m_logging = val;}bool NdbDictionary::Index::getLogging() const {  return m_impl.m_logging;}NdbDictionary::Object::StatusNdbDictionary::Index::getObjectStatus() const {  return m_impl.m_status;}int NdbDictionary::Index::getObjectVersion() const {  return m_impl.m_version;}/***************************************************************** * Dictionary facade */NdbDictionary::Dictionary::Dictionary(Ndb & ndb)  : m_impl(* new NdbDictionaryImpl(ndb, *this)){}NdbDictionary::Dictionary::Dictionary(NdbDictionaryImpl & impl)  : m_impl(impl) {}NdbDictionary::Dictionary::~Dictionary(){  NdbDictionaryImpl * tmp = &m_impl;    if(this != tmp){    delete tmp;  }}int NdbDictionary::Dictionary::createTable(const Table & t){  return m_impl.createTable(NdbTableImpl::getImpl(t));}intNdbDictionary::Dictionary::dropTable(Table & t){  return m_impl.dropTable(NdbTableImpl::getImpl(t));}intNdbDictionary::Dictionary::dropTable(const char * name){  return m_impl.dropTable(name);}intNdbDictionary::Dictionary::alterTable(const Table & t){  return m_impl.alterTable(NdbTableImpl::getImpl(t));}const NdbDictionary::Table * NdbDictionary::Dictionary::getTable(const char * name, void **data) const{  NdbTableImpl * t = m_impl.getTable(name, data);  if(t)    return t->m_facade;  return 0;}void NdbDictionary::Dictionary::set_local_table_data_size(unsigned sz){  m_impl.m_local_table_data_size= sz;}const NdbDictionary::Table * NdbDictionary::Dictionary::getTable(const char * name) const{  return getTable(name, 0);}voidNdbDictionary::Dictionary::invalidateTable(const char * name){  DBUG_ENTER("NdbDictionaryImpl::invalidateTable");  NdbTableImpl * t = m_impl.getTable(name);  if(t)    m_impl.invalidateObject(* t);  DBUG_VOID_RETURN;}voidNdbDictionary::Dictionary::removeCachedTable(const char * name){  NdbTableImpl * t = m_impl.getTable(name);  if(t)    m_impl.removeCachedObject(* t);}intNdbDictionary::Dictionary::createIndex(const Index & ind){  return m_impl.createIndex(NdbIndexImpl::getImpl(ind));}int NdbDictionary::Dictionary::dropIndex(const char * indexName,				     const char * tableName){  return m_impl.dropIndex(indexName, tableName);}int NdbDictionary::Dictionary::dropIndex(const Index & ind){  return m_impl.dropIndex(NdbIndexImpl::getImpl(ind));}const NdbDictionary::Index * NdbDictionary::Dictionary::getIndex(const char * indexName,				    const char * tableName) const{  NdbIndexImpl * i = m_impl.getIndex(indexName, tableName);  if(i)    return i->m_facade;  return 0;}const NdbDictionary::Index * NdbDictionary::Dictionary::getIndex(const char * indexName,				    const Table & t) const{  NdbIndexImpl * i = m_impl.getIndex(indexName, & NdbTableImpl::getImpl(t));  if(i)    return i->m_facade;  return 0;}voidNdbDictionary::Dictionary::invalidateIndex(const char * indexName,                                           const char * tableName){  DBUG_ENTER("NdbDictionaryImpl::invalidateIndex");  NdbIndexImpl * i = m_impl.getIndex(indexName, tableName);  if(i) {    assert(i->m_table != 0);    m_impl.invalidateObject(* i->m_table);  }  DBUG_VOID_RETURN;}voidNdbDictionary::Dictionary::removeCachedIndex(const char * indexName,					     const char * tableName){  NdbIndexImpl * i = m_impl.getIndex(indexName, tableName);  if(i) {    assert(i->m_table != 0);    m_impl.removeCachedObject(* i->m_table);  }}const NdbDictionary::Table *NdbDictionary::Dictionary::getIndexTable(const char * indexName, 					 const char * tableName) const{  NdbIndexImpl * i = m_impl.getIndex(indexName, tableName);  NdbTableImpl * t = m_impl.getTable(tableName);  if(i && t) {    NdbTableImpl * it = m_impl.getIndexTable(i, t);    return it->m_facade;  }  return 0;}intNdbDictionary::Dictionary::listObjects(List& list, Object::Type type){  return m_impl.listObjects(list, type);}intNdbDictionary::Dictionary::listObjects(List& list, Object::Type type) const{  return m_impl.listObjects(list, type);}intNdbDictionary::Dictionary::listIndexes(List& list, const char * tableName){  const NdbDictionary::Table* tab= getTable(tableName);  if(tab == 0)  {    return -1;  }  return m_impl.listIndexes(list, tab->getTableId());}intNdbDictionary::Dictionary::listIndexes(List& list,				       const char * tableName) const{  const NdbDictionary::Table* tab= getTable(tableName);  if(tab == 0)  {    return -1;  }  return m_impl.listIndexes(list, tab->getTableId());}const struct NdbError & NdbDictionary::Dictionary::getNdbError() const {  return m_impl.getNdbError();}// printersNdbOut&operator<<(NdbOut& out, const NdbDictionary::Column& col){  const CHARSET_INFO *cs = col.getCharset();  const char *csname = cs ? cs->name : "?";  out << col.getName() << " ";  switch (col.getType()) {  case NdbDictionary::Column::Tinyint:    out << "Tinyint";    break;  case NdbDictionary::Column::Tinyunsigned:    out << "Tinyunsigned";    break;  case NdbDictionary::Column::Smallint:    out << "Smallint";    break;  case NdbDictionary::Column::Smallunsigned:    out << "Smallunsigned";    break;  case NdbDictionary::Column::Mediumint:    out << "Mediumint";    break;  case NdbDictionary::Column::Mediumunsigned:    out << "Mediumunsigned";    break;  case NdbDictionary::Column::Int:    out << "Int";    break;  case NdbDictionary::Column::Unsigned:    out << "Unsigned";    break;  case NdbDictionary::Column::Bigint:    out << "Bigint";    break;  case NdbDictionary::Column::Bigunsigned:    out << "Bigunsigned";    break;  case NdbDictionary::Column::Float:    out << "Float";    break;  case NdbDictionary::Column::Double:    out << "Double";    break;  case NdbDictionary::Column::Olddecimal:    out << "Olddecimal(" << col.getPrecision() << "," << col.getScale() << ")";    break;  case NdbDictionary::Column::Olddecimalunsigned:    out << "Olddecimalunsigned(" << col.getPrecision() << "," << col.getScale() << ")";    break;  case NdbDictionary::Column::Decimal:    out << "Decimal(" << col.getPrecision() << "," << col.getScale() << ")";    break;  case NdbDictionary::Column::Decimalunsigned:    out << "Decimalunsigned(" << col.getPrecision() << "," << col.getScale() << ")";    break;  case NdbDictionary::Column::Char:    out << "Char(" << col.getLength() << ";" << csname << ")";    break;  case NdbDictionary::Column::Varchar:    out << "Varchar(" << col.getLength() << ";" << csname << ")";    break;  case NdbDictionary::Column::Binary:    out << "Binary(" << col.getLength() << ")";    break;  case NdbDictionary::Column::Varbinary:    out << "Varbinary(" << col.getLength() << ")";    break;  case NdbDictionary::Column::Datetime:    out << "Datetime";    break;  case NdbDictionary::Column::Date:    out << "Date";    break;  case NdbDictionary::Column::Blob:    out << "Blob(" << col.getInlineSize() << "," << col.getPartSize()        << ";" << col.getStripeSize() << ")";    break;  case NdbDictionary::Column::Text:    out << "Text(" << col.getInlineSize() << "," << col.getPartSize()        << ";" << col.getStripeSize() << ";" << csname << ")";    break;  case NdbDictionary::Column::Time:    out << "Time";    break;  case NdbDictionary::Column::Year:    out << "Year";    break;  case NdbDictionary::Column::Timestamp:    out << "Timestamp";    break;  case NdbDictionary::Column::Undefined:    out << "Undefined";    break;  case NdbDictionary::Column::Bit:    out << "Bit(" << col.getLength() << ")";    break;  case NdbDictionary::Column::Longvarchar:    out << "Longvarchar(" << col.getLength() << ";" << csname << ")";    break;  case NdbDictionary::Column::Longvarbinary:    out << "Longvarbinary(" << col.getLength() << ")";    break;  default:    out << "Type" << (Uint32)col.getType();    break;  }  // show unusual (non-MySQL) array size  if (col.getLength() != 1) {    switch (col.getType()) {    case NdbDictionary::Column::Char:    case NdbDictionary::Column::Varchar:    case NdbDictionary::Column::Binary:    case NdbDictionary::Column::Varbinary:    case NdbDictionary::Column::Blob:    case NdbDictionary::Column::Text:    case NdbDictionary::Column::Bit:    case NdbDictionary::Column::Longvarchar:    case NdbDictionary::Column::Longvarbinary:      break;    default:      out << " [" << col.getLength() << "]";      break;    }  }  if (col.getPrimaryKey())    out << " PRIMARY KEY";  else if (! col.getNullable())    out << " NOT NULL";  else    out << " NULL";  if(col.getDistributionKey())    out << " DISTRIBUTION KEY";  return out;}const NdbDictionary::Column * NdbDictionary::Column::FRAGMENT = 0;const NdbDictionary::Column * NdbDictionary::Column::FRAGMENT_MEMORY = 0;const NdbDictionary::Column * NdbDictionary::Column::ROW_COUNT = 0;const NdbDictionary::Column * NdbDictionary::Column::COMMIT_COUNT = 0;const NdbDictionary::Column * NdbDictionary::Column::ROW_SIZE = 0;const NdbDictionary::Column * NdbDictionary::Column::RANGE_NO = 0;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?