Commit 52740354 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/home/dlenev/src/mysql-5.0-sp


sql/sp_head.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
parents 0d7e68c9 e3bc9d82
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -307,8 +307,6 @@ db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp)
	goto done;
      if (sp)
      {
	if (oldlex != newlex)
	  sp->restore_lex(thd);
	delete sp;
	newlex->sphead= NULL;
      }
+13 −2
Original line number Diff line number Diff line
@@ -459,11 +459,22 @@ sp_head::destroy()
  delete_dynamic(&m_instr);
  m_pcont->destroy();
  free_items(free_list);

  /*
    If we have non-empty LEX stack then we just came out of parser with
    error. Now we should delete all auxilary LEXes and restore original
    THD::lex (In this case sp_head::restore_thd_mem_root() was not called
    too, so m_thd points to the current thread context).
    It is safe to not update LEX::ptr because further query string parsing
    and execution will be stopped anyway.
  */
  DBUG_ASSERT(m_lex.is_empty() || m_thd);
  while ((lex= (LEX *)m_lex.pop()))
  {
    if (lex != &m_thd->main_lex) // We got interrupted and have lex'es left
      delete lex;
    delete m_thd->lex;
    m_thd->lex= lex;
  }

  hash_free(&m_sptabs);
  hash_free(&m_spfuns);
  hash_free(&m_spprocs);
+0 −4
Original line number Diff line number Diff line
@@ -5115,8 +5115,6 @@ void mysql_parse(THD *thd, char *inBuf, uint length)
	{
	  if (thd->lex->sphead)
	  {
	    if (lex != thd->lex)
	      thd->lex->sphead->restore_lex(thd);
	    delete thd->lex->sphead;
	    thd->lex->sphead= NULL;
	  }
@@ -5152,8 +5150,6 @@ void mysql_parse(THD *thd, char *inBuf, uint length)
      if (thd->lex->sphead)
      {
	/* Clean up after failed stored procedure/function */
	if (lex != thd->lex)
	  thd->lex->sphead->restore_lex(thd);
	delete thd->lex->sphead;
	thd->lex->sphead= NULL;
      }
+0 −2
Original line number Diff line number Diff line
@@ -1771,8 +1771,6 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
    my_pthread_setprio(pthread_self(),WAIT_PRIOR);
  if (error && thd->lex->sphead)
  {
    if (lex != thd->lex)
      thd->lex->sphead->restore_lex(thd);
    delete thd->lex->sphead;
    thd->lex->sphead= NULL;
  }
+1 −2
Original line number Diff line number Diff line
@@ -415,9 +415,8 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
          */
          if (lex.sphead)
          {
            if (&lex != thd->lex)
              thd->lex->sphead->restore_lex(thd);
            delete lex.sphead;
            lex.sphead= 0;
          }
          goto err_with_lex_cleanup;
        }