• unknown's avatar
    Added Non-prelocked SP execution: Now a PROCEDURE doesn't enter/leave prelocked mode for · 11abe15e
    unknown authored
    its body, but lets each statement to get/release its own locks. This allows a broader set
    of statements to be executed inside PROCEDUREs (but breaks replication)
    This patch should fix BUG#8072, BUG#8766, BUG#9563, BUG#11126
    
    
    mysql-test/r/sp-security.result:
      Drop tables this test attempts to create
    mysql-test/r/sp-threads.result:
      Update test results
    mysql-test/r/sp.result:
      Disabled a test that triggers BUG#11986, cleanup used tables when tests start.
    mysql-test/r/view.result:
      Enabled a test case that now works with prelocking-free SPs
    mysql-test/t/sp-security.test:
      Drop tables this test attempts to create
    mysql-test/t/sp.test:
      Disabled a test that triggers BUG#11986, cleanup used tables when tests start.
    mysql-test/t/view.test:
      Enabled a test case that now works with prelocking-free SPs
    sql/handler.cc:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
    sql/item_func.cc:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
    sql/sp.cc:
      Non-prelocked SP execution: Added support for skipping prelocking of procedure body for
      "CALL proc(...)" statements.
    sql/sp.h:
      Non-prelocked SP execution: Added support for skipping prelocking of procedure body for
      "CALL proc(...)" statements.
    sql/sp_cache.h:
      Added comments
    sql/sp_head.cc:
      Non-prelocked SP execution:
      * Try to unlock tables after PROCEDURE arguments have been evaluated.
      * Make sp_lex_keeper be able to execute in 2 modes: A) when already in prelocked mode
        B) when its statement enters/leaves prelocked mode itself.
    sql/sp_head.h:
      Non-prelocked SP execution:  Make sp_lex_keeper to additionally keep list of tables it 
      needs to prelock when its statement enters/leaves prelocked mode on its own.
    sql/sql_base.cc:
      Non-prelocked SP execution: Make open_tables() to
       * detect 'CALL proc(...)' and not to do prelocking for procedure body statements.
       * Make lex->query_tables_last to point precisely to a boundary in lex->query_tables 
         list where 'own' tables and views' tables end and added-for-prelocking tables begin.
         (it was not true before - view's tables could end up after query_tables_own_last)
    sql/sql_class.cc:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
    sql/sql_class.h:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
    sql/sql_lex.cc:
      Non-prelocked SP execution: More rigourous cleanup in st_lex::cleanup_after_one_table_open()
    sql/sql_parse.cc:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt, remove outdated comments
    sql/sql_trigger.h:
      Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
    11abe15e
sp_head.cc 60.2 KB