summaryrefslogtreecommitdiff
path: root/ndb/src/ndbapi/NdbDictionary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/ndbapi/NdbDictionary.cpp')
-rw-r--r--ndb/src/ndbapi/NdbDictionary.cpp104
1 files changed, 83 insertions, 21 deletions
diff --git a/ndb/src/ndbapi/NdbDictionary.cpp b/ndb/src/ndbapi/NdbDictionary.cpp
index 4b30f41b51d..c8414ec16a3 100644
--- a/ndb/src/ndbapi/NdbDictionary.cpp
+++ b/ndb/src/ndbapi/NdbDictionary.cpp
@@ -30,7 +30,7 @@ NdbDictionary::Column::Column(const char * name)
NdbDictionary::Column::Column(const NdbDictionary::Column & org)
: m_impl(* new NdbColumnImpl(* this))
{
- m_impl.assign(org.m_impl);
+ m_impl = org.m_impl;
}
NdbDictionary::Column::Column(NdbColumnImpl& impl)
@@ -65,7 +65,7 @@ NdbDictionary::Column::getName() const {
void
NdbDictionary::Column::setType(Type t){
- m_impl.m_type = t;
+ m_impl.init(t);
}
NdbDictionary::Column::Type
@@ -103,6 +103,54 @@ NdbDictionary::Column::getLength() const{
return m_impl.m_length;
}
+void
+NdbDictionary::Column::setInlineSize(int size)
+{
+ m_impl.m_precision = size;
+}
+
+void
+NdbDictionary::Column::setCharset(CHARSET_INFO* cs)
+{
+ m_impl.m_cs = cs;
+}
+
+CHARSET_INFO*
+NdbDictionary::Column::getCharset() const
+{
+ return m_impl.m_cs;
+}
+
+int
+NdbDictionary::Column::getInlineSize() const
+{
+ return m_impl.m_precision;
+}
+
+void
+NdbDictionary::Column::setPartSize(int size)
+{
+ m_impl.m_scale = size;
+}
+
+int
+NdbDictionary::Column::getPartSize() const
+{
+ return m_impl.m_scale;
+}
+
+void
+NdbDictionary::Column::setStripeSize(int size)
+{
+ m_impl.m_length = size;
+}
+
+int
+NdbDictionary::Column::getStripeSize() const
+{
+ return m_impl.m_length;
+}
+
int
NdbDictionary::Column::getSize() const{
return m_impl.m_attrSize;
@@ -229,7 +277,8 @@ NdbDictionary::Table::Table(const char * name)
}
NdbDictionary::Table::Table(const NdbDictionary::Table & org)
- : m_impl(* new NdbTableImpl(* this))
+ : NdbDictionary::Object(),
+ m_impl(* new NdbTableImpl(* this))
{
m_impl.assign(org.m_impl);
}
@@ -272,11 +321,8 @@ NdbDictionary::Table::getTableId() const {
void
NdbDictionary::Table::addColumn(const Column & c){
- // JONAS check this out!!
- // Memory leak, the new Column will not be freed
- //NdbDictionary::Column * col = new Column(c);
NdbColumnImpl* col = new NdbColumnImpl;
- col->assign(NdbColumnImpl::getImpl(c));
+ (* col) = NdbColumnImpl::getImpl(c);
m_impl.m_columns.push_back(col);
if(c.getPrimaryKey()){
m_impl.m_noOfKeys++;
@@ -491,11 +537,8 @@ NdbDictionary::Index::getIndexColumn(int no) const {
void
NdbDictionary::Index::addColumn(const Column & c){
- // JONAS check this out!!
- // Memory leak, the new Column will not be freed
- //NdbDictionary::Column * col = new Column(c);
NdbColumnImpl* col = new NdbColumnImpl;
- col->assign(NdbColumnImpl::getImpl(c));
+ (* col) = NdbColumnImpl::getImpl(c);
m_impl.m_columns.push_back(col);
}
@@ -605,11 +648,8 @@ NdbDictionary::Event::setDurability(const EventDurability d)
void
NdbDictionary::Event::addColumn(const Column & c){
- // JONAS check this out!!
- // Memory leak, the new Column will not be freed
- //NdbDictionary::Column * col = new Column(c);
NdbColumnImpl* col = new NdbColumnImpl;
- col->assign(NdbColumnImpl::getImpl(c));
+ (* col) = NdbColumnImpl::getImpl(c);
m_impl.m_columns.push_back(col);
}
@@ -690,13 +730,23 @@ NdbDictionary::Dictionary::alterTable(const Table & t){
}
const NdbDictionary::Table *
-NdbDictionary::Dictionary::getTable(const char * name){
- NdbTableImpl * t = m_impl.getTable(name);
+NdbDictionary::Dictionary::getTable(const char * name, void **data){
+ 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){
+ return getTable(name, 0);
+}
+
void
NdbDictionary::Dictionary::invalidateTable(const char * name){
NdbTableImpl * t = m_impl.getTable(name);
@@ -806,7 +856,12 @@ NdbDictionary::Dictionary::listObjects(List& list, Object::Type type)
int
NdbDictionary::Dictionary::listIndexes(List& list, const char * tableName)
{
- return m_impl.listIndexes(list, tableName);
+ const NdbDictionary::Table* tab= getTable(tableName);
+ if(tab == 0)
+ {
+ return -1;
+ }
+ return m_impl.listIndexes(list, tab->getTableId());
}
const struct NdbError &
@@ -819,6 +874,8 @@ NdbDictionary::Dictionary::getNdbError() const {
NdbOut&
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:
@@ -861,10 +918,10 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
out << "Decimal(" << col.getScale() << "," << col.getPrecision() << ")";
break;
case NdbDictionary::Column::Char:
- out << "Char(" << col.getLength() << ")";
+ out << "Char(" << col.getLength() << ";" << csname << ")";
break;
case NdbDictionary::Column::Varchar:
- out << "Varchar(" << col.getLength() << ")";
+ out << "Varchar(" << col.getLength() << ";" << csname << ")";
break;
case NdbDictionary::Column::Binary:
out << "Binary(" << col.getLength() << ")";
@@ -884,7 +941,7 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
break;
case NdbDictionary::Column::Text:
out << "Text(" << col.getInlineSize() << "," << col.getPartSize()
- << ";" << col.getStripeSize() << ")";
+ << ";" << col.getStripeSize() << ";" << csname << ")";
break;
case NdbDictionary::Column::Undefined:
out << "Undefined";
@@ -901,3 +958,8 @@ operator<<(NdbOut& out, const NdbDictionary::Column& col)
out << " NULL";
return out;
}
+
+const NdbDictionary::Column * NdbDictionary::Column::FRAGMENT = 0;
+const NdbDictionary::Column * NdbDictionary::Column::ROW_COUNT = 0;
+const NdbDictionary::Column * NdbDictionary::Column::COMMIT_COUNT = 0;
+