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

Merge mysql.com:/usr/local/home/marty/MySQL/mysql-4.1

into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.0
parents 883efd7e 7063d85b
...@@ -2561,6 +2561,7 @@ static int do_show_master_status(MYSQL *mysql_con) ...@@ -2561,6 +2561,7 @@ static int do_show_master_status(MYSQL *mysql_con)
row = mysql_fetch_row(master); row = mysql_fetch_row(master);
if (row && row[0] && row[1]) if (row && row[0] && row[1])
{ {
/* SHOW MASTER STATUS reports file and position */
if (opt_comments) if (opt_comments)
fprintf(md_result_file, fprintf(md_result_file,
"\n--\n-- Position to start replication or point-in-time " "\n--\n-- Position to start replication or point-in-time "
...@@ -2570,6 +2571,14 @@ static int do_show_master_status(MYSQL *mysql_con) ...@@ -2570,6 +2571,14 @@ static int do_show_master_status(MYSQL *mysql_con)
comment_prefix, row[0], row[1]); comment_prefix, row[0], row[1]);
check_io(md_result_file); check_io(md_result_file);
} }
else if (!ignore_errors)
{
/* SHOW MASTER STATUS reports nothing and --force is not enabled */
my_printf_error(0, "Error: Binlogging on server not active",
MYF(0), mysql_error(mysql_con));
mysql_free_result(master);
return 1;
}
mysql_free_result(master); mysql_free_result(master);
} }
return 0; return 0;
......
...@@ -1249,7 +1249,7 @@ int ha_ndbcluster::set_primary_key(NdbOperation *op, const byte *key) ...@@ -1249,7 +1249,7 @@ int ha_ndbcluster::set_primary_key(NdbOperation *op, const byte *key)
} }
int ha_ndbcluster::set_primary_key_from_record(NdbOperation *op, const byte *old_data) int ha_ndbcluster::set_primary_key_from_record(NdbOperation *op, const byte *record)
{ {
KEY* key_info= table->key_info + table->s->primary_key; KEY* key_info= table->key_info + table->s->primary_key;
KEY_PART_INFO* key_part= key_info->key_part; KEY_PART_INFO* key_part= key_info->key_part;
...@@ -1260,7 +1260,7 @@ int ha_ndbcluster::set_primary_key_from_record(NdbOperation *op, const byte *old ...@@ -1260,7 +1260,7 @@ int ha_ndbcluster::set_primary_key_from_record(NdbOperation *op, const byte *old
{ {
Field* field= key_part->field; Field* field= key_part->field;
if (set_ndb_key(op, field, if (set_ndb_key(op, field,
key_part->fieldnr-1, old_data+key_part->offset)) key_part->fieldnr-1, record+key_part->offset))
ERR_RETURN(op->getNdbError()); ERR_RETURN(op->getNdbError());
} }
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -2102,7 +2102,7 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data) ...@@ -2102,7 +2102,7 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
if ((table->s->primary_key != MAX_KEY) && if ((table->s->primary_key != MAX_KEY) &&
(key_cmp(table->s->primary_key, old_data, new_data))) (key_cmp(table->s->primary_key, old_data, new_data)))
{ {
int read_res, insert_res, delete_res; int read_res, insert_res, delete_res, undo_res;
DBUG_PRINT("info", ("primary key update, doing pk read+delete+insert")); DBUG_PRINT("info", ("primary key update, doing pk read+delete+insert"));
// Get all old fields, since we optimize away fields not in query // Get all old fields, since we optimize away fields not in query
...@@ -2131,9 +2131,14 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data) ...@@ -2131,9 +2131,14 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
DBUG_PRINT("info", ("insert failed")); DBUG_PRINT("info", ("insert failed"));
if (trans->commitStatus() == NdbConnection::Started) if (trans->commitStatus() == NdbConnection::Started)
{ {
// Undo write_row(new_data) // Undo delete_row(old_data)
m_primary_key_update= TRUE; m_primary_key_update= TRUE;
insert_res= write_row((byte *)old_data); undo_res= write_row((byte *)old_data);
if (undo_res)
push_warning(current_thd,
MYSQL_ERROR::WARN_LEVEL_WARN,
undo_res,
"NDB failed undoing delete at primary key update");
m_primary_key_update= FALSE; m_primary_key_update= FALSE;
} }
DBUG_RETURN(insert_res); DBUG_RETURN(insert_res);
......
...@@ -580,7 +580,7 @@ private: ...@@ -580,7 +580,7 @@ private:
friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg); friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg);
int get_ndb_blobs_value(NdbBlob *last_ndb_blob); int get_ndb_blobs_value(NdbBlob *last_ndb_blob);
int set_primary_key(NdbOperation *op, const byte *key); int set_primary_key(NdbOperation *op, const byte *key);
int set_primary_key_from_record(NdbOperation *op, const byte *old_data); int set_primary_key_from_record(NdbOperation *op, const byte *record);
int set_bounds(NdbIndexScanOperation*, const key_range *keys[2], uint= 0); int set_bounds(NdbIndexScanOperation*, const key_range *keys[2], uint= 0);
int key_cmp(uint keynr, const byte * old_row, const byte * new_row); int key_cmp(uint keynr, const byte * old_row, const byte * new_row);
int set_index_key(NdbOperation *, const KEY *key_info, const byte *key_ptr); int set_index_key(NdbOperation *, const KEY *key_info, const byte *key_ptr);
......
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