summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <mskold@mysql.com>2005-04-07 17:44:09 +0200
committerunknown <mskold@mysql.com>2005-04-07 17:44:09 +0200
commit606f0a1335a1c1c12a45ef979aecaf57163df2dd (patch)
treea991ed26c00129bfd3b8a5ba99d810e4f1ba2423 /ndb
parent1780abf26fcff5773ad7a4f01c66a6c48fb02bda (diff)
downloadmariadb-git-606f0a1335a1c1c12a45ef979aecaf57163df2dd.tar.gz
Fix for Bug #9675 Auto-increment not working with INSERT..SELECT and NDB storage
Diffstat (limited to 'ndb')
-rw-r--r--ndb/src/ndbapi/Ndb.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/ndb/src/ndbapi/Ndb.cpp b/ndb/src/ndbapi/Ndb.cpp
index b5493622b70..6390a1b50b5 100644
--- a/ndb/src/ndbapi/Ndb.cpp
+++ b/ndb/src/ndbapi/Ndb.cpp
@@ -722,26 +722,28 @@ Remark: Returns a new TupleId to the application.
Uint64
Ndb::getAutoIncrementValue(const char* aTableName, Uint32 cacheSize)
{
- DEBUG_TRACE("getAutoIncrementValue");
+ DBUG_ENTER("getAutoIncrementValue");
const char * internalTableName = internalizeTableName(aTableName);
Ndb_local_table_info *info=
theDictionary->get_local_table_info(internalTableName, false);
if (info == 0)
- return ~0;
+ DBUG_RETURN(~0);
const NdbTableImpl *table= info->m_table_impl;
Uint64 tupleId = getTupleIdFromNdb(table->m_tableId, cacheSize);
- return tupleId;
+ DBUG_PRINT("info", ("value %u", tupleId));
+ DBUG_RETURN(tupleId);
}
Uint64
Ndb::getAutoIncrementValue(const NdbDictionary::Table * aTable, Uint32 cacheSize)
{
- DEBUG_TRACE("getAutoIncrementValue");
+ DBUG_ENTER("getAutoIncrementValue");
if (aTable == 0)
- return ~0;
+ DBUG_RETURN(~0);
const NdbTableImpl* table = & NdbTableImpl::getImpl(*aTable);
Uint64 tupleId = getTupleIdFromNdb(table->m_tableId, cacheSize);
- return tupleId;
+ DBUG_PRINT("info", ("value %u", tupleId));
+ DBUG_RETURN(tupleId);
}
Uint64
@@ -756,39 +758,45 @@ Ndb::getTupleIdFromNdb(const char* aTableName, Uint32 cacheSize)
Uint64
Ndb::getTupleIdFromNdb(Uint32 aTableId, Uint32 cacheSize)
{
+ DBUG_ENTER("getTupleIdFromNdb");
if ( theFirstTupleId[aTableId] != theLastTupleId[aTableId] )
{
theFirstTupleId[aTableId]++;
- return theFirstTupleId[aTableId];
+ DBUG_PRINT("info", ("next cached value %u", theFirstTupleId[aTableId]));
+ DBUG_RETURN(theFirstTupleId[aTableId]);
}
else // theFirstTupleId == theLastTupleId
{
- return opTupleIdOnNdb(aTableId, cacheSize, 0);
+ DBUG_PRINT("info",("reading %u values from database",
+ (cacheSize == 0) ? 1 : cacheSize));
+ DBUG_RETURN(opTupleIdOnNdb(aTableId, (cacheSize == 0) ? 1 : cacheSize, 0));
}
}
Uint64
Ndb::readAutoIncrementValue(const char* aTableName)
{
- DEBUG_TRACE("readtAutoIncrementValue");
+ DBUG_ENTER("readtAutoIncrementValue");
const NdbTableImpl* table = theDictionary->getTable(aTableName);
if (table == 0) {
theError= theDictionary->getNdbError();
- return ~0;
+ DBUG_RETURN(~0);
}
Uint64 tupleId = readTupleIdFromNdb(table->m_tableId);
- return tupleId;
+ DBUG_PRINT("info", ("value %u", tupleId));
+ DBUG_RETURN(tupleId);
}
Uint64
Ndb::readAutoIncrementValue(const NdbDictionary::Table * aTable)
{
- DEBUG_TRACE("readtAutoIncrementValue");
+ DBUG_ENTER("readtAutoIncrementValue");
if (aTable == 0)
- return ~0;
+ DBUG_RETURN(~0);
const NdbTableImpl* table = & NdbTableImpl::getImpl(*aTable);
Uint64 tupleId = readTupleIdFromNdb(table->m_tableId);
- return tupleId;
+ DBUG_PRINT("info", ("value %u", tupleId));
+ DBUG_RETURN(tupleId);
}
Uint64