mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge mysql.com:/home/jimw/my/mysql-5.0-14212
into mysql.com:/home/jimw/my/mysql-5.0-clean
This commit is contained in:
@@ -1923,4 +1923,9 @@ d varchar(255) character set utf8,
|
|||||||
e varchar(255) character set utf8,
|
e varchar(255) character set utf8,
|
||||||
key (a,b,c,d,e)) engine=bdb;
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
||||||
|
set autocommit=0;
|
||||||
|
create table t1 (a int) engine=bdb;
|
||||||
|
commit;
|
||||||
|
alter table t1 add primary key(a);
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@@ -1010,4 +1010,13 @@ create table t1 (a varchar(255) character set utf8,
|
|||||||
e varchar(255) character set utf8,
|
e varchar(255) character set utf8,
|
||||||
key (a,b,c,d,e)) engine=bdb;
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #14212: Server crash after COMMIT + ALTER TABLE
|
||||||
|
#
|
||||||
|
set autocommit=0;
|
||||||
|
create table t1 (a int) engine=bdb;
|
||||||
|
commit;
|
||||||
|
alter table t1 add primary key(a);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@@ -3256,6 +3256,10 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
if (lock_type != F_UNLCK)
|
if (lock_type != F_UNLCK)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("lock_type != F_UNLCK"));
|
DBUG_PRINT("info", ("lock_type != F_UNLCK"));
|
||||||
|
if (!thd->transaction.on)
|
||||||
|
m_transaction_on= FALSE;
|
||||||
|
else
|
||||||
|
m_transaction_on= thd->variables.ndb_use_transactions;
|
||||||
if (!thd_ndb->lock_count++)
|
if (!thd_ndb->lock_count++)
|
||||||
{
|
{
|
||||||
PRINT_OPTION_FLAGS(thd);
|
PRINT_OPTION_FLAGS(thd);
|
||||||
@@ -3270,7 +3274,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
ERR_RETURN(ndb->getNdbError());
|
ERR_RETURN(ndb->getNdbError());
|
||||||
no_uncommitted_rows_reset(thd);
|
no_uncommitted_rows_reset(thd);
|
||||||
thd_ndb->stmt= trans;
|
thd_ndb->stmt= trans;
|
||||||
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
if (m_transaction_on)
|
||||||
|
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3285,7 +3290,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
ERR_RETURN(ndb->getNdbError());
|
ERR_RETURN(ndb->getNdbError());
|
||||||
no_uncommitted_rows_reset(thd);
|
no_uncommitted_rows_reset(thd);
|
||||||
thd_ndb->all= trans;
|
thd_ndb->all= trans;
|
||||||
trans_register_ha(thd, TRUE, &ndbcluster_hton);
|
if (m_transaction_on)
|
||||||
|
trans_register_ha(thd, TRUE, &ndbcluster_hton);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If this is the start of a LOCK TABLE, a table look
|
If this is the start of a LOCK TABLE, a table look
|
||||||
@@ -3319,10 +3325,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
m_ha_not_exact_count= !thd->variables.ndb_use_exact_count;
|
m_ha_not_exact_count= !thd->variables.ndb_use_exact_count;
|
||||||
m_autoincrement_prefetch=
|
m_autoincrement_prefetch=
|
||||||
(ha_rows) thd->variables.ndb_autoincrement_prefetch_sz;
|
(ha_rows) thd->variables.ndb_autoincrement_prefetch_sz;
|
||||||
if (!thd->transaction.on)
|
|
||||||
m_transaction_on= FALSE;
|
|
||||||
else
|
|
||||||
m_transaction_on= thd->variables.ndb_use_transactions;
|
|
||||||
|
|
||||||
m_active_trans= thd_ndb->all ? thd_ndb->all : thd_ndb->stmt;
|
m_active_trans= thd_ndb->all ? thd_ndb->all : thd_ndb->stmt;
|
||||||
DBUG_ASSERT(m_active_trans);
|
DBUG_ASSERT(m_active_trans);
|
||||||
|
@@ -1926,7 +1926,8 @@ int ha_enable_transaction(THD *thd, bool on)
|
|||||||
is an optimization hint that storage engine is free to ignore.
|
is an optimization hint that storage engine is free to ignore.
|
||||||
So, let's commit an open transaction (if any) now.
|
So, let's commit an open transaction (if any) now.
|
||||||
*/
|
*/
|
||||||
error= end_trans(thd, COMMIT);
|
if (!(error= ha_commit_stmt(thd)))
|
||||||
|
error= end_trans(thd, COMMIT);
|
||||||
}
|
}
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user