• unknown's avatar
    A fix and a test case for Bug#17843 "Certain stored procedures fail to · c12cc90d
    unknown authored
    run at startup"
    
    The server returned an error when trying to execute init-file with a 
    stored procedure that could return multiple result sets to the client. 
    A stored procedure can return multiple result sets if it contains 
    PREPARE, SELECT, SHOW and similar statements.
       
    The fix is to set client_capabilites|=CLIENT_MULTI_RESULTS in
    sql_parse.cc:handle_bootstrap(). There is no "client" really, so 
    nothing is ever sent. This makes init-file feature behave consistently: 
    the prepared statements that can be called directly in the init-file 
    can be used in a stored procedure too.
    
    Re-committed the patch originally submitted by Per-Erik after review.
    
    
    mysql-test/Makefile.am:
      Fix re-make without make clean.
    mysql-test/r/init_connect.result:
      Updated results (a test case for Bug#17843)
    mysql-test/r/init_file.result:
      Updated results (a test case for Bug#17843)
    mysql-test/std_data/init_file.dat:
      Add test coverage for new features added in 5.0. Note, that what can 
      be done in init_file is very limited as it does not support any other
      delimiter except ';' -- only "one liners" and no multiple statement 
      procedures. Also, this is executed with a dummy user "boot@", which 
      calls for the use of DEFINER clause.
    mysql-test/t/init_connect.test:
      Add test coverage for new features added in 5.0.
    mysql-test/t/init_file.test:
      Add test coverage for new features added in 5.0 --
      stored routines, views, triggers. The actual tests are in 
      std_data/init_file.dat, here we just check the results and clean up.
    sql/sql_class.cc:
      Initialize Security_context::priv_host to an empty string:
      when executing an init-file, sql_parse.cc:get_default_definer()
      will use this for the value of the definer if it's not set in the query.
    sql/sql_parse.cc:
      Set CLIENT_MULTI_RESULTS in handle_bootstrap(), to make prepared
      statements work in stored procedures called from init-file.
    c12cc90d
sql_parse.cc 220 KB