mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into trift2.:/MySQL/M51/push-5.1
This commit is contained in:
commit
08d0b2ba9b
5 changed files with 68 additions and 23 deletions
|
@ -222,19 +222,17 @@ ENGINE NDB;
|
|||
DROP LOGFILE GROUP lg1
|
||||
ENGINE NDB;
|
||||
**** End = And No = ****
|
||||
create table t1 (a int primary key) engine = myisam;
|
||||
create logfile group lg1 add undofile 'MYSQLTEST_VARDIR/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;;
|
||||
create logfile group lg1 add undofile 'MYSQLTEST_VARDIR/tmp/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;;
|
||||
ERROR HY000: Failed to create UNDOFILE
|
||||
create logfile group lg1
|
||||
add undofile 'undofile.dat'
|
||||
initial_size 1M
|
||||
undo_buffer_size = 1M
|
||||
engine=ndb;
|
||||
create tablespace ts1 add datafile 'MYSQLTEST_VARDIR/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb;;
|
||||
create tablespace ts1 add datafile 'MYSQLTEST_VARDIR/tmp/t1.frm' use logfile group lg1 initial_size 1M engine ndb;;
|
||||
ERROR HY000: Failed to create DATAFILE
|
||||
drop tablespace ts1
|
||||
engine ndb;
|
||||
ERROR HY000: Failed to drop TABLESPACE
|
||||
drop logfile group lg1
|
||||
engine ndb;
|
||||
drop table t1;
|
||||
|
|
|
@ -333,11 +333,18 @@ ENGINE NDB;
|
|||
###
|
||||
#
|
||||
# bug#16341
|
||||
create table t1 (a int primary key) engine = myisam;
|
||||
#create table t1 (a int primary key) engine = myisam;
|
||||
# 2007-08-22 Jeb
|
||||
# Removed the use of create table and manually
|
||||
# created the file to cause failure due to
|
||||
# inconsistant results on other OS
|
||||
# see #bug30559
|
||||
|
||||
--exec touch $MYSQLTEST_VARDIR/tmp/t1.frm
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--error ER_CREATE_FILEGROUP_FAILED
|
||||
--eval create logfile group lg1 add undofile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;
|
||||
--eval create logfile group lg1 add undofile '$MYSQLTEST_VARDIR/tmp/t1.frm' initial_size 1M undo_buffer_size = 1M engine=ndb;
|
||||
|
||||
create logfile group lg1
|
||||
add undofile 'undofile.dat'
|
||||
|
@ -347,7 +354,7 @@ engine=ndb;
|
|||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--error ER_CREATE_FILEGROUP_FAILED
|
||||
--eval create tablespace ts1 add datafile '$MYSQLTEST_VARDIR/master-data/test/t1.frm' use logfile group lg1 initial_size 1M engine ndb;
|
||||
--eval create tablespace ts1 add datafile '$MYSQLTEST_VARDIR/tmp/t1.frm' use logfile group lg1 initial_size 1M engine ndb;
|
||||
|
||||
--error ER_DROP_FILEGROUP_FAILED
|
||||
drop tablespace ts1
|
||||
|
@ -356,8 +363,8 @@ engine ndb;
|
|||
drop logfile group lg1
|
||||
engine ndb;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#drop table t1;
|
||||
--exec rm $MYSQLTEST_VARDIR/tmp/t1.frm
|
||||
|
||||
|
||||
# End 5.1 test
|
||||
|
|
|
@ -2812,11 +2812,17 @@ int ha_ndbcluster::write_row(uchar *record)
|
|||
|
||||
if (unlikely(m_slow_path))
|
||||
{
|
||||
/*
|
||||
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||
log-slave-updates option. This is instead handled in the
|
||||
injector thread, by looking explicitly at the
|
||||
opt_log_slave_updates flag.
|
||||
*/
|
||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
else if (thd->slave_thread)
|
||||
if (thd->slave_thread)
|
||||
op->setAnyValue(thd->server_id);
|
||||
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
}
|
||||
m_rows_changed++;
|
||||
|
||||
|
@ -3102,11 +3108,17 @@ int ha_ndbcluster::update_row(const uchar *old_data, uchar *new_data)
|
|||
|
||||
if (unlikely(m_slow_path))
|
||||
{
|
||||
/*
|
||||
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||
log-slave-updates option. This is instead handled in the
|
||||
injector thread, by looking explicitly at the
|
||||
opt_log_slave_updates flag.
|
||||
*/
|
||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
else if (thd->slave_thread)
|
||||
if (thd->slave_thread)
|
||||
op->setAnyValue(thd->server_id);
|
||||
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
}
|
||||
/*
|
||||
Execute update operation if we are not doing a scan for update
|
||||
|
@ -3170,13 +3182,19 @@ int ha_ndbcluster::delete_row(const uchar *record)
|
|||
|
||||
if (unlikely(m_slow_path))
|
||||
{
|
||||
/*
|
||||
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||
log-slave-updates option. This is instead handled in the
|
||||
injector thread, by looking explicitly at the
|
||||
opt_log_slave_updates flag.
|
||||
*/
|
||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
((NdbOperation *)trans->getLastDefinedOperation())->
|
||||
setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
else if (thd->slave_thread)
|
||||
if (thd->slave_thread)
|
||||
((NdbOperation *)trans->getLastDefinedOperation())->
|
||||
setAnyValue(thd->server_id);
|
||||
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
((NdbOperation *)trans->getLastDefinedOperation())->
|
||||
setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
}
|
||||
if (!(m_primary_key_update || m_delete_cannot_batch))
|
||||
// If deleting from cursor, NoCommit will be handled in next_result
|
||||
|
@ -3210,11 +3228,17 @@ int ha_ndbcluster::delete_row(const uchar *record)
|
|||
|
||||
if (unlikely(m_slow_path))
|
||||
{
|
||||
/*
|
||||
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||
log-slave-updates option. This is instead handled in the
|
||||
injector thread, by looking explicitly at the
|
||||
opt_log_slave_updates flag.
|
||||
*/
|
||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
else if (thd->slave_thread)
|
||||
if (thd->slave_thread)
|
||||
op->setAnyValue(thd->server_id);
|
||||
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -114,6 +114,9 @@ NDB_SHARE *ndb_apply_status_share= 0;
|
|||
NDB_SHARE *ndb_schema_share= 0;
|
||||
pthread_mutex_t ndb_schema_share_mutex;
|
||||
|
||||
extern my_bool opt_log_slave_updates;
|
||||
static my_bool g_ndb_log_slave_updates;
|
||||
|
||||
/* Schema object distribution handling */
|
||||
HASH ndb_schema_objects;
|
||||
typedef struct st_ndb_schema_object {
|
||||
|
@ -3296,6 +3299,14 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
|
|||
originating_server_id);
|
||||
return 0;
|
||||
}
|
||||
else if (!g_ndb_log_slave_updates)
|
||||
{
|
||||
/*
|
||||
This event comes from a slave applier since it has an originating
|
||||
server id set. Since option to log slave updates is not set, skip it.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
TABLE *table= share->table;
|
||||
DBUG_ASSERT(trans.good());
|
||||
|
@ -3942,6 +3953,8 @@ restart:
|
|||
! IS_NDB_BLOB_PREFIX(pOp->getEvent()->getTable()->getName()));
|
||||
DBUG_ASSERT(gci <= ndb_latest_received_binlog_epoch);
|
||||
|
||||
/* initialize some variables for this epoch */
|
||||
g_ndb_log_slave_updates= opt_log_slave_updates;
|
||||
i_ndb->
|
||||
setReportThreshEventGCISlip(ndb_report_thresh_binlog_epoch_slip);
|
||||
i_ndb->setReportThreshEventFreeMem(ndb_report_thresh_binlog_mem_usage);
|
||||
|
|
|
@ -607,7 +607,10 @@ RestoreDataIterator::getNextTuple(int & res)
|
|||
attr_data->size = 4*sz;
|
||||
|
||||
//if (m_currentTable->getTableId() >= 2) { ndbout << "fix i=" << i << " off=" << ptr-buf_ptr << " attrId=" << attrId << endl; }
|
||||
|
||||
if(!m_hostByteOrder
|
||||
&& attr_desc->m_column->getType() == NdbDictionary::Column::Timestamp)
|
||||
attr_data->u_int32_value[0] = Twiddle32(attr_data->u_int32_value[0]);
|
||||
|
||||
if(!Twiddle(attr_desc, attr_data))
|
||||
{
|
||||
res = -1;
|
||||
|
|
Loading…
Reference in a new issue