Commit 78c91051 authored by unknown's avatar unknown

Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb

into mysql.com:/export/space/pekka/ndb/version/my50-dt


ndb/include/ndbapi/NdbDictionary.hpp:
  Auto merged
ndb/src/ndbapi/NdbDictionary.cpp:
  Auto merged
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Auto merged
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
  Auto merged
parents e55403cd 272dccdb
...@@ -140,6 +140,7 @@ int main() ...@@ -140,6 +140,7 @@ int main()
eventTableName, eventTableName,
eventColumnName, eventColumnName,
noEventColumnName); noEventColumnName);
int j= 0; int j= 0;
while (j < 5) { while (j < 5) {
...@@ -238,8 +239,10 @@ int myCreateEvent(Ndb* myNdb, ...@@ -238,8 +239,10 @@ int myCreateEvent(Ndb* myNdb,
NdbDictionary::Dictionary *myDict= myNdb->getDictionary(); NdbDictionary::Dictionary *myDict= myNdb->getDictionary();
if (!myDict) APIERROR(myNdb->getNdbError()); if (!myDict) APIERROR(myNdb->getNdbError());
NdbDictionary::Event myEvent(eventName); const NdbDictionary::Table *table= myDict->getTable(eventTableName);
myEvent.setTable(eventTableName); if (!table) APIERROR(myDict->getNdbError());
NdbDictionary::Event myEvent(eventName, *table);
myEvent.addTableEvent(NdbDictionary::Event::TE_ALL); myEvent.addTableEvent(NdbDictionary::Event::TE_ALL);
// myEvent.addTableEvent(NdbDictionary::Event::TE_INSERT); // myEvent.addTableEvent(NdbDictionary::Event::TE_INSERT);
// myEvent.addTableEvent(NdbDictionary::Event::TE_UPDATE); // myEvent.addTableEvent(NdbDictionary::Event::TE_UPDATE);
......
...@@ -936,25 +936,56 @@ public: ...@@ -936,25 +936,56 @@ public:
= 3 = 3
#endif #endif
}; };
/*
* Constructor
* @param name Name of event
*/
Event(const char *name); Event(const char *name);
/*
* Constructor
* @param name Name of event
* @param table Reference retrieved from NdbDictionary
*/
Event(const char *name, const NdbDictionary::Table& table);
virtual ~Event(); virtual ~Event();
/** /**
* Set unique identifier for the event * Set/get unique identifier for the event
*/ */
void setName(const char *name); void setName(const char *name);
const char *getName() const;
/**
* Define table on which events should be detected
*
* @note calling this method will default to detection
* of events on all columns. Calling subsequent
* addEventColumn calls will override this.
*
* @param table reference retrieved from NdbDictionary
*/
void setTable(const NdbDictionary::Table& table);
/** /**
* Set table for which events should be detected * Set table for which events should be detected
*
* @note preferred way is using setTable(const NdbDictionary::Table)
* or constructor with table object parameter
*/ */
void setTable(const char *tableName); void setTable(const char *tableName);
/**
* Get table name for events
*
* @return table name
*/
const char* getTableName() const;
/** /**
* Add type of event that should be detected * Add type of event that should be detected
*/ */
void addTableEvent(const TableEvent te); void addTableEvent(const TableEvent te);
/** /**
* Set durability of the event * Get/set durability of the event
*/ */
void setDurability(const EventDurability ed); void setDurability(EventDurability ed);
EventDurability getDurability() const;
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
void addColumn(const Column &c); void addColumn(const Column &c);
#endif #endif
...@@ -971,7 +1002,7 @@ public: ...@@ -971,7 +1002,7 @@ public:
* *
* @param columnName Column name * @param columnName Column name
* *
* @note errors will mot be detected until createEvent() is called * @note errors will not be detected until createEvent() is called
*/ */
void addEventColumn(const char * columnName); void addEventColumn(const char * columnName);
/** /**
...@@ -985,6 +1016,13 @@ public: ...@@ -985,6 +1016,13 @@ public:
*/ */
void addEventColumns(int n, const char ** columnNames); void addEventColumns(int n, const char ** columnNames);
/**
* Get no of columns defined in an Event
*
* @return Number of columns, -1 on error
*/
int getNoOfEventColumns() const;
/** /**
* Get object status * Get object status
*/ */
......
...@@ -14,19 +14,6 @@ ...@@ -14,19 +14,6 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*****************************************************************************
* Name: NdbEventOperation.hpp
* Include:
* Link:
* Author: Tomas Ulin MySQL AB
* Date: 2003-11-21
* Version: 0.1
* Description: Event support
* Documentation:
* Adjust: 2003-11-21 Tomas Ulin First version.
* Adjust: 2003-12-11 Tomas Ulin Alpha Release.
****************************************************************************/
#ifndef NdbEventOperation_H #ifndef NdbEventOperation_H
#define NdbEventOperation_H #define NdbEventOperation_H
......
...@@ -585,6 +585,13 @@ NdbDictionary::Event::Event(const char * name) ...@@ -585,6 +585,13 @@ NdbDictionary::Event::Event(const char * name)
setName(name); setName(name);
} }
NdbDictionary::Event::Event(const char * name, const Table& table)
: m_impl(* new NdbEventImpl(* this))
{
setName(name);
setTable(table);
}
NdbDictionary::Event::Event(NdbEventImpl & impl) NdbDictionary::Event::Event(NdbEventImpl & impl)
: m_impl(impl) : m_impl(impl)
{ {
...@@ -604,12 +611,30 @@ NdbDictionary::Event::setName(const char * name) ...@@ -604,12 +611,30 @@ NdbDictionary::Event::setName(const char * name)
m_impl.setName(name); m_impl.setName(name);
} }
const char *
NdbDictionary::Event::getName() const
{
return m_impl.getName();
}
void
NdbDictionary::Event::setTable(const Table& table)
{
m_impl.setTable(table);
}
void void
NdbDictionary::Event::setTable(const char * table) NdbDictionary::Event::setTable(const char * table)
{ {
m_impl.setTable(table); m_impl.setTable(table);
} }
const char*
NdbDictionary::Event::getTableName() const
{
return m_impl.getTableName();
}
void void
NdbDictionary::Event::addTableEvent(const TableEvent t) NdbDictionary::Event::addTableEvent(const TableEvent t)
{ {
...@@ -617,11 +642,17 @@ NdbDictionary::Event::addTableEvent(const TableEvent t) ...@@ -617,11 +642,17 @@ NdbDictionary::Event::addTableEvent(const TableEvent t)
} }
void void
NdbDictionary::Event::setDurability(const EventDurability d) NdbDictionary::Event::setDurability(EventDurability d)
{ {
m_impl.setDurability(d); m_impl.setDurability(d);
} }
NdbDictionary::Event::EventDurability
NdbDictionary::Event::getDurability() const
{
return m_impl.getDurability();
}
void void
NdbDictionary::Event::addColumn(const Column & c){ NdbDictionary::Event::addColumn(const Column & c){
NdbColumnImpl* col = new NdbColumnImpl; NdbColumnImpl* col = new NdbColumnImpl;
...@@ -649,6 +680,11 @@ NdbDictionary::Event::addEventColumns(int n, const char ** names) ...@@ -649,6 +680,11 @@ NdbDictionary::Event::addEventColumns(int n, const char ** names)
addEventColumn(names[i]); addEventColumn(names[i]);
} }
int NdbDictionary::Event::getNoOfEventColumns() const
{
return m_impl.getNoOfEventColumns();
}
NdbDictionary::Object::Status NdbDictionary::Object::Status
NdbDictionary::Event::getObjectStatus() const NdbDictionary::Event::getObjectStatus() const
{ {
......
...@@ -564,24 +564,30 @@ void NdbEventImpl::setName(const char * name) ...@@ -564,24 +564,30 @@ void NdbEventImpl::setName(const char * name)
m_externalName.assign(name); m_externalName.assign(name);
} }
const char *NdbEventImpl::getName() const
{
return m_externalName.c_str();
}
void
NdbEventImpl::setTable(const NdbDictionary::Table& table)
{
m_tableImpl= &NdbTableImpl::getImpl(table);
m_tableName.assign(m_tableImpl->getName());
}
void void
NdbEventImpl::setTable(const char * table) NdbEventImpl::setTable(const char * table)
{ {
m_tableName.assign(table); m_tableName.assign(table);
} }
const char * const char *
NdbEventImpl::getTable() const NdbEventImpl::getTableName() const
{ {
return m_tableName.c_str(); return m_tableName.c_str();
} }
const char *
NdbEventImpl::getName() const
{
return m_externalName.c_str();
}
void void
NdbEventImpl::addTableEvent(const NdbDictionary::Event::TableEvent t = NdbDictionary::Event::TE_ALL) NdbEventImpl::addTableEvent(const NdbDictionary::Event::TableEvent t = NdbDictionary::Event::TE_ALL)
{ {
...@@ -599,6 +605,17 @@ NdbEventImpl::setDurability(const NdbDictionary::Event::EventDurability d) ...@@ -599,6 +605,17 @@ NdbEventImpl::setDurability(const NdbDictionary::Event::EventDurability d)
m_dur = d; m_dur = d;
} }
NdbDictionary::Event::EventDurability
NdbEventImpl::getDurability() const
{
return m_dur;
}
int NdbEventImpl::getNoOfEventColumns() const
{
return m_attrIds.size() + m_columns.size();
}
/** /**
* NdbDictionaryImpl * NdbDictionaryImpl
*/ */
...@@ -2248,12 +2265,12 @@ int ...@@ -2248,12 +2265,12 @@ int
NdbDictionaryImpl::createEvent(NdbEventImpl & evnt) NdbDictionaryImpl::createEvent(NdbEventImpl & evnt)
{ {
int i; int i;
NdbTableImpl* tab = getTable(evnt.getTable()); NdbTableImpl* tab = getTable(evnt.getTableName());
if(tab == 0){ if(tab == 0){
#ifdef EVENT_DEBUG #ifdef EVENT_DEBUG
ndbout_c("NdbDictionaryImpl::createEvent: table not found: %s", ndbout_c("NdbDictionaryImpl::createEvent: table not found: %s",
evnt.getTable()); evnt.getTableName());
#endif #endif
return -1; return -1;
} }
...@@ -2275,7 +2292,8 @@ NdbDictionaryImpl::createEvent(NdbEventImpl & evnt) ...@@ -2275,7 +2292,8 @@ NdbDictionaryImpl::createEvent(NdbEventImpl & evnt)
evnt.m_facade->addColumn(*(col_impl->m_facade)); evnt.m_facade->addColumn(*(col_impl->m_facade));
} else { } else {
ndbout_c("Attr id %u in table %s not found", evnt.m_attrIds[i], ndbout_c("Attr id %u in table %s not found", evnt.m_attrIds[i],
evnt.getTable()); evnt.getTableName());
m_error.code= 4713;
return -1; return -1;
} }
} }
...@@ -2533,8 +2551,8 @@ NdbDictionaryImpl::getEvent(const char * eventName) ...@@ -2533,8 +2551,8 @@ NdbDictionaryImpl::getEvent(const char * eventName)
} }
// We only have the table name with internal name // We only have the table name with internal name
ev->setTable(m_ndb.externalizeTableName(ev->getTable())); ev->setTable(m_ndb.externalizeTableName(ev->getTableName()));
ev->m_tableImpl = getTable(ev->getTable()); ev->m_tableImpl = getTable(ev->getTableName());
// get the columns from the attrListBitmask // get the columns from the attrListBitmask
......
...@@ -195,11 +195,14 @@ public: ...@@ -195,11 +195,14 @@ public:
void setName(const char * name); void setName(const char * name);
const char * getName() const; const char * getName() const;
void setTable(const NdbDictionary::Table& table);
void setTable(const char * table); void setTable(const char * table);
const char * getTable() const; const char * getTableName() const;
void addTableEvent(const NdbDictionary::Event::TableEvent t); void addTableEvent(const NdbDictionary::Event::TableEvent t);
void setDurability(const NdbDictionary::Event::EventDurability d); void setDurability(NdbDictionary::Event::EventDurability d);
NdbDictionary::Event::EventDurability getDurability() const;
void addEventColumn(const NdbColumnImpl &c); void addEventColumn(const NdbColumnImpl &c);
int getNoOfEventColumns() const;
void print() { void print() {
ndbout_c("NdbEventImpl: id=%d, key=%d", ndbout_c("NdbEventImpl: id=%d, key=%d",
......
...@@ -299,6 +299,12 @@ ErrorBundle ErrorCodes[] = { ...@@ -299,6 +299,12 @@ ErrorBundle ErrorCodes[] = {
{ 4232, AE, "Parallelism can only be between 1 and 240" }, { 4232, AE, "Parallelism can only be between 1 and 240" },
{ 290, AE, "Scan not started or has been closed by kernel due to timeout" }, { 290, AE, "Scan not started or has been closed by kernel due to timeout" },
/**
* Event schema errors
*/
{ 4713, SE, "Column defined in event does not exist in table"},
/** /**
* Event application errors * Event application errors
*/ */
......
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