Fixed BUG#1965: Opening a cursor hangs client when malformed select fails

and BUG#1966: "select 1 into a" on top-level hangs client


include/mysql_com.h:
  Added no_send_eof flag to NET for SP cursors (the simple read-only version).
mysql-test/r/sp-error.result:
  Added tests for BUG#1965 and BUG#1966.
mysql-test/t/sp-error.test:
  Added tests for BUG#1965 and BUG#1966.
sql/net_serv.cc:
  Added no_send_eof flag to NET for SP cursors (the simple read-only version).
sql/protocol.cc:
  Added no_send_eof flag to NET for SP cursors (the simple read-only version).
sql/sp_rcontext.cc:
  Use net->no_send_eof flag to prevent eofs during cursor open (instead of
  the dirty vio=0 which didn't work).
sql/sp_rcontext.h:
  Use net->no_send_eof flag to prevent eofs during cursor open (instead of
  the dirty vio=0 which didn't work).
sql/sql_yacc.yy:
  Give error message if doing SELECT ... INTO localvar even if it's outside an SP.
This commit is contained in:
unknown 2003-11-27 16:48:21 +01:00
commit 919b5ba6b5
8 changed files with 43 additions and 10 deletions

View file

@ -149,15 +149,15 @@ sp_cursor::pre_open(THD *thd)
m_oprot= thd->protocol; // Save the original protocol
thd->protocol= m_prot;
m_ovio= thd->net.vio; // Prevent send_eof()
thd->net.vio= 0;
m_nseof= thd->net.no_send_eof;
thd->net.no_send_eof= TRUE;
return m_lex;
}
void
sp_cursor::post_open(THD *thd, my_bool isopen)
{
thd->net.vio= m_ovio; // Restore the originals
thd->net.no_send_eof= m_nseof; // Restore the originals
thd->protocol= m_oprot;
m_isopen= isopen;
m_current_row= m_prot->data;