Merge of mysql-5.1-bugteam into mysql-trunk-merge.
This commit is contained in:
commit
bba8d5ca9b
@ -658,7 +658,11 @@ void Protocol::end_partial_result_set(THD *thd_arg)
|
||||
bool Protocol::flush()
|
||||
{
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
return net_flush(&thd->net);
|
||||
bool error;
|
||||
thd->stmt_da->can_overwrite_status= TRUE;
|
||||
error= net_flush(&thd->net);
|
||||
thd->stmt_da->can_overwrite_status= FALSE;
|
||||
return error;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
@ -698,7 +702,8 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
|
||||
if (flags & SEND_NUM_ROWS)
|
||||
{ // Packet with number of elements
|
||||
uchar *pos= net_store_length(buff, list->elements);
|
||||
(void) my_net_write(&thd->net, buff, (size_t) (pos-buff));
|
||||
if (my_net_write(&thd->net, buff, (size_t) (pos-buff)))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
@ -820,7 +825,7 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
|
||||
if (flags & SEND_DEFAULTS)
|
||||
item->send(&prot, &tmp); // Send default value
|
||||
if (prot.write())
|
||||
break; /* purecov: inspected */
|
||||
DBUG_RETURN(1);
|
||||
#ifndef DBUG_OFF
|
||||
field_types[count++]= field.type;
|
||||
#endif
|
||||
@ -833,8 +838,9 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
|
||||
to show that there is no cursor.
|
||||
Send no warning information, as it will be sent at statement end.
|
||||
*/
|
||||
write_eof_packet(thd, &thd->net, thd->server_status,
|
||||
thd->warning_info->statement_warn_count());
|
||||
if (write_eof_packet(thd, &thd->net, thd->server_status,
|
||||
thd->warning_info->statement_warn_count()))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
DBUG_RETURN(prepare_for_send(list->elements));
|
||||
|
||||
|
@ -1673,7 +1673,8 @@ def_week_frmt: %lu, in_trans: %d, autocommit: %d",
|
||||
|
||||
thd->limit_found_rows = query->found_rows();
|
||||
thd->status_var.last_query_cost= 0.0;
|
||||
thd->stmt_da->disable_status();
|
||||
if (!thd->stmt_da->is_set())
|
||||
thd->stmt_da->disable_status();
|
||||
|
||||
BLOCK_UNLOCK_RD(query_block);
|
||||
MYSQL_QUERY_CACHE_HIT(thd->query(), (ulong) thd->limit_found_rows);
|
||||
|
@ -664,7 +664,12 @@ void Materialized_cursor::fetch(ulong num_rows)
|
||||
if ((res= table->file->rnd_next(table->record[0])))
|
||||
break;
|
||||
/* Send data only if the read was successful. */
|
||||
result->send_data(item_list);
|
||||
/*
|
||||
If network write failed (i.e. due to a closed socked),
|
||||
the error has already been set. Just return.
|
||||
*/
|
||||
if (result->send_data(item_list))
|
||||
return;
|
||||
}
|
||||
|
||||
switch (res) {
|
||||
|
@ -352,8 +352,11 @@ static bool send_prep_stmt(Prepared_statement *stmt, uint columns)
|
||||
&stmt->lex->param_list,
|
||||
Protocol::SEND_EOF);
|
||||
}
|
||||
/* Flag that a response has already been sent */
|
||||
thd->stmt_da->disable_status();
|
||||
|
||||
if (!error)
|
||||
/* Flag that a response has already been sent */
|
||||
thd->stmt_da->disable_status();
|
||||
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
#else
|
||||
|
Loading…
x
Reference in New Issue
Block a user