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 + -
显示快捷键?