An error occurred fetching the project authors.
  1. 07 Sep, 2005 1 commit
    • unknown's avatar
      Fix for Bug#12995: Inside function "Table 't4' was not locked with LOCK TABLES" · eb061b65
      unknown authored
      Any form of HANDLER statement is forbidden from usage in stored procedures/functions.
      
      
      mysql-test/r/sp-error.result:
        Results for the test case for Bug#12995 added.
      mysql-test/t/sp-error.test:
        Test case for Bug#12995 added.
      sql/sql_yacc.yy:
        Forbid any form of "HANDLER" statement from use in stored procedures/functions.
      eb061b65
  2. 06 Sep, 2005 1 commit
    • unknown's avatar
      Fix for Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function" · b8920588
      unknown authored
      OPTIMIZE TABLE statement is forbidden from usage in stored procedures/functions.
      
      NOTE: OPTIMIZE TABLE statement can be useful in stored procedures. The idea is
      that the user/administrator can create a stored procedure for admin
      tasks (optimizing, backing up, etc). This procedure can be scheduled to run
      automatically (by mean of internal cron (WL#1034)). So, once we can make this
      statement work, it is worth doing it.
      
      
      mysql-test/r/sp-error.result:
        Results for the test case for Bug#12953 added.
      mysql-test/t/sp-error.test:
        Test case for Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function" added.
      sql/sql_yacc.yy:
        Forbid "OPTIMIZE TABLE" statement from use in stored procedures/functions.
      b8920588
  3. 02 Sep, 2005 1 commit
    • unknown's avatar
      Implement WL#2661 "Prepared Statements: Dynamic SQL in Stored Procedures". · c910050a
      unknown authored
      The idea of the patch is to separate statement processing logic,
      such as parsing, validation of the parsed tree, execution and cleanup, 
      from global query processing logic, such as logging, resetting
      priorities of a thread, resetting stored procedure cache, resetting
      thread count of errors and warnings.
      This makes PREPARE and EXECUTE behave similarly to the rest of SQL
      statements and allows their use in stored procedures.
      This patch contains a change in behaviour:
      until recently for each SQL prepared statement command, 2 queries
      were written to the general log, e.g.
      [Query]   prepare stmt from @stmt_text;
      [Prepare] select * from t1 <-- contents of @stmt_text
      The chagne was necessary to prevent [Prepare] commands from being written
      to the general log when executing a stored procedure with Dynamic SQL.
      We should consider whether the old behavior is preferrable and probably
      restore it.
      This patch refixes Bug#7115, Bug#10975 (partially), Bug#10605 (various bugs
      in Dynamic SQL reported before it was disabled).
      
      
      mysql-test/r/not_embedded_server.result:
        Since we don't want to log Dynamic SQL in stored procedures,
        now the general log gets only one log entry per SQL statement.
      mysql-test/r/sp-error.result:
        - remove obsolete tests
        - a better error message for the case when a stored procedure that
        returns a result set is called from a function
      mysql-test/r/trigger.result:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      mysql-test/t/sp-error.test:
        - a better error message for the case when a stored procedure that
          returns a result set is called from a function.
        - move the comment to its place (end of file).
      mysql-test/t/trigger.test:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      sql/item_func.cc:
        - we need to pass sql_command explicitly to get_var_with_binlog, because
        when creating a query for SQL prepared statement thd->lex->sql_command
        points at SQLCOM_EXECUTE, which is not listed in the list of update
        queries.
      sql/log_event.h:
        - remove an extra copy of the previous sentence
      sql/mysql_priv.h:
        - fix declarations of sql_prepare.cc API
      sql/share/errmsg.txt:
        - a new error message, when one attempts to execute a prepared statement
        which is currently being executed (this can happen only in Dynamic SQL
        at the moment).
      sql/sp_head.cc:
        - extend sp_multi_results_command to return different flags for a
        command (and rename it)
        - add support for SQLCOM_PREPARE,SQLCOM_EXECUTE, SQLCOM_DEALLOCATE
          to sp_get_flags_for_command
        - replace multiple boolean sp_head members with uint m_flags
        - a fix for a crash when user variables are used in a stored procedure
          and binlog is on. A temporary fix for Bug#12637 "SP crashes the server 
         if it has update query with user var & binlog is enabled", which actually
         stands for stored functions: now instead of a crash we break
         replication if a user variable is used in a stored function which 
         is executed in prelocked mode.
      sql/sp_head.h:
        - replace multiple boolean flags of sp_head with uint m_flags;
        - add flag CONTAINS_DYNAMIC_SQL
        - use this flag to error if a stored procedure with Dynamic SQL is
          called from a function or trigger.
      sql/sql_class.cc:
        - Statement_map::insert should not delete a statement if it exists,
          now it's done externally to be able to handle the case when the
          statement being deleted is in use.
        - remove extra code (free_list is already reset in free_items)
      sql/sql_lex.cc:
        - add lex->stmt_prepare_mode; we can't rely on thd->command any more,
          because we don't reset it any more (Dynamic SQL requirement is that
          PS are as little intrusive as possible).
      sql/sql_lex.h:
        - declare bool LEX::stmt_prepare_mode
      sql/sql_parse.cc:
        - move prepared statement code to sql_prepare.cc
        - change declarations (refactored code)
        - better error message when one attempts to use Dynamic SQL or a 
          stored procedure that returns a result set in a function or trigger.
      sql/sql_prepare.cc:
        - major refactoring to ensure PREPARE/EXECUTE commands do not reset global THD
          state and allow their use in stored procedures.
        - add Prepared_statement::flags and use it to ensure no recursive execution
          of a prepared statement is possible
        - better comments
      sql/sql_yacc.yy:
        - enable PREPARE/EXECUTE/DEALLOCATE in stored procedures
        - produce an error message on attempt to use PREPARE/EXECUTE/DEALLOCATE
          in a stored function or trigger
      mysql-test/r/sp-dynamic.result:
        - sp-dynamic.test results
      mysql-test/t/sp-dynamic.test:
        - a new test for PREPARE/EXECUTE/DEALLOCATE in stored procedures.
      c910050a
  4. 29 Aug, 2005 1 commit
    • unknown's avatar
      fix for bug #12490 (all-in-one patch) · afe5507c
      unknown authored
      (Packets out of order if calling HELP CONTENTS from Stored Procedure)
      
      
      mysql-test/r/sp-error.result:
        results of test of bug 12490
      mysql-test/t/sp-error.test:
        test for bug 12490
        (Packets out of order if calling HELP CONTENTS from Stored Procedure)
      sql/sql_yacc.yy:
        disable HELP in SP
        (fixes bug 12490)
      afe5507c
  5. 18 Aug, 2005 1 commit
    • unknown's avatar
      Fix for bug #11896 "Partial locking in case of recursive trigger definitions". · b1921c85
      unknown authored
      If we are in stored function or trigger we should ensure that we won't change
      table that is already used by calling statement (this can damage table or
      easily cause infinite loops). Particularly this means that recursive triggers
      should be disallowed.
      
      
      mysql-test/r/sp-error.result:
        Added tests checking that in functions we don't allow to update tables which
        are used by statements which invoke these functions.
      mysql-test/r/trigger.result:
        Added test for bug #11896 "Partial locking in case of recursive trigger
        definitions".
      mysql-test/t/sp-error.test:
        Added tests checking that in functions we don't allow to update tables which
        are used by statements which invoke these functions.
      mysql-test/t/trigger.test:
        Added test for bug #11896 "Partial locking in case of recursive trigger
        definitions".
      sql/share/errmsg.txt:
        Added error messages for complaining about situations when in function or
        trigger we try to change table which is used in statement invoking this
        function or trigger.
      sql/sql_base.cc:
        open_table():
          If we are in stored function or trigger we should ensure that
          we won't change table that is already used by calling statement
          (this can damage table or easily cause infinite loops).
          So if we are opening table for writing, we should check that it
          is not already open by some calling stamement.
      b1921c85
  6. 10 Aug, 2005 1 commit
    • unknown's avatar
      Fix for bug #12280 "Triggers: crash if flush tables". · f6fff55e
      unknown authored
      We should not allow FLUSH statement to be executed inside both triggers
      and stored functions.
      
      
      mysql-test/r/sp-error.result:
        Updated test after replacing error, which is thrown when one uses FLUSH
        statement inside of stored function, with more specific.
        Also now we issue more general error when we barking about USE command
        in stored routines.
      mysql-test/r/trigger.result:
        Added test for bug #12280 "Triggers: crash if flush tables"
      mysql-test/t/sp-error.test:
        Updated test after replacing error, which is thrown when one uses FLUSH
        statement inside of stored function, with more specific.
        Also now we issue more general error when we barking about USE command
        in stored routines.
      mysql-test/t/trigger.test:
        Added test for bug #12280 "Triggers: crash if flush tables"
      sql/share/errmsg.txt:
        Removed ER_SP_NO_USE error. Now we use more general ER_SP_BADSTATEMENT in this
        case. Instead added error message for barking about statements which should not
        be allowed inside of stored functions or triggers.
        It is safe to do this since it is highly unprobable that someone will upgrade
        first to the new 5.0 release and then downgrade back to the old one.
      sql/sql_parse.cc:
        reload_acl_and_cache():
          FLUSH TABLES and FLUSH PRIVILEGES should not be allowed if we are inside
          of stored function or trigger.
      sql/sql_yacc.yy:
        We should not allow FLUSH statement inside both triggers and stored
        functions. Replaced error which is thrown in this case with more
        specific.
        Also now we issue more general ER_SP_BADSTATEMENT error when one tries
        to use USE command inside of stored routine.
      f6fff55e
  7. 13 Jul, 2005 1 commit
    • unknown's avatar
      Implementation of Monty's idea: Now we can open mysql.proc table for lookup · 11f9e513
      unknown authored
      of stored routines definitions even if we already have some tables open and
      locked. To avoid deadlocks in this case we have to put certain restrictions
      on locking of mysql.proc table.
      
      This allows to use stored routines safely under LOCK TABLES without explicitly
      mentioning mysql.proc in the list of locked tables. It also fixes bug #11554
      "Server crashes on statement indirectly using non-cached function".
      
      
      mysql-test/r/sp-error.result:
        Added test which checks that now we can read stored routines definitions
        under LOCK TABLES even if we have not locked mysql.proc explicitly. Also
        added check for restrictions which this ability puts on mysql.proc locking.
        Updated test for bug #9566 to correspond this new situation.
      mysql-test/r/sp-threads.result:
        Added test for bug #11554 "Server crashes on statement indirectly using
        non-cached function".
      mysql-test/t/sp-error.test:
        Added test which checks that now we can read stored routines definitions
        under LOCK TABLES even if we have not locked mysql.proc explicitly. Also
        added check for restrictions which this ability puts on mysql.proc locking.
        Updated test for bug #9566 to correspond this new situation.
      mysql-test/t/sp-threads.test:
        Added test for bug #11554 "Server crashes on statement indirectly using
        non-cached function".
      sql/lock.cc:
        get_lock_data():
         To be able to open and lock for reading system tables like 'mysql.proc',
         when we already have some tables opened and locked, and avoid deadlocks
         we have to disallow write-locking of these tables with any other tables.
      sql/mysql_priv.h:
        open_table() has new parameter which allows to open table even if some-one
        has done a flush or holding namelock on it.
      sql/share/errmsg.txt:
        Added error message saying that one cannot write-lock some of system tables
        with any other tables.
      sql/sp.cc:
        open_proc_table_for_read()/close_proc_table():
          Added functions to be able open and close mysql.proc table when we already
          have some tables open and locked.
        open_proc_table_for_update():
          Added function to simplify opening of mysql.proc for updates.
        db_find_routine_aux()/db_find_routine()/db_update_routine()/...
          Moved responsibility for opening mysql.proc table from db_find_routine_aux()
          one level up, since this level knows better which type of table access for
          reading of for update it needs.
        sp_function_exists():
          Removed unused function.
      sql/sp.h:
        sp_function_exists():
          Removed unused function.
      sql/sql_base.cc:
        open_table():
          Added new parameter which allows to open table even if some-one has done a
          flush or holding namelock on it.
        open_unireg_entry():
          Mark 'mysql.proc' as a system table which has special restrictions on its
          locking, but thanks to them can be open and locked even if we already have
          some open and locked.
      sql/sql_class.cc:
        Moved THD members holding information about open and locked tables to separate
        Open_tables_state class to be able to save/restore this state easier.
        Added THD::push_open_tables_state()/pop_open_tables_state() methods for
        saving/restoring this state.
      sql/sql_class.h:
        Moved THD members holding information about open and locked tables to separate
        Open_tables_state class to be able to save/restore this state easier.
        Added THD::push_open_tables_state()/pop_open_tables_state() methods for
        saving/restoring this state.
      sql/sql_lex.cc:
        Removed LEX::proc_table member which was not really used.
      sql/sql_lex.h:
        Removed LEX::proc_table member which was not really used.
      sql/sql_table.cc:
        open_table() has new parameter which allows to open table even if some-one
        has done a flush or holding namelock on it.
      sql/table.h:
        Added TABLE_SHARE::system_table indicating that this table is system table
        like 'mysql.proc' and we want to be able to open and read-lock it even when
        we already have some tables open and locked (and because of this we have
        to put some restrictions on write locking it).
      11f9e513
  8. 09 Jul, 2005 1 commit
    • unknown's avatar
      Enable support of access to tables from triggers. Thus fix bug #8406 "Triggers · 14b1f91b
      unknown authored
      crash if referencing a table" and several other related bugs.
      Fix for bug #11834 "Re-execution of prepared statement with dropped function
      crashes server." which was spotted during work on previous bugs.
      
      Also couple of nice cleanups:
      - Replaced two separate hashes for stored routines used by statement with one.
      - Now instead of doing one pass through all routines used in statement for
        caching them and then doing another pass for adding their tables to table
        list, we do only one pass during which do both things.
      
      
      mysql-test/r/sp-error.result:
        Added test for bug #11834 "Re-execution of prepared statement with dropped
        function crashes server" also covering handling of prepared statements
        which use stored functions but does not require prelocking.
      mysql-test/r/sp.result:
        Updated test for LOCK TABLES with views in table list.
        (Old version of statement used in this test will work ok now, since prelocking
         algorithm was tuned and will lock only one multi-set of tables for each routine
         even if this routine is used in several different views).
      mysql-test/r/trigger.result:
        Added several tests for triggers using tables.
      mysql-test/t/sp-error.test:
        Added test for bug #11834 "Re-execution of prepared statement with dropped
        function crashes server" also covering handling of prepared statements
        which use stored functions but does not require prelocking.
      mysql-test/t/sp.test:
        Updated comment about recursive views to reflect current situation.
        Updated test for LOCK TABLES with views in table list.
        (Old version of statement used in this test will work ok now, since prelocking
         algorithm was tuned and will lock only one multi-set of tables for each routine
         even if this routine is used in several different views).
      mysql-test/t/trigger.test:
        Added several tests for triggers using tables.
      sql/item_func.cc:
        Item_func_sp::cleanup():
          By next statement execution stored function can be dropped or altered so
          we can't assume that sp_head object for it will be still valid.
      sql/sp.cc:
        - Added Sroutine_hash_entry structure that represents element in the set of
          stored routines used by statement or routine. We can't as before use
          LEX_STRING for this purprose because we want link all elements of this set
          in list.
        - Replaced sp_add_to_hash() with sp_add_used_routine() which takes into account
          that now we use one hash for stored routines used by statement instead of two
          and which mantains list linking all elelemnts in this hash.
        - Renamed sp_merge_hash() to sp_update_sp_used_routines().
        - Introduced sp_update_stmt_used_routines() for adding elements to the set of
          routines used by statement from another similar set for statement or routine.
          This function will also mantain list linking elements of destination set.
        - Now instead of one sp_cache_routines() function we have family of 
          sp_cache_routines_and_add_tables() functions which are also responsible for
          adding tables used by routines being cached to statement table list. Nice
          optimization - thanks to list linking all elements in the hash of routines
          used by statement we don't need to perform several iterations over this hash
          (as it was before in cases when we have added new elements to it).
      sql/sp.h:
        Added declarations of functions used for manipulations with set (hash) of stored
        routines used by statement.
      sql/sp_head.cc:
        sp_name::init_qname():
          Now sp_name also holds key identifying routine in the set (hash) of
          stored routines used by statement. 
        sp_head:
          Instead of two separate hashes sp_funs/m_spprocs representing sets of stored
          routines used by this routine we use one hash - m_sroutines. 
        sp_instr_set_trigger_field:
          Added support for subqueries in assignments to row accessors in triggers.
        Removed definition of sp_add_sp_tables_to_table_list() and auxilary functions 
        since now we don't have separate stage on which we add tables used by routines
        used by statement to table list for prelocking. We do it on the same stage as
        we load those routines in SP cache. So all this functionality moved to
        sp_cache_routines_and_add_tables() family of functions.
      sql/sp_head.h:
        sp_name:
          Now this class also holds key identifying routine in the set (hash) of stored
          routines used by statement. 
        sp_head:
          Instead of two separate hashes sp_funs/m_spprocs representing sets of stored
          routines used by this routine we use one hash - m_sroutines. 
        sp_instr_set_trigger_field:
          Added support for subqueries in assignments to row accessors in triggers.
        Removed declaration of sp_add_sp_tables_to_table_list() since now we don't have
        separate stage on which we add tables used by routines used by statement to
        table list for prelocking. We do it on the same stage as we load those routines
        in SP cache.
      sql/sql_base.cc:
        open_tables():
        - LEX::spfuns/spprocs hashes were replaced with one LEX::sroutines hash.
        - Now instead of doing one pass through all routines used in statement for
          caching them and then doing another pass for adding their tables to table
          list, we do only one pass during which do both things. It is easy to do
          since all routines in the set of routines used by statement are linked in
          the list. This also allows us to calculate table list for prelocking more
          precisely.
        - Now triggers properly inform prelocking algorithm about tables they use.
      sql/sql_lex.cc:
        lex_start():
          Replaced LEX::spfuns/spprocs with with one LEX::sroutines hash.
          Added LEX::sroutines_list list linking all elements in this hash.
        st_lex::st_lex():
          Moved definition of LEX constructor to sql_lex.cc file to be able
          use sp_sroutine_key declaration from sp.h in it.
      sql/sql_lex.h:
        LEX:
          Replaced two separate hashes for stored routines used by statement with one.
          Added list linking all elements in this hash to be able to iterate through all
          elements and add new elements to this hash at the same time.
          Moved constructor definition to sql_lex.cc.
      sql/sql_parse.cc:
        mysql_execute_command():
          Replaced LEX::spfuns/spprocs with one LEX::sroutines hash.
      sql/sql_trigger.cc:
        Added missing GNU GPL notice.
        Table_triggers_list::check_n_load()
          Added initialization of sroutines_key which stores key representing
          triggers of this table in the set (hash) of routines used by this statement.
      sql/sql_trigger.h:
        Added missing GNU GPL notice.
        Table_triggers_list:
          Added sroutines_key member to store key representing triggers of this
          table in the set (hash) of routines used by this statement.
          Declared sp_cache_routines_and_add_tables_for_triggers() as friend since
          it needs access to sroutines_key and trigger bodies.
      sql/sql_yacc.yy:
        - Now we use sp_add_used_routine() instead of sp_add_to_hash() for adding
          elements to the set of stored routines used in statement.
        - Enabled support of subqueries as right sides in assignments to triggers' row
          accessors.
      14b1f91b
  9. 08 Jul, 2005 1 commit
    • unknown's avatar
      Fixed BUG#11365: Stored Procedure: Crash on Procedure operation · accdff51
      unknown authored
        Two separate problems. A key buffer was too small in sp.cc for multi-byte
        fields, and the creation and fixing of mysql.proc in the scripts hadn't been
        updated with the correct character sets and collations (like the other
        system tables had).
        Note: No special test case, as the use of utf8 for mysql.proc will make
        any existing crash (if the buffer overrrun wasn't fixed).
      
      
      mysql-test/r/sp-error.result:
        Updated test case for too long SP names (as the limit has increased with the use of utf8).
      mysql-test/t/sp-error.test:
        Updated test case for too long SP names (as the limit has increased with the use of utf8).
      scripts/mysql_create_system_tables.sh:
        Use utf8 for mysql.proc, just like for the other system tables.
      scripts/mysql_fix_privilege_tables.sql:
        Use utf8 for mysql.proc, just like for the other system tables.
        (Some tabs also replaced by space)
      sql/sp.cc:
        Use a larger key buffer for stored procedures to avoid stack overrun with multi-byte keys.
      accdff51
  10. 04 Jul, 2005 1 commit
    • unknown's avatar
      Fix for BUG#9814: Clear thd->net.no_send_error before each SP instruction · b87b3255
      unknown authored
      execution. Failure to do so caused the erroneous statements to send nothing
      and hang the client.
      
      
      mysql-test/r/sp-error.result:
        Testcase for BUG#9814. Note that the result demonstrates that currently
        mysql-test-run ignores errors in multi-statement if they arrive after first 
        resultset has been received.
      mysql-test/t/sp-error.test:
        Testcase for BUG#09814.
      b87b3255
  11. 01 Jul, 2005 2 commits
    • unknown's avatar
      Disabled the GOTO feature. (It's non-standard and undocumented.) · 1ff4a0eb
      unknown authored
      We want to have the defacto standard syntax for labels ("L:" instead of "label L;"),
      and fix some known bugs, before we enable this again.
      The code is left intact (#ifdef'ed SP_GOTO) and the test cases are kept in
      sp-goto.test, for the future...
      
      
      mysql-test/r/sp-error.result:
        Moved all goto tests to sp-goto.test.
      mysql-test/r/sp.result:
        Moved all goto tests to sp-goto.test.
      mysql-test/t/disabled.def:
        Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
        We keep the tests in sp-goto.test for the future, but disable for now.
      mysql-test/t/sp-error.test:
        Moved all goto tests to sp-goto.test.
      mysql-test/t/sp.test:
        Moved all goto tests to sp-goto.test.
      sql/lex.h:
        Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
      sql/sql_yacc.yy:
        Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
      1ff4a0eb
    • unknown's avatar
      "Fix" for bug #11394 "Recursion in SP crash server" and bug #11600 · 0f64a495
      unknown authored
      "Stored procedures: crash with function calling itself".
      
      Disallow recursive stored routines until we either make Item's and LEX
      reentrant safe or will use spearate sp_head instances (and thus separate
      LEX objects and Item trees) for each routine invocation.
      
      
      mysql-test/r/sp-error.result:
        Added tests for bug #11394 "Recursion in SP crash server" and
        bug #11600 "Stored procedures: crash with function calling itself".
        (We simply disallow recursion for stored routines).
      mysql-test/r/sp.result:
        Disabled test cases containing recursive stored routines until we will
        support for them.
      mysql-test/t/sp-error.test:
        Added tests for bug #11394 "Recursion in SP crash server" and
        bug #11600 "Stored procedures: crash with function calling itself".
        (We simply disallow recursion for stored routines).
      mysql-test/t/sp.test:
        Disabled test cases containing recursive stored routines until we will
        support for them.
      sql/share/errmsg.txt:
        Added error message saying that recursive stored routines are disallowed.
      sql/sp_head.cc:
        sp_head::execute():
          Since many Item's and LEX members can't be used in reentrant fashion
          we have to disable recursion for stored routines. So let us track
          routine invocations using sp_head::m_is_invoked member and raise
          error when one attempts to call routine recursively.
      sql/sp_head.h:
        sp_head:
          Added m_is_invoked member for tracking of routine invocations and
          preventing recursion.
      0f64a495
  12. 08 Jun, 2005 1 commit
    • unknown's avatar
      Disable dynamic SQL in stored routines. · 3fbdaf36
      unknown authored
      This is to close Bug#10975, Bug#7115, Bug#10605 
      This feature will be implemented in a future release.
      
      
      mysql-test/r/sp-error.result:
        Test results fixed (test coverage for disabled Dynamic SQL in SP).
      mysql-test/t/sp-error.test:
        Test coverage to disable Dynamic SQL in stored routines.
      sql/sql_yacc.yy:
        Disable dynamic SQL in stored routines.
      3fbdaf36
  13. 01 Jun, 2005 1 commit
    • unknown's avatar
      Fixed BUG#10969: Stored procedures: crash if default() function · ae28b3bd
      unknown authored
        Return an error if default() is used on a local variable.
        This is actaully a side-effect of BUG#5967: Stored procedure declared
        variable used instead of column (to be fixed later), so this is really a
        workaround until that is fixed.
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#10969.
      mysql-test/t/sp-error.test:
        New test case for BUG#10969.
      sql/item.h:
        Get name of local variable for error messages.
      sql/sql_yacc.yy:
        Return an error if default() is applied on a local SP variable.
      ae28b3bd
  14. 31 May, 2005 1 commit
    • unknown's avatar
      Fixed BUG#9529: Stored Procedures: No Warning on truncation of procedure name · 3f7b0f70
      unknown authored
                      during creation.
        Although it returns an error, consistent with the behaviour for other objects.
        (Unclear why we would allow the creation of SPs with truncated names.)
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#9529.
      mysql-test/t/sp-error.test:
        New test case for BUG#9529.
      sql/sp.cc:
        Check SP name length on creation (and drop).
      sql/sp.h:
        New status code for bad (too long) name.
      sql/sql_parse.cc:
        New status code for bad (too long) name.
      3f7b0f70
  15. 27 May, 2005 1 commit
  16. 20 May, 2005 1 commit
    • unknown's avatar
      Fixed BUG#10537: Server crashes while loading data file into table through · 2a5a3de2
      unknown authored
                        procedure.
        by simply disabling 'load' in stored procedures, like it's already disabled
        for prepared statements. (They must be made "re-execution" safe before
        working with either PS or SP.)
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#10537.
      mysql-test/t/sp-error.test:
        New test case for BUG#10537.
      sql/sql_yacc.yy:
        Disable LOAD in stored procedures (just as for prepared statements).
      2a5a3de2
  17. 27 Apr, 2005 1 commit
    • unknown's avatar
      Post-review fixes of the patch for BUG#8408: Stored procedure crash if function contains SHOW · 5c44e1ac
      unknown authored
      (Review on irc by monty)
      
      
      mysql-test/r/sp-error.result:
        Renamed a procedure and function to avoid confusion
      mysql-test/t/sp-error.test:
        Renamed a procedure and function to avoid confusion
      sql/item_func.cc:
        Corrected (and better) way to set/reset the client cap. flag in Item_func_sp::execute()
      sql/share/errmsg.txt:
        Changed the ER_SP_BADSELECT error; more accurate, and includes the procedure name.
      sql/sql_parse.cc:
        Include the procedure name in the new error message.
      5c44e1ac
  18. 26 Apr, 2005 1 commit
    • unknown's avatar
      Fixed BUG#8408: Stored procedure crash if function contains SHOW · ede52616
      unknown authored
        We simply have to disallow any kind of result set being sent back
        from a function. Can't see any way to make that to work.
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#8408.
      mysql-test/t/sp-error.test:
        New test case for BUG#8408.
      sql/item_func.cc:
        Disable result sets from functions but temporarily turning CLIENT_MULTI_RESULTS off.
      sql/share/errmsg.txt:
        Added error message for statements not allowed in functions (detected during parsing).
      sql/sql_yacc.yy:
        Don't allow result sets in functions.
      ede52616
  19. 20 Apr, 2005 1 commit
    • unknown's avatar
      Fixed BUG#7047: Stored procedure crash if alter procedure · c751c6ce
      unknown authored
        by simply disallowing alter procedure/function in an SP (as for drop).
      
      
      mysql-test/r/sp-error.result:
        Added test case for BUG#7047.
      mysql-test/t/sp-error.test:
        Added test case for BUG#7047.
      sql/share/errmsg.txt:
        Modified error message for "update procedure/function" too.
      sql/sql_yacc.yy:
        Don't allow alter procedure/function in an SP.
      c751c6ce
  20. 14 Apr, 2005 1 commit
    • unknown's avatar
      Fixed BUG#9598: stored procedure call within stored procedure · e0fdbeba
      unknown authored
                      overwrites IN variable
        and added error checking of variables for [IN]OUT parameters while
        rewriting the out parameter handling.
      
      
      mysql-test/r/sp-error.result:
        New test case for non-variable argument for [IN]OUT parameters.
        (And changed to qualified names in some other error messages.)
      mysql-test/r/sp.result:
        New test case for BUG#9598.
      mysql-test/t/sp-error.test:
        New test case for non-variable argument for [IN]OUT parameters.
      mysql-test/t/sp.test:
        New test case for BUG#9598.
      sql/item.h:
        Need to distinguish between SP local variable items and other items,
        for error checking and [IN]OUT parameter handling.
      sql/share/errmsg.txt:
        New error message for non-variable arguments for [IN]OUT parameters in stored procedures.
      sql/sp_head.cc:
        Rewrote the [IN]OUT parameter handling in procedure invokation, to make
        it work properly when using user variables in sub-calls.
        Also added error checking for non-variable arguments for such parameters
        (and changed to qualified names for wrong number of arg. errors).
      sql/sp_rcontext.cc:
        No need to keep track on the out index for an [IN]OUT parameter any more.
      sql/sp_rcontext.h:
        No need to keep track on the out index for an [IN]OUT parameter any more.
      e0fdbeba
  21. 08 Apr, 2005 2 commits
    • unknown's avatar
      Fixed BUG#9073: Able to declare two handlers for same condition in same scope · fc5db935
      unknown authored
      mysql-test/r/sp-error.result:
        Added test case for BUG#9073.
      mysql-test/t/sp-error.test:
        Added test case for BUG#9073.
      sql/share/errmsg.txt:
        New error message for duplicate condition handlers in stored procedures.
      sql/sp_pcontext.cc:
        Keep track on condition handlers in the same block for error checking.
      sql/sp_pcontext.h:
        Keep track on condition handlers in the same block for error checking.
      sql/sql_yacc.yy:
        Keep track on condition handlers in the same block for error checking.
      fc5db935
    • unknown's avatar
      Fixed BUG#7299: Stored procedures: exception handler catches not-found conditions · 5f006200
      unknown authored
      mysql-test/r/sp-error.result:
        Added test case for BUG#7299.
      mysql-test/t/sp-error.test:
        Added test case for BUG#7299.
      sql/sp_rcontext.cc:
        Corrected cut&paste error; make sure we only catch actual errors with sqlexception.
      5f006200
  22. 07 Apr, 2005 1 commit
    • unknown's avatar
      Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal · b2ff4e9c
      unknown authored
      state" to sp-error.test.
      
      According to Per-Erik all SP related tests which should result in error
      should go into sp-error.test and not in sp.test, because we want to be
      able to run sp.test using normal client.
      
      
      mysql-test/r/sp-error.result:
        Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
        state" to sp-error.test.
      mysql-test/r/sp.result:
        Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
        state" to sp-error.test.
      mysql-test/t/sp-error.test:
        Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
        state" to sp-error.test.
      mysql-test/t/sp.test:
        Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
        state" to sp-error.test.
      b2ff4e9c
  23. 30 Mar, 2005 1 commit
    • unknown's avatar
      Fixed BUG#6600: Stored procedure crash after repeated calls with check table. · 66b71ca3
      unknown authored
        Sedond attempt: Simply disallow CHECK in SPs, since it can't work.
      
      
      mysql-test/r/sp-error.result:
        New test cast for BUG#6600
      mysql-test/r/sp.result:
        Removed old test case for BUG#6600
      mysql-test/t/sp-error.test:
        New test cast for BUG#6600
      mysql-test/t/sp.test:
        Removed old test case for BUG#6600
      sql/share/errmsg.txt:
        Made the SP bad statement error message more general.
      sql/sp_head.cc:
        CHECK is not possible in stored procedures.
      sql/sql_parse.cc:
        Undid attempt to fix CHECK in stored procedures, it didn't work.
      sql/sql_yacc.yy:
        CHECK is not possible in stored procedures.
        (And updated error messages for LOCK/UNLOCK.)
      66b71ca3
  24. 28 Feb, 2005 1 commit
    • unknown's avatar
      Fixed BUG#8760: Stored Procedures: Invalid SQLSTATE is allowed in · 110f6abd
      unknown authored
                      a DECLARE ? HANDLER FOR stmt.
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#8776 (check format of sqlstates in handler declarations).
      mysql-test/t/sp-error.test:
        New test case for BUG#8776 (check format of sqlstates in handler declarations).
      sql/share/errmsg.txt:
        New error message for malformed SQLSTATEs.
      sql/sp_pcontext.cc:
        Added function for checking SQLSTATE format.
      sql/sp_pcontext.h:
        Added function for checking SQLSTATE format.
      sql/sql_yacc.yy:
        Check format of SQLSTATE in handler declaration.
      110f6abd
  25. 08 Feb, 2005 1 commit
    • unknown's avatar
      WL#2130: Table locking for stored FUNCTIONs · 3f249321
      unknown authored
      Collect all tables and SPs refered by a statement, and open all tables
      with an implicit LOCK TABLES. Do find things refered by triggers and views,
      we open them first (and then repeat this until nothing new is found), before
      doing the actual lock tables.
      
      
      mysql-test/r/information_schema.result:
        Updated result for WL#2130.
      mysql-test/r/lock.result:
        Updated result for WL#2130.
      mysql-test/r/sp-error.result:
        Updated result for WL#2130.
      mysql-test/r/sp.result:
        Updated result for WL#2130.
      mysql-test/r/view.result:
        Updated result for WL#2130.
      mysql-test/t/information_schema.test:
        Disabled one test case due to a bug involving LOCK TABLES,
        which shows up with WL#2130.
      mysql-test/t/lock.test:
        New error message with WL#2130. This change is under debate and might change
        in the future, but will do for now.
      mysql-test/t/sp-error.test:
        Updated for WL#2130. Some tests are voided when table access does work from
        functions.
      mysql-test/t/sp.test:
        Updated for WL#2130.
      mysql-test/t/view.test:
        Updated for WL#2130.
      sql/item_func.cc:
        We now have to set net.no_send_ok for functions too, with WL#2130.
      sql/share/errmsg.txt:
        Reused an error code since the old use was voided by WL#2130, but a new
        one was needed instead (similar, but more specific restriction).
      sql/sp.cc:
        Fixed error handling and collection of used tables for WL#2130.
      sql/sp.h:
        Fixed error handling and collection of used tables for WL#2130.
      sql/sp_head.cc:
        Added support functions for collecting and merging hash tables and lists
        of used tables from SPs and substatements, for WL#2130.
      sql/sp_head.h:
        Added support functions for collecting and merging hash tables and lists
        of used tables from SPs and substatements, for WL#2130.
      sql/sql_base.cc:
        Changed the way table->query_id is tested and set during with locked tables
        in effect. This makes some SP test cases work with WL#2130, but has a side
        effect on some error cases with explicit LOCK TABLES. It's still debated if
        this is the correct way, so it might change.
      sql/sql_class.h:
        Added flags for circumventing some interference between WL#2130 and mysql_make_view().
      sql/sql_derived.cc:
        Added some missing initializations. (Potential bugs.)
      sql/sql_lex.cc:
        Clear the new hash tables for WL#2130.
      sql/sql_lex.h:
        Added hash tables for procedures and tables too (as for functions), for WL#2130.
      sql/sql_parse.cc:
        WL#2130: Make table accesses from stored functions work by adding an implicit
        LOCK TABLES around (most) executed statements. To do this, we have to go through
        a loop where we collect all SPs and tables in mysql_execute_statement.
      sql/sql_prepare.cc:
        Cache both functions and procedures for WL#2130.
      sql/sql_show.cc:
        Added some missing initializations. (Potential bugs.)
      sql/sql_view.cc:
        Shortcut mysql_make_view() if thd->shortcut_make_view is true during
        the pre-open phase for collecting tables in WL#2130. Otherwise, the
        similar mechanism here causes interference.
      sql/sql_yacc.yy:
        For WL#2130, added caching of procedures and disallowed LOCK/UNLOCK TABLES in SPs.
      3f249321
  26. 03 Jan, 2005 1 commit
  27. 25 Nov, 2004 1 commit
    • unknown's avatar
      Fixed BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY · ea75abc5
      unknown authored
      ...and for PURGE BEFORE too. (Don't fix_fields in the parser!)
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#6807
      mysql-test/t/sp-error.test:
        New test case for BUG#6807
      sql/sql_lex.h:
        Purge and kill query args not needed in lex. (Using value_list instead)
      sql/sql_parse.cc:
        Evaluate purge before and kill query args in mysql_execute_command
        instead of in the parser. (Makes it work with stored procedures)
      sql/sql_yacc.yy:
        Don't evaluate (fix_fields) args in the parser for purge before and kill query.
        (Doesn't work with stored procedures)
      ea75abc5
  28. 22 Oct, 2004 2 commits
    • unknown's avatar
      Fixed BUG#6030: Stored procedure has no appropriate DROP privilege. · a50cd5c5
      unknown authored
        ...and no ALTER privilege either.
        For now, only the definer and root can drop or alter an SP.
      
      
      include/mysqld_error.h:
        New access denied error code when dropping/altering stored procedures.
      include/sql_state.h:
        New access denied error code when dropping/altering stored procedures.
      mysql-test/r/sp-error.result:
        Removed warning for "unitialized variable", as this popped up in unexpected
        places after the access control for drop/alter SPs was added. (And the warning
        was wrong and planned to be removed anyway.)
      mysql-test/r/sp-security.result:
        Added tests for access control on who's allowed to drop and alter SPs.
      mysql-test/r/sp.result:
        Updated results. (Warning removed.)
      mysql-test/t/sp-error.test:
        Removed warning for "unitialized variable", as this popped up in unexpected
        places after the access control for drop/alter SPs was added. (And the warning
        was wrong and planned to be removed anyway.)
      mysql-test/t/sp-security.test:
        Added tests for access control on who's allowed to drop and alter SPs.
      sql/share/czech/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/danish/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/dutch/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/english/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/estonian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/french/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/german/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/greek/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/hungarian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/italian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/japanese/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/korean/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/norwegian-ny/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/norwegian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/polish/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/portuguese/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/romanian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/russian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/serbian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/slovak/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/spanish/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/swedish/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/share/ukrainian/errmsg.txt:
        New access denied error message when dropping/altering stored procedures.
      sql/sql_parse.cc:
        Added minimal access control for DROP/ALTER PROCEDURE/FUNCTION. Only the definer
        and root are allowed to do this.
      sql/sql_yacc.yy:
        Removed warning for "unitialized variable", as this popped up in unexpected
        places after the access control for drop/alter SPs was added. (And the warning
        was wrong and planned to be removed anyway.)
      a50cd5c5
    • unknown's avatar
      Fixed BUG#6027: Stored procedures can be renamed. · 35588c9d
      unknown authored
      Removed the support for renaming SPs. It's non-standard, conflicted with a standard
      syntax, and was a bit broken anyway.
      
      
      mysql-test/r/sp-error.result:
        Removed test for renaming procedures with alter.
      mysql-test/r/sp.result:
        Removed test for renaming procedures with alter.
      mysql-test/t/sp-error.test:
        Removed test for renaming procedures with alter.
      mysql-test/t/sp.test:
        Removed test for renaming procedures with alter.
      sql/sp.cc:
        Removed support for renaming SPs. It's non-standard, conflicted with a standard
        syntax, and was a bit broken anyway.
      sql/sp.h:
        Removed support for renaming SPs. It's non-standard, conflicted with a standard
        syntax, and was a bit broken anyway.
      sql/sql_parse.cc:
        Removed support for renaming SPs. It's non-standard, conflicted with a standard
        syntax, and was a bit broken anyway.
      sql/sql_yacc.yy:
        Removed support for renaming SPs. It's non-standard, conflicted with a standard
        syntax, and was a bit broken anyway.
      35588c9d
  29. 07 Oct, 2004 1 commit
    • unknown's avatar
      Revised BUG#5000: SPs can be created with no default database. · 43785537
      unknown authored
      Now simply give an error if no database. (The "global SP feature" will be
      done using PATH instead.)
      
      
      mysql-test/r/sp-error.result:
        Removed test cases for undone "feature".
      mysql-test/t/sp-error.test:
        Removed test cases for undone "feature".
      sql/sql_parse.cc:
        Check if created procedure/function has a database; give error if not.
      sql/sql_yacc.yy:
        Undid the "global SP feature".
      43785537
  30. 10 Sep, 2004 1 commit
    • unknown's avatar
      Fixed BUG#3294: Stored procedure crash if table dropped before use. · 1912148c
      unknown authored
        Dropping the table was not the real problem, the problem was with errors
        occuring within error handlers.
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#3294.
      mysql-test/t/sp-error.test:
        New test case for BUG#3294.
      sql/sp_head.cc:
        Use hreturn instruction both for continue and exit handlers (a special case
        of a jump).
      sql/sp_head.h:
        Use hreturn instruction both for continue and exit handlers (a special case
        of a jump).
      sql/sp_rcontext.cc:
        Keep track on if we're in a handler already, for error handling.
      sql/sp_rcontext.h:
        Keep track on if we're in a handler already, for error handling.
      sql/sql_yacc.yy:
        Use hreturn instruction both for continue and exit handlers (a special case
        of a jump).
      1912148c
  31. 09 Sep, 2004 1 commit
    • unknown's avatar
      After merge fixes of merge with 4.1 that included the new arena code. · 33efc967
      unknown authored
      Fixed (together with Guilhem) bugs in mysqlbinlog regarding --offset
      Prefix addresses with 0x for easier comparisons of debug logs
      Fixed problem where MySQL choosed index-read even if there would be a much better range on the same index
      This fix changed some 'index' queries to 'range' queries in the test suite
      Don't create 'dummy' WHERE clause for trivial WHERE clauses where we can remove the WHERE clause.
      This fix removed of a lot of 'Using where' notes in the test suite.
      Give NOTE instead of WARNING if table/function doesn't exists when using DROP IF EXISTS
      Give NOTE instead of WARNING for safe field-type conversions
      
      
      Makefile.am:
        Don't automaticly update files from bk
      client/mysqlbinlog.cc:
        Merge with 4.1 (+ apply bug fixes for --offset and --start-position)
      include/my_sys.h:
        Faster clear_alloc_root()
      mysql-test/r/bdb.result:
        Updated results after merge
      mysql-test/r/create.result:
        Updated results after merge
      mysql-test/r/func_group.result:
        Updated results after merge
      mysql-test/r/func_if.result:
        Updated results after merge
      mysql-test/r/heap_btree.result:
        Updated results after merge
      mysql-test/r/index_merge.result:
        Updated results after merge
      mysql-test/r/index_merge_ror.result:
        Updated results after merge
      mysql-test/r/innodb.result:
        Updated results after merge
      mysql-test/r/join_outer.result:
        Updated results after merge
      mysql-test/r/mysqlbinlog2.result:
        Updated results after merge
      mysql-test/r/negation_elimination.result:
        Updated results after merge
      mysql-test/r/null.result:
        Updated results after merge
        Added more tests
      mysql-test/r/null_key.result:
        Updated results after merge
        Added more tests
      mysql-test/r/order_by.result:
        Updated results after merge
      mysql-test/r/range.result:
        Updated results after merge
        Added more tests
      mysql-test/r/rpl_charset.result:
        Updated results after merge
      mysql-test/r/sp-error.result:
        Updated results after merge
      mysql-test/r/sp.result:
        Updated results after merge
        Added delete of some stored procedures in an attempt to be able to re-run test even if it aborts in the middle
      mysql-test/r/type_blob.result:
        Updated results after merge
        (Some warnings are now notes)
      mysql-test/r/user_var.result:
        Updated results after merge
        Added more tests
      mysql-test/r/variables.result:
        Updated results after merge
      mysql-test/r/view.result:
        Updated results after merge
      mysql-test/t/mysqlbinlog2.test:
        Updated tests to use new positions
      mysql-test/t/null.test:
        More tests
      mysql-test/t/null_key.test:
        More tests
      mysql-test/t/range.test:
        More tests
      mysql-test/t/rpl_charset.test:
        Avoid big diffs in the future if tests changes
      mysql-test/t/sp-error.test:
        Updated error numbers
      mysql-test/t/sp-security.test:
        Updated error numbers
      mysql-test/t/sp.test:
        Updated results after merge
        Added delete of some stored procedures in an attempt to be able to re-run test even if it aborts in the middle
      mysql-test/t/user_var.test:
        More tests
      mysql-test/t/view.test:
        Updated error numbers
      mysys/my_alloc.c:
        Write into debug log the address of the allocated area
      sql/ha_isam.cc:
        Prefix addresses with 0x for easier comparisons of debug logs
      sql/ha_myisam.cc:
        Prefix addresses with 0x for easier comparisons of debug logs
      sql/ha_ndbcluster.cc:
        Add missing enum to switch
      sql/handler.cc:
        remove compiler warning
      sql/item.cc:
        More debugging
        Simple cleanup
      sql/item.h:
        Move Item::cleanup() to item.cc
      sql/item_cmpfunc.cc:
        Fix arena code
      sql/item_subselect.cc:
        After merge fixes
      sql/item_subselect.h:
        After merge fixes
      sql/item_sum.cc:
        Updated comment
      sql/log_event.cc:
        Remove wrong test
      sql/mysql_priv.h:
        Indentation fixes
      sql/mysqld.cc:
        After merge fixes
        Added 0x to pointers in debug log
      sql/opt_range.cc:
        Fixed problem where MySQL choosed index-read even if there would be a much better range on the same index
        This fix changed some 'index' queries to 'range' queries in the test suite
      sql/set_var.cc:
        Indentation fixes
      sql/sp_head.cc:
        Set state to INITIALIZED to make SP work with new arena code
      sql/sql_base.cc:
        After merge fixes
      sql/sql_class.cc:
        More debugging
        Use clear_alloc_root() instead of init_alloc_root() as the former is faster
      sql/sql_class.h:
        New method 'only_prepare()'
      sql/sql_lex.cc:
        After merge fixes
      sql/sql_lex.h:
        After merge fixes
      sql/sql_parse.cc:
        Fix for timezone tables. (The old way to add timezone tables to global list in 'create_total_list' doesn't work anymore)
        Give NOTE instead of WARNING if table/function doesn't exists when using DROP IF EXISTS
      sql/sql_prepare.cc:
        After merge fixes
      sql/sql_select.cc:
        Don't create 'dummy' WHERE clause for trivial WHERE clauses where we can remove the WHERE clause.
        This fix removed of a lot of 'Using where' notes in the test suite
      sql/sql_table.cc:
        Give NOTE instead of WARNING if table/function doesn't exists when using DROP IF EXISTS
      sql/sql_union.cc:
        After merge fix
      sql/sql_view.cc:
        After merge fix
      sql/table.cc:
        After merge fix
      sql/tztime.cc:
        Update timezone table handling to use new table lists structure
      sql/tztime.h:
        Update timezone table handling to use new table lists structure
      sql/unireg.cc:
        Use 0x before pointers
      33efc967
  32. 08 Sep, 2004 1 commit
    • unknown's avatar
      Fixed BUG#5000: SPs can be created with no default database. · c92b5349
      unknown authored
        Easy to prevent crash, but the question was how to treat this case?
        We ended up implementing the "global" SPs (i.e. with no associated
        db), which were planned but left unresolved when SPs moved into dbs.
        So now things like "call .p()" work too.
      
      
      mysql-test/r/sp-error.result:
        New test case for BUG#5000, and "global" SPs in general.
      mysql-test/t/sp-error.test:
        New test case for BUG#5000, and "global" SPs in general.
      sql/sp.cc:
        Prevent crash when the new db is null.
      sql/sp_head.cc:
        Don't set the db part of the name to thd->db, we have already set it correctly
        in the provided name struct.
        Also, don't attempt to change "no-db" when executing an SP.
      sql/sql_yacc.yy:
        Added support for the "global SP" syntax, e.g ".p()".
      c92b5349
  33. 26 Aug, 2004 1 commit
    • unknown's avatar
      Major rehacking and cleanup of sp_pcontext. · 071651ef
      unknown authored
      This finishes (almost) WL#2002: Implement stored procedure GOTO.
      Only the syntax issue for free labels remains ("label L;" vs "L:").
      
      
      include/mysqld_error.h:
        New error code for GOTO in SP handler.
      mysql-test/r/sp-error.result:
        New error test cases for GOTO.
      mysql-test/r/sp.result:
        New test cases for GOTO.
        Also removed some things that made it impossible to run the test in
        an external (debugged) mysqld.
      mysql-test/t/sp-error.test:
        New error test cases for GOTO.
      mysql-test/t/sp.test:
        New test cases for GOTO.
        Also removed some things that made it impossible to run the test in
        an external (debugged) mysqld.
      sql/share/czech/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/danish/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/dutch/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/english/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/estonian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/french/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/german/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/greek/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/hungarian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/italian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/japanese/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/korean/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/norwegian-ny/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/norwegian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/polish/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/portuguese/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/romanian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/russian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/serbian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/slovak/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/spanish/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/swedish/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/share/ukrainian/errmsg.txt:
        New error message for GOTO in SP handler.
      sql/sp_head.cc:
        Code cleanup (renaming of pcontext methods), support goto, and fixed bug
        in jump shortcutting in the optimizer (detect infinite loops).
      sql/sp_head.h:
        Code cleanup (renaming of pcontext methods), support goto, and fixed bug
        in jump shortcutting in the optimizer (detect infinite loops).
      sql/sp_pcontext.cc:
        Major rehack and cleanup:
        - We now push and pop a chain of contexts during parsing (instead of having
          a single one).
        - Makes error detection for GOTO easier and enables some optmizations and
          debugger support.
        - Makes it a little trickier to keep track on variable and cursor indexes instead.
        - Renamed things to get a more consistent naming scheme too.
      sql/sp_pcontext.h:
        Major rehack and cleanup:
        - We now push and pop a chain of contexts during parsing (instead of having
          a single one).
        - Makes error detection for GOTO easier and enables some optmizations and
          debugger support.
        - Makes it a little trickier to keep track on variable and cursor indexes instead.
        - Renamed things to get a more consistent naming scheme too.
      sql/sql_yacc.yy:
        Changes to reflect the rework and renamings in sp_pcontext, and fixed
        some GOTO error checking.
      071651ef
  34. 24 Aug, 2004 1 commit
    • unknown's avatar
      Fixed BUG#3157: Crash if stored procedure contains IF EXISTS, · ac06195c
      unknown authored
      and BUG#336: Subselects with tables does not work as values for
      local SP variables (which was closed before with a temp. fix, but not
      actually fixed).
      
      
      mysql-test/r/sp-error.result:
        Moved test case for BUG#336 to sp.test, as it's not generating an error any longer.
      mysql-test/r/sp.result:
        Move test case for BUG#336 from sp-error.test and added new test case
        for BUG#3157.
      mysql-test/t/sp-error.test:
        Moved test case for BUG#336 to sp.test, as it's not generating an error any longer.
      mysql-test/t/sp.test:
        Move test case for BUG#336 from sp-error.test and added new test case
        for BUG#3157.
      sql/sp_head.cc:
        Open and close tables in set, jump-if[-not] and freturn instructions if
        the value expression is a subselect.
      sql/sp_head.h:
        Store tables in set, jump-if[-not] and freturn instructions if
        the value expression is a subselect.
      sql/sql_yacc.yy:
        Store tables in set, jump-if[-not] and freturn instructions if
        the value expression is a subselect.
      ac06195c
  35. 17 Aug, 2004 1 commit
    • unknown's avatar
      WL#2002: Implement stored procedure GOTO. · 9b5a6f72
      unknown authored
      Mostly done, it works, but the temporary LABEL syntax still to be fixed.
      
      
      mysql-test/r/sp-error.result:
        New test case for WL#2002 (GOTO).
      mysql-test/r/sp.result:
        New test case for WL#2002 (GOTO).
        (Also corrected another test)
      mysql-test/t/sp-error.test:
        New test case for WL#2002 (GOTO).
      mysql-test/t/sp.test:
        New test case for WL#2002 (GOTO).
        (Also corrected another test)
      sql/lex.h:
        New symbol GOTO.
        Also a temporary symbol LABEL, which hopefully will go away soon.
      sql/sp_head.cc:
        Fixed backpatching to cope with free GOTO labels an hpop and cpop instructions.
        Also optimized away pointless jump instructions.
      sql/sp_head.h:
        Fixed backpatching to cope with free GOTO labels an hpop and cpop instructions.
        We now sometimes generate hpop/cpop 0 instructions but the optimizer removes them.
      sql/sp_pcontext.cc:
        Added free GOTO labels, and support for coping with jumps out of blocks
        with handlers or cursors.
      sql/sp_pcontext.h:
        Added free GOTO labels, and support for coping with jumps out of blocks
        with handlers or cursors.
      sql/sql_yacc.yy:
        Added GOTO and LABEL, and adjusted backpatching accordingly. Also fixed LEAVE
        out of blocks. The LABEL syntax will go away soon, hopefully.
      9b5a6f72
  36. 29 Jul, 2004 1 commit
    • unknown's avatar
      Fixed BUG#434: Stored procedure which drops itself causes crash. · 4467bcf2
      unknown authored
      Simply disallow it, just as we disallow creation of routines from within
      other SPs.
      
      
      include/mysqld_error.h:
        New error code for when attempting to drop a stored routine from within
        another stored routine.
      mysql-test/r/sp-error.result:
        New test case for BUG#4344.
      mysql-test/t/sp-error.test:
        New test case for BUG#4344.
      sql/share/czech/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/danish/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/dutch/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/english/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/estonian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/french/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/german/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/greek/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/hungarian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/italian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/japanese/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/korean/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/norwegian-ny/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/norwegian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/polish/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/portuguese/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/romanian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/russian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/serbian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/slovak/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/spanish/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/swedish/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/share/ukrainian/errmsg.txt:
        New error message for when attempting to drop a stored routine from within
        another stored routine.
      sql/sql_yacc.yy:
        Don't allow drop function/procedure from within another function/procedure.
      4467bcf2
  37. 21 Jul, 2004 1 commit
    • unknown's avatar
      after merge fixes · 1d29e6b0
      unknown authored
      sql/opt_range.h:
        compatibility fix
      sql/sql_lex.cc:
        cleanup
      1d29e6b0