Commit b0ccd008 authored by mskold@mysql.com's avatar mskold@mysql.com

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

into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.0
parents e7fa41eb 4ddfe56f
...@@ -3224,7 +3224,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ...@@ -3224,7 +3224,7 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
if (!thd_ndb->lock_count++) if (!thd_ndb->lock_count++)
{ {
PRINT_OPTION_FLAGS(thd); PRINT_OPTION_FLAGS(thd);
if (!(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN | OPTION_TABLE_LOCK))) if (!(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))
{ {
// Autocommit transaction // Autocommit transaction
DBUG_ASSERT(!thd_ndb->stmt); DBUG_ASSERT(!thd_ndb->stmt);
...@@ -3398,11 +3398,11 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ...@@ -3398,11 +3398,11 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
} }
/* /*
When using LOCK TABLE's external_lock is only called when the actual Start a transaction for running a statement if one is not
TABLE LOCK is done. already running in a transaction. This will be the case in
Under LOCK TABLES, each used tables will force a call to start_stmt. a BEGIN; COMMIT; block
Ndb doesn't currently support table locks, and will do ordinary When using LOCK TABLE's external_lock will start a transaction
startTransaction for each transaction/statement. since ndb does not currently does not support table locking
*/ */
int ha_ndbcluster::start_stmt(THD *thd, thr_lock_type lock_type) int ha_ndbcluster::start_stmt(THD *thd, thr_lock_type lock_type)
...@@ -3412,17 +3412,10 @@ int ha_ndbcluster::start_stmt(THD *thd, thr_lock_type lock_type) ...@@ -3412,17 +3412,10 @@ int ha_ndbcluster::start_stmt(THD *thd, thr_lock_type lock_type)
PRINT_OPTION_FLAGS(thd); PRINT_OPTION_FLAGS(thd);
Thd_ndb *thd_ndb= get_thd_ndb(thd); Thd_ndb *thd_ndb= get_thd_ndb(thd);
NdbTransaction *trans= thd_ndb->stmt; NdbTransaction *trans= (thd_ndb->stmt)?thd_ndb->stmt:thd_ndb->all;
if (!trans){ if (!trans){
Ndb *ndb= thd_ndb->ndb; Ndb *ndb= thd_ndb->ndb;
DBUG_PRINT("trans",("Starting transaction stmt")); DBUG_PRINT("trans",("Starting transaction stmt"));
#if 0
NdbTransaction *tablock_trans= thd_ndb->all;
DBUG_PRINT("info", ("tablock_trans: %x", (UintPtr)tablock_trans));
DBUG_ASSERT(tablock_trans);
// trans= ndb->hupp(tablock_trans);
#endif
trans= ndb->startTransaction(); trans= ndb->startTransaction();
if (trans == NULL) if (trans == NULL)
ERR_RETURN(ndb->getNdbError()); ERR_RETURN(ndb->getNdbError());
...@@ -4187,7 +4180,12 @@ ulonglong ha_ndbcluster::get_auto_increment() ...@@ -4187,7 +4180,12 @@ ulonglong ha_ndbcluster::get_auto_increment()
--retries && --retries &&
ndb->getNdbError().status == NdbError::TemporaryError); ndb->getNdbError().status == NdbError::TemporaryError);
if (auto_value == NDB_FAILED_AUTO_INCREMENT) if (auto_value == NDB_FAILED_AUTO_INCREMENT)
ERR_RETURN(ndb->getNdbError()); {
const NdbError err= ndb->getNdbError();
sql_print_error("Error %lu in ::get_auto_increment(): %s",
(ulong) err.code, err.message);
DBUG_RETURN(~(ulonglong) 0);
}
DBUG_RETURN((longlong)auto_value); DBUG_RETURN((longlong)auto_value);
} }
......
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