Commit graph

328 commits

Author SHA1 Message Date
unknown
14b1f91ba4 Enable support of access to tables from triggers. Thus fix bug #8406 "Triggers
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.
2005-07-09 21:51:59 +04:00
unknown
afdc702665 Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/home/pem/work/mysql-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2005-07-07 09:13:49 +02:00
unknown
23cc601089 Fixed BUG#7088: Stored procedures: labels won't work if character set is utf8.
We used 'IDENT' for labels as a temporary fix for the  parser conflicts
  introduced if the proper rule 'ident' was used. Now a specially tailored
  'label_ident' rule is used for labels instead.


mysql-test/r/sp.result:
  New test cases for BUG#7088.
mysql-test/t/sp.test:
  New test cases for BUG#7088.
sql/sql_yacc.yy:
  Make labels in stored procedures work with other character sets than latin1.
  Using a separate 'label_ident' rule (instead of 'ident') and splitting
  the 'keyword' rule into two got rid of the temporary fix of using 'IDENT' for
  labels (which didn't heed character sets).
2005-07-06 16:37:57 +02:00
unknown
99cee82126 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/dlenev/src/mysql-5.0-bg11394


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
mysql-test/r/sp-error.result:
  Manual merge.
mysql-test/t/sp-error.test:
  Manual merge.
sql/share/errmsg.txt:
  Manual merge.
2005-07-06 10:21:27 +04:00
unknown
1ff4a0ebf1 Disabled the GOTO feature. (It's non-standard and undocumented.)
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).
2005-07-01 15:25:51 +02:00
unknown
0f64a49506 "Fix" for bug #11394 "Recursion in SP crash server" and bug #11600
"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.
2005-07-01 13:01:46 +04:00
unknown
a95bb38a7f Fixed BUG#11529: crash server after use stored procedure
Make sure to cleanup the items for a cursor query after each open, otherwise
it's done too late, after the run-time mem_root is freed.


mysql-test/r/sp.result:
  New test case for BUG#11529.
mysql-test/t/sp.test:
  New test case for BUG#11529.
sql/sp_head.cc:
  Add a back pointer from a sp_cursor to its cpush instruction, and use it to set
  the arena and cleanup the items for the cursor's query when opening it.
sql/sp_rcontext.cc:
  Store pointer in sp_cursor to its cpush instruction.
sql/sp_rcontext.h:
  Store pointer in sp_cursor to its cpush instruction.
2005-06-30 18:07:06 +02:00
unknown
ef36e81b2a fixed items cleunup for SP (BUG#10136)
mysql-test/r/sp.result:
  test commented until bug#11394 fix
  test for bug#10136
mysql-test/t/sp.test:
  test commented until bug#11394 fix
  bug10136
sql/sp_head.cc:
  fixed items cleunup for SP
2005-06-22 00:17:08 +03:00
unknown
4b0264dffd Merge mysql.com:/usr/local/bk/mysql-5.0
into mysql.com:/home/pem/work/mysql-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_rcontext.cc:
  Auto merged
2005-06-10 16:56:34 +02:00
unknown
03949f8ce8 Post review and additional fix for BUG#10968: Stored procedures: crash if long loop.
Fixed valgrind complaints. This fixes the memory leak problems for
  procedured, and partially for functions. There's still a leak involving
  results from functions that turned out to be too involved, so it will be
  fixed separately.


mysql-test/r/sp.result:
  Fixed some minor mistake (spotted while debugging).
mysql-test/t/sp.test:
  Fixed some minor mistake (spotted while debugging).
sql/item_func.cc:
  Moved Item_func_sp::cleanup() from item_func.h to ease debugging,
  and made a debug output come out right.
sql/item_func.h:
  Moved Item_func_sp::cleanup() to item_func.cc to ease debugging.
sql/sp_head.cc:
  Fixed valgrind problems with the previous memory leak fix (unit cleanup and
  putting result field in a differen mem_root), and removed prealloc flag from
  init_alloc_root() calls.
sql/sp_rcontext.cc:
  New mem_root pointer used for return fields from functions.
sql/sp_rcontext.h:
  New mem_root pointer used for return fields from functions.
2005-06-10 16:14:01 +02:00
unknown
0bc3c6221c Enabling back part of sp.test which no longer fails in --ps-protocol mode
(Bug which caused its failure before was fixed in the beginning of March
 by the ChangeSet that introduced improved SP-locking).
2005-06-07 22:22:27 +04:00
unknown
3b808af0fd sp.test, sp.result:
Added a test case for bug #6866.
sql_select.cc:
  Fixed bug #6866.
  Bug was due to the fact that on_expr was not backed up
  for the second execution of the stored procedure.


sql/sql_select.cc:
  Fixed bug #6866.
  Bug was due to the fact that on_expr was not backed up
  for the second execution of the stored procedure.
mysql-test/r/sp.result:
  Added a test case for bug #6866.
mysql-test/t/sp.test:
  Added a test case for bug #6866.
2005-06-06 06:05:11 -07:00
unknown
77bd9d36e6 Fixed BUG#10961: Stored procedures: crash if select * from dual
Have to catch errors from SELECT when opening a cursor.


mysql-test/r/sp.result:
  New test case for BUG#10961.
mysql-test/t/sp.test:
  New test case for BUG#10961.
sql/protocol.h:
  Init data in Protocol_cursor constructor, for error cases.
sql/sp_head.cc:
  Catch "hidden" errors during SELECT when opening a cursor.
2005-06-01 12:18:41 +02:00
unknown
d5f4c14b6e Fixed BUG#9559: Functions: Numeric Operations using -ve value gives incorrect
results.
  Actually a problem when converting decimal to int for user variables.


mysql-test/r/sp.result:
  New test case for BUG#9559.
mysql-test/t/sp.test:
  New test case for BUG#9559.
sql/item_func.cc:
  Don't set the unsigned flag when converting decimal user var to int.
2005-05-27 14:48:33 +02:00
unknown
d214d50160 merge
mysql-test/t/sp.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
2005-05-09 02:06:18 +03:00
unknown
a6b1546676 Item::fix_field need correct pointer on item reference to chnge it if itis need, so support of correct item address added to SP commands (BUG#5963)
some optimisation of IF/NOT IF ptomised to Pem


mysql-test/r/sp.result:
  test for bug#5963
mysql-test/t/sp.test:
  test for bug#5963
sql/item.cc:
  new method which return reference on Item for SP variables support
sql/item.h:
  comment fixed
  method added
sql/sp_head.cc:
  preparation of item made separate function
  we do not need new constant Item to check IF/IF NOT
  support of passing correct address of item for fix_fields method
sql/sp_rcontext.cc:
  support of Item address passing to fix_fields
sql/sp_rcontext.h:
  support of correct address passing to fix_fields
sql/sql_class.cc:
  support of correct item address passing to fix_field
2005-05-09 01:59:10 +03:00
unknown
81a895f72c Corrections to test "sp", stored procedure "fib" (see entry 9937 in the bug DB).
mysql-test/r/sp.result:
  Correct the result file for the changed test.
mysql-test/t/sp.test:
  1) Correct the "fib" stored procedure and its initial data to be mathematical correct: fib(0) = 0
  2) Do a small run of "fib" first, that is not likely to hit a memory limit (see entry 9937 in the bug DB).
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2005-05-07 18:06:02 +02:00
unknown
1e6193caa3 Fix for bug #9841 "Unexpected read lock when trying to update a view in
a stored procedure" (version 2).

To handle updates and inserts into view in SP properly we should set
lock types for tables of the view's main select when we are opening
view for prelocking purproses.


mysql-test/r/sp.result:
  Added test case for bug #9841 "Unexpected read lock when trying to update
  a view in a stored procedure"
mysql-test/t/sp.test:
  Added test case for bug #9841 "Unexpected read lock when trying to update
  a view in a stored procedure"
sql/sql_view.cc:
  mysql_make_view():
    To handle updates and inserts into view in SP properly we should set
    lock types for tables of the view's main select when we are opening
    view for prelocking purproses.
    Also it is more correct to use LEX::select_lex::get_table_list() 
    instead of 'view_tables' variable for obtaining list of those
    tables.
2005-05-05 19:49:15 +04:00
unknown
b318122ce6 Add regression test for calling SOUNDEX() within stored procedure.
The bug appears to have already been fixed. (Bug #7293)


mysql-test/r/sp.result:
  Add results for new test
mysql-test/t/sp.test:
  Add regression test for bug 7293
2005-04-28 14:46:54 -07:00
unknown
83a8ee38e0 Fixed BUG#9004: Inconsistent behaviour of SP re. warnings
mysql-test/r/sp.result:
  New test case for BUG#9004.
  Also updated some other results, since formerly "invisible" (but correct)
  warnings now are visible.
mysql-test/t/sp.test:
  New test case for BUG#9004.
sql/sql_error.cc:
  Don't reset warnings while executing a stored routine.
sql/sql_parse.cc:
  Don't reset warnings while executing a stored routine.
2005-04-22 12:53:48 +02:00
unknown
597f3dfa25 Merge
sql/mysql_priv.h:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2005-04-21 13:34:39 +01:00
unknown
62556b0023 Bug#8861 - If Return is a YEAR data type, value is not shown in year format
Bug partially fixed by 9775/9102 work on SP function return.


mysql-test/r/sp.result:
  Bug#8861
    Test for bug
mysql-test/t/sp.test:
  Bug#8861
    Test for bug
sql/protocol.cc:
  Bug#8861
    Requires change in assertion
2005-04-21 13:22:47 +01:00
unknown
de8a3b3121 Bug#9775 - Stored procedures: crash if create function that returns enum or set
Fix bug and implement return type casting.


mysql-test/r/sp.result:
  Bug#9775
    Test for bug + feature
  Fix previous tests
mysql-test/t/sp.test:
  Bug#9775
    Test for bug + feature
  Fix previous tests
sql/item_func.cc:
  Bug#9775
    new method Item_func_sp::execute(Field **)
    some optimizations.
sql/item_func.h:
  Bug#9775
    results for Item_func_sp pass through a Field of the return type.
    new method Item_func_sp::execute(Field **)
sql/sp_head.cc:
  Bug#9775
    missing initialiation for type_lengths in sp_head::create_typelib()
2005-04-20 18:08:42 +01:00
unknown
5642bbd35e Fixed BUG#6898: Stored procedure crash if GOTO statements exist
Bug in the optimizer caused an infinite loop for weird code.


mysql-test/r/sp.result:
  New test case for BUG#6898.
mysql-test/t/sp.test:
  New test case for BUG#6898.
sql/sp_head.cc:
  Detect self referencing jumps in the optimizer.
2005-04-20 15:37:07 +02:00
unknown
f054047f02 Bug#7648 - Stored procedure crash when invoking a function that returns a bit
bugfix 9102 corrected the crashing, this corrects the result.


mysql-test/r/sp.result:
  Bug#7648
    New test for bug
mysql-test/t/sp.test:
  Bug#7648
    New test for bug
sql/item_func.h:
  Bug#7648
    Cannot cheat in Item_func_sp::val_int()
2005-04-19 10:51:11 +01:00
unknown
9bf92ed6fe Bug#9102 - Stored proccedures: function which returns blob causes crash
Initialization of fields for sp return type was not complete.


mysql-test/r/sp.result:
  Bug#9102
    Test for bug
mysql-test/t/sp.test:
  Bug#9102
    Test for bug
sql/mysql_priv.h:
  Bug#9102
    new function: sp_prepare_create_field()
sql/sp_head.cc:
  Strip spaces and do charset conversion for sp function typelibs
sql/sql_table.cc:
  Bug#9102
    new function - sp_prepare_create_field()
    prepares create_field in similar way to mysql_prepare_table()
sql/sql_yacc.yy:
  Bug#9102
2005-04-19 09:09:25 +01:00
unknown
53c095f083 Fixed BUG#9902: Crash with simple stored function using user defined variables
... actually, it was a query cache problem. (It shouldn't cache such queries)


mysql-test/r/sp.result:
  Added testcase for BUG#9902.
mysql-test/t/sp.test:
  Added testcase for BUG#9902.
sql/sql_yacc.yy:
  Don't cache queries which are calling stored functions.
2005-04-15 11:06:25 +02:00
unknown
e0fdbeba7e Fixed BUG#9598: stored procedure call within stored procedure
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.
2005-04-14 14:52:35 +02:00
unknown
e2089cdd23 Fixed BUG#9674: Stored Procs: Using declared vars in algebric operation
causes system crash.


mysql-test/r/sp.result:
  Added test case for BUG#9674.
mysql-test/t/sp.test:
  Added test case for BUG#9674.
sql/item.cc:
  Returning a pointer to a local variable is not a good idea.
  Better to use parameter which is there for exactly this purpose.
2005-04-13 17:43:53 +02:00
unknown
d6c2a1e3d8 Fixed BUG#9856: Stored procedures: crash if handler for sqlexception, not found.
mysql-test/r/sp.result:
  Added test case for BUG#6129.
mysql-test/t/sp.test:
  Added test case for BUG#6129.
sql/sp_pcontext.h:
  Only need one handler counter.
sql/sql_yacc.yy:
  Count handlers correctly.
2005-04-13 16:57:49 +02:00
unknown
a3aed4d8dc Added test case for BUG#6129: Stored procedure won't display @@sql_mode value.
mysql-test/r/sp.result:
  Added testcase for BUG#6129: Check that sql_mode is really set in mysql.proc.
mysql-test/t/sp.test:
  Added testcase for BUG#6129: Check that sql_mode is really set in mysql.proc.
2005-04-13 16:09:28 +02:00
unknown
db40f4a57f Fixed BUG#7185: Stored procedure crash if identifier is AVG
mysql-test/r/sp.result:
  Added test case for BUG#7185.
mysql-test/t/sp.test:
  Added test case for BUG#7185.
sql/sql_yacc.yy:
  Allow non-reserved words as stored procedure names.
2005-04-12 15:43:24 +02:00
unknown
4215d120a3 Fixed BUG#6900: Stored procedure inner handler ignored
and BUG#9074: STORED PROC: The scope of every handler declared is not properly applied


mysql-test/r/sp.result:
  New test cases for BUG#6900 and BUG#9074 (duplicates).
mysql-test/t/sp.test:
  New test cases for BUG#6900 and BUG#9074 (duplicates).
sql/sp_rcontext.cc:
  Corrected logic for finding condition handlers - pick the innermost one.
2005-04-08 17:31:37 +02:00
unknown
b2ff4e9ce5 Moved test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
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.
2005-04-07 11:57:47 +04:00
unknown
188b8af60c Fix for bug #9566 "explicit LOCK TABLE and store procedures result in
illegal state".

We should not assume that mysql.proc table does not exist if we are
unable to open it under LOCK TABLES or in prelocked mode (and
remember this fact by setting mysql_proc_table_exists to zero).


mysql-test/r/sp.result:
  Added test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
  state"
mysql-test/t/sp.test:
  Added test for bug #9566 "explicit LOCK TABLE and store procedures result in illegal
  state"
sql/sp.cc:
  db_find_routine_aux():
    We should not assume that mysql.proc table does not exist if we are
    unable to open it under LOCK TABLES or in prelocked mode since this
    condition may be transient.
2005-04-07 01:40:29 +04:00
unknown
5cdec5d6ba Merge
mysql-test/r/create.result:
  Auto merged
mysql-test/r/ctype_latin1_de.result:
  Auto merged
mysql-test/r/grant.result:
  Auto merged
mysql-test/r/grant2.result:
  Auto merged
mysql-test/r/limit.result:
  Auto merged
mysql-test/r/order_by.result:
  Auto merged
mysql-test/r/rpl000001.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/r/strict.result:
  Auto merged
mysql-test/r/type_blob.result:
  Auto merged
mysql-test/r/type_ranges.result:
  Auto merged
mysql-test/r/warnings.result:
  Auto merged
mysql-test/t/ctype_latin1_de.test:
  Auto merged
mysql-test/t/limit.test:
  Auto merged
mysql-test/t/order_by.test:
  Auto merged
mysql-test/t/show_check.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/type_blob.test:
  Auto merged
mysql-test/t/type_ranges.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
mysql-test/t/strict.test:
  SCCS merged
2005-04-05 19:45:34 -07:00
unknown
66b71ca378 Fixed BUG#6600: Stored procedure crash after repeated calls with check table.
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.)
2005-03-30 17:43:52 +02:00
unknown
6c621bbd7f Fixed BUG#6600: Stored procedure crash after repeated calls with check table
mysql-test/r/sp.result:
  New test case for BUG#6600.
mysql-test/t/sp.test:
  New test case for BUG#6600.
sql/sp_head.cc:
  Added yet another multiple result set statement to the list.
sql/sql_parse.cc:
  Have to invalidate SP caches in CHECK TABLE, or it will produce very
  strange results when called in SPs.
2005-03-18 16:52:41 +01:00
unknown
7e79e70515 Did some SP test style changes and added explanatory comments,
and removed a have_innodb.inc inclusion which was left by mistake
in an earlier change.


mysql-test/r/sp_trans.result:
  Changed procedure name and delimiter setting to follow the style of the other SP test files.
mysql-test/t/sp-error.test:
  Added comment with hint for bug test case style.
mysql-test/t/sp-threads.test:
  Added comments, with hint for bug test case style.
mysql-test/t/sp.test:
  Removed have_innodb.inc inclusion.
  Added comments about different SP test files, table usage and
  hint for bug test case style.
mysql-test/t/sp_trans.test:
  Changed procedure name and delimiter setting to follow the style of the other SP test files.
2005-03-18 14:33:46 +01:00
unknown
37130fc15d Merge mysql.com:/home/jimw/my/mysql-5.0-build
into mysql.com:/home/jimw/my/mysql-5.0-clean


mysql-test/t/sp.test:
  Auto merged
2005-03-17 13:38:07 -08:00
unknown
cc9e66f565 sp.test, sp.result:
transactional test removed
sp_trans.test, sp_trans.result:
  new file


mysql-test/r/sp.result:
  transactional test removed
mysql-test/t/sp.test:
  transactional test removed
2005-03-17 22:15:23 +01:00
unknown
25099e0902 sp.test:
Fix for a bug with test failing with Classic.


mysql-test/t/sp.test:
  Fix for a bug with test failing with Classic.
2005-03-17 19:26:36 +02:00
unknown
dd2306839a Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into pcgem.rdg.cyberkinetica.com:/var/db/bk/work-acurtis/bug3788.4


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_parse.cc:
  Auto merged
2005-03-09 01:15:42 +00:00
unknown
ce16c895c2 Merge in fix Bug#3788
mysql-test/r/information_schema.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_func.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/r/sp.result:
  Merge
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2005-03-08 22:32:09 +00:00
unknown
1250899c0d Fixing post-merge errors 2005-03-09 00:09:18 +02:00
unknown
12c6eb3b08 post merge fixes
sql/sql_parse.cc:
  Auto merged
2005-03-08 22:59:21 +02:00
unknown
39c32324d6 making a better test case for bug #8850
mysql-test/r/sp.result:
  fixing results for new test
mysql-test/t/sp.test:
  making a new test with autocommit set to 0 and 1.
  Second CALL is in autocommit mode to prove that the relevant bug 
  (bug #8550) is fixed.
2005-03-08 22:44:35 +02:00
unknown
25f8623fff Fixed BUG#8937: Stored Procedure: AVG() works as SUM() in SELECT ... INTO statement
mysql-test/r/sp.result:
  New test case for BUG#8937.
mysql-test/t/sp.test:
  New test case for BUG#8937.
sql/item_sum.h:
  Added val_int() method for Item_sum_avg for forced int types (in SPs for instance),
  otherwise Item_sum_sum::val_int() is used.
2005-03-07 18:09:53 +01:00
unknown
804a2a8cdf Reorganized sp.test (all bugs at the end now).
mysql-test/r/sp.result:
  Reorganized tests (all bugs at the end now) and made some tests adopt to the file's style.
mysql-test/t/sp.test:
  Reorganized tests (all bugs at the end now) and made some tests adopt to the file's style.
2005-03-07 17:16:37 +01:00
unknown
2fc5d274e8 Fixing bug #8850 in such a way that when TRUNCATE is called within
stored  procedure,  it  is converted  to DELETE.


mysql-test/r/sp.result:
  A result for  the  test  case  for bug #8850
mysql-test/t/sp.test:
  A test  case  for the bug #8850
sql/sql_delete.cc:
  A fix for bug  #8850, plus adding a missing call  to mysql_init_select(),
  which  caused mem_root corruption.
sql/sql_parse.cc:
  A fix for the bug #8850
BitKeeper/etc/ignore:
  Added acinclude.m4 to the ignore list
2005-03-05 21:44:15 +02:00
unknown
1220069c53 Bug#3788
Crashes with stored procedure return non-string values
  Also fixes Bug#2773


mysql-test/r/information_schema.result:
  Bug#3788
    Fix results for bugfix
mysql-test/r/sp.result:
  Bug#3788
    Tests for Bug
    Fix results for bugfix
mysql-test/t/sp.test:
  Bug#3788
    New tests for bug
sql/item.cc:
  Fix unrelated crash in view test with --ps-protocol.
sql/item_func.cc:
  Bug#3788
    Alter how SP function result types are handled.
sql/item_func.h:
  Bug#3788
    Alter how SP function result types are handled.
sql/mysql_priv.h:
  Bug#3788
    Prototypes for new global functions
sql/sp.cc:
  Bug#3788
    Alter how function return type is reported
sql/sp_head.cc:
  Bug#3788
    Change how function return types are stored for SPs
sql/sp_head.h:
  Bug#3788
    Change how function return types are stored for SPs
sql/sql_parse.cc:
  Bug#3788
    Split out field construction into its own function
sql/sql_table.cc:
  Bug#3788
    Split out field preparation code into its own function
sql/sql_yacc.yy:
  Bug#3788
    Change how function return types are stored for SPs
sql/unireg.cc:
  Bug#3788
    Add assertion check
2005-03-04 21:14:35 +00:00
unknown
b1095fb0cd Manual merge SP-locking improvements patch with current tree.
mysql-test/r/mysqldump.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/mysqldump.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_rcontext.cc:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/table.h:
  Auto merged
sql/sp_head.cc:
  Manual merge.
sql/sql_class.cc:
  Manual merge.
sql/sql_parse.cc:
  Manual merge.
sql/sql_yacc.yy:
  Manual merge.
2005-03-04 17:46:45 +03:00
unknown
ac9f68b9fa Better approach for prelocking of tables for stored routines execution
and some SP-related cleanups.

- We don't have separate stage for calculation of list of tables
  to be prelocked and doing implicit LOCK/UNLOCK any more.
  Instead we calculate this list at open_tables() and do implicit
  LOCK in lock_tables() (and UNLOCK in close_thread_tables()).
  Also now we support cases when same table (with same alias) is
  used several times in the same query in SP.

- Cleaned up execution of SP. Moved all common code which handles
  LEX and does preparations before statement execution or complex
  expression evaluation to auxilary sp_lex_keeper class. Now 
  all statements in SP (and corresponding instructions) that
  evaluate expression which can contain subquery have their
  own LEX.


mysql-test/r/lock.result:
  Replaced wrong error code with the correct one after fixing bug in
  SP-locking.
mysql-test/r/mysqldump.result:
  Added dropping of view which is used in test to its beginning.
mysql-test/r/sp.result:
  Added tests for improved SP-locking.
  Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
  (Until Monty will allow to open mysql.proc under LOCK TABLES without
  mentioning it in lock list).
  Replaced wrong results of test for bug #5240 with correct results after
  fixing bug in handling of cursors.
mysql-test/t/lock.test:
  Replaced wrong error code with the correct one after fixing bug in
  SP-locking.
mysql-test/t/mysqldump.test:
  Added dropping of view which is used in test to its beginning.
mysql-test/t/sp.test:
  Added tests for improved SP-locking.
  Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
  (Until Monty will allow to open mysql.proc under LOCK TABLES without
  mentioning it in lock list).
  Removed test for bug #1654 since we already test exactly this function
  in one of SP-locking tests.
  Removed comment about cursor's wrong behavior in test for bug #5240
  after fixing bug which was its cause.
sql/item_func.cc:
  Removed comment which is no longer true.
sql/mysql_priv.h:
  Changed open_tables() signature.
  Now its 2nd parameter is in/out since it can add elements to table list.
sql/sp.cc:
  sp_find_procedure():
   Added one more parameter which enforces cache only lookup.
  
  sp_merge_hash():
   Now uses its return value to indicate that first of two hashes changed
   as result of merge.
  
  sp_cache_routines():
   This function caches all stored routines used in query now.
sql/sp.h:
  - sp_find_procedure() now has one more parameter which enforces cache only
    lookup.
  - sp_merge_hash() now uses its return value to indicate that first of two
    hashes changed as result of merge.
  - sp_cache_routines() caches all stored routines now. So it does not need
    third argument any more.
sql/sp_head.cc:
  sp_head::sp_head():
   Added initialization of new m_spfuns and m_spprocs members.
  
  sp_head::execute():
   Let us save/restore part of thread context which can be damaged by
   execution of instructions.
  sp_head::execute_function()/execute_procedure():
   Now it is responsibility of caller to close tables used in
   subqueries which are passed as routine parameters.
  
  sp_head::restore_lex():
   Let us accumulate information about routines used by this one
   in new m_spfuns, m_spprocs hashes.
  
  sp_lex_keeper::reset_lex_and_exec_core()
   Main method of new auxilary sp_lex_keeper class to which instructions 
   delegate responsibility for handling LEX and preparations before
   executing statement or calculating complex expression.
  
  Since all instructions which calculate complex expression or execute
  command now use sp_lex_keeper they have to implement
  sp_instr::exec_core() method. Most of instruction specific logic
  has moved from sp_instr::execute() to this new method.
  
  Removed sp_instr_set_user_var class which is no longer used, because
  nowdays we allow execution of statements in stored functions and
  triggers.
  
  sp_merge_table_list() became sp_head::merge_table_list() method. It
  also treats sp_head::m_sptabs as multi-set of tables now.
  
  sp_hash_to_table_list() became sp_head::add_used_tables_to_table_list().
  It takes into account that sp_head::m_sptabs is multi-set and allocates
  object into persistent arena of PS.
  
  Removed sp_merge_table_hash(), sp_open_and_lock_tables(),
  sp_unlock_tables(), sp_merge_routine_tables() methods since they are not
  used by new prelocking mechanism.
  
  Added sp_add_sp_tables_to_table_list() which serves for adding tables needed
  by routines used in query to the query table list for prelocking.
sql/sp_head.h:
  class sp_head:
  - Added m_spfuns, m_spprocs members for storing names of routines used
    by this routine.
  - Added add_used_tables_to_table_list() method which allows to add
    tables needed by this routine to query's table list.
  - Converted sp_merge_table_list() to sp_head::merge_table_list() method.
  - Changed semantics of THD::m_sptabs. Now it is multi-set which contains
    only tables which are used by this routine and not routines that are
    called from this one.
  
  Removed sp_merge_routine_tables(), sp_merge_table_hash(),
  sp_open_and_lock_tables(), sp_unlock_tables() calls since they are not
  used for our prelocking list calculation.
  
  Added auxilary sp_lex_keeper class to which instructions delegate
  responsibility for handling LEX and preparations before executing
  statement or calculating complex expression. This class uses
  new sp_instr::exec_core() method which is responsible for executing
  instruction's core function after all preparations were made.
  
  All instructions which hold and calculate complex expression now have
  their own LEX (by aggregating sp_lex_keeper instance). sp_instr_stmt
  now uses sp_lex_keeper too.
  
  Removed sp_instr_set_user_var class which is no longer used, because
  nowdays we allow execution of statements in stored functions and
  triggers.
sql/sp_rcontext.cc:
  Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
sql/sp_rcontext.h:
  Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
sql/sql_acl.cc:
  acl_init(), grant_init():
    Now we use simple_open_n_lock_tables() instead of explicit
    calls to open_tables() and mysql_lock_tables().
sql/sql_base.cc:
  Implemented support for execution of statements in "prelocked" mode.
  
  When we have statement which uses stored routines explicitly or
  implicitly (via views or triggers) we have to open and lock all tables
  for these routines at the same time as tables for the main statement.
  In fact we have to do implicit LOCK TABLES at the begining of such
  statement and implict UNLOCK TABLES at its end. We call such mode
  "prelocked".
  
  When open_tables() is called for the statement tables which are needed
  for execution of routines used by it are added to its tables list
  (this process also caches all routines used). Implicit use of routines
  is discovered when we open view or table with trigger and apropriate
  tables are added to the table list at this moment. Statement which has
  such extra tables in its list (well actually any that uses functions)
  is marked as requiring prelocked mode for its execution.
  
  When lock_tables() sees such statement it will issue implicit LOCK TABLES
  for this extended table list instead of doing usual locking, it will also
  set THD::prelocked_mode to indicate that we are in prelocked mode.
  
  When open_tables()/lock_tables() are called for statement of stored
  routine (substatement), they notice that we are running in prelocked mode
  and use one of prelocked tables from those that are not used by upper
  levels of execution.
  
  close_thread_tables() for substatement won't really close tables used
  but will mark them as free for reuse instead.
  
  Finally when close_thread_tables() is called for the main statement it
  really unlocks and closes all tables used.
  
  Everything will work even if one uses such statement under real LOCK
  TABLES (we are simply not doing implicit LOCK/UNLOCK in this case).
sql/sql_class.cc:
  Added initialization of THD::prelocked_mode member.
sql/sql_class.h:
  - Added prelocked_mode_type enum and THD::prelocked_mode member
    which are used for indication whenever "prelocked mode" is on 
    (i.e. that statement uses stored routines and is executed under
     implicit LOCK TABLES).
  - Removed THD::shortcut_make_view which is no longer needed.
    We use TABLE_LIST::prelocking_placeholder for the same purprose
    now.
sql/sql_handler.cc:
  Changed open_tables() invocation.
  Now its 2nd parameter is in/out since it can add elements to table list.
sql/sql_lex.cc:
  lex_start():
    Added initialization of LEX::query_tables_own_last.
    Unused LEX::sptabs member was removed.
  st_lex::unlink_first_table()/link_first_table_back():
    We should update LEX::query_tables_last properly if table list
    contains(ed) only one element.
sql/sql_lex.h:
  LEX:
  - Removed sptabs member since it is no longer used.
  - Added query_tables_own_last member, which if non-0 indicates that
    statement requires prelocking (implicit LOCK TABLES) for its execution
    and points to last own element in query table list. If it is zero
    then this query does not need prelocking.
  - Added requires_prelocking(), mark_as_requiring_prelocking(),
    first_not_own_table() inline methods to incapsulate and simplify
    usage of this new member.
sql/sql_parse.cc:
  dispatch_command():
    To properly leave prelocked mode when needed we should call
    close_thread_tables() even if there are no open tables.
  mysql_execute_command():
  - Removed part of function which were responsible for doing implicit
    LOCK TABLES before statement execution if statement used stored 
    routines (and doing UNLOCK TABLES at the end).
    Now we do all this in open_tables()/lock_tables()/close_thread_tables()
    instead.
  - It is also sensible to reset errors before execution of statement
    which uses routines.
  - SQLCOM_DO, SQLCOM_SET_OPTION, SQLCOM_CALL
    We should always try to open tables because even if statement has empty
    table list, it can call routines using tables, which should be preopened
    before statement execution.
  - SQLCOM_CALL
    We should not look up routine called in mysql.proc, since it should be
    already cached by this moment by open_tables() call.
  - SQLCOM_LOCK_TABLES
    it is better to use simple_open_n_lock_tables() since we want to avoid
    materialization of derived tables for this command.
sql/sql_prepare.cc:
  mysql_test_update():
    Changed open_tables() invocations. Now its 2nd parameter is in/out
    since it can add elements to table list.
  check_prepared_statement():
    Since now we cache all routines used by statement in open_tables() we 
    don't need to do it explicitly.
  mysql_stmt_prepare():
    Now we should call close_thread_tables() when THD::lex points to the
    LEX of statement which opened tables.
  reset_stmt_for_execute():
    Commented why we are resetting all tables in table list.
sql/sql_trigger.h:
  Table_triggers_list::process_triggers():
    We should surpress sending of ok packet when we are calling trigger's
    routine, since now we allow statements in them.
sql/sql_update.cc:
  Changed open_tables() invocations.
  Now its 2nd parameter is in/out since it can add elements to table list.
sql/sql_view.cc:
  mysql_make_view():
  - Removed handling of routines used in view. Instead we add tables which
    are needed for their execution to statement's table list in 
    open_tables().
  - Now we use TABLE_LIST::prelocking_placeholder instead of 
    THD::shortcut_make_view for indicating that view is opened
    only to discover which tables and routines it uses (this happens
    when we build extended table list for prelocking). Also now we try
    to avoid to modify main LEX in this case (except of its table list).
  - Corrected small error we added tables to the table list of the main
    LEX without updating its query_tables_last member properly.
sql/sql_yacc.yy:
  Now each expression which is used in SP statements and can contain
  subquery has its own LEX. This LEX is stored in corresponding sp_instr
  object and used along with Item tree for expression calculation.
  
  We don't need sp_instr_set_user_var() anymore since now we allow
  execution of statements in stored functions and triggers.
sql/table.h:
  Added TABLE_LIST::prelocking_placeholder member for distinguishing
  elements of table list which does not belong to the statement itself
  and added there only for prelocking (as they are to be used by routines
  called by this statement).
sql/tztime.cc:
  my_tz_init():
    Now we use more simplier simple_open_n_lock_tables() call instead of 
    open_tables()/lock_tables() pair.
2005-03-04 16:35:28 +03:00
unknown
2860a7723e Fixes for bug#8115 "Server Crash with prepared statement"
and bug#8849 "problem with insert statement with table alias's": 
make equality propagation work in stored procedures and prepared 
statements.
Equality propagation can change AND/OR structure of ON expressions,
so the fix is to provide each execution of PS/SP with it's own
copy of AND/OR tree. We have been doing that already for WHERE clauses,
now ON clauses are also copied.


mysql-test/r/ps.result:
  Bug#8115: test results fixed.
mysql-test/r/sp.result:
  Bug#8849: test results fixed.
mysql-test/t/ps.test:
  A test case for Bug#8115 "Server Crash with prepared statement".
mysql-test/t/sp.test:
  A test case for Bug#8849 "problem with insert statement with table 
  alias's".
sql/item_cmpfunc.cc:
  Comment a parse tree transformation.
sql/item_cmpfunc.h:
  Comment how Item_equal works with PS/SP.
sql/mysql_priv.h:
  Add declaration for init_stmt_after_parse.
sql/sp_head.cc:
  Call init_stmt_after_parse in restore_lex(), which is used to
  grab TABLE_LIST and SELECT_LEX list of a parsed substatement of
  stored procedure. This is a necessary post-init step which 
  must be done for any statement which can be executed many times.
sql/sql_prepare.cc:
  Implement init_stmt_after_parse() which prepares AND/OR
  structure of all ON expressions and WHERE clauses of a statement
  for copying.
sql/sql_select.cc:
  Implementation of equality propagation inspected with regard to 
  prepared statements and stored procedures. We now restore
  AND/OR structure of every ON expression in addition to AND/OR
  structure of WHERE clauses when reexecuting a PS/SP.
sql/table.h:
  Add declaration for TABLE::prep_on_expr.
2005-03-03 17:38:59 +03:00
unknown
5699934fe0 Fixed BUG#8762: Stored Procedures: Inconsistent behavior
of DROP PROCEDURE IF EXISTS statement.


mysql-test/r/sp.result:
  New test case for BUG#8757
mysql-test/t/sp.test:
  New test case for BUG#8757
sql/sp.cc:
  Don't zap lex->found_semicolon. (For compound statements)
2005-03-02 17:25:58 +01:00
unknown
3d8aed6d83 Fixed BUG#8757: Stored Procedures: Scope of Begin and End Statements do not work properly.
mysql-test/r/sp.result:
  New test case for BUG#8757.
mysql-test/t/sp.test:
  New test case for BUG#8757.
sql/sp_pcontext.cc:
  Return the correct scope offset to cursors during parsing.
2005-02-25 17:56:45 +01:00
unknown
948bb77d4e Fixed BUG#6857: current_time() in STORED PROCEDURES
Have to thd->set_time() before each substatement execution, to make
  current_time() et al return different times within the same procedure.


mysql-test/r/sp.result:
  New test case for BUG#6857: current_time() in STORED PROCEDURES.
  Note: The actual call is disable, to save time when running with slow debugging tools.
mysql-test/t/sp.test:
  New test case for BUG#6857: current_time() in STORED PROCEDURES.
  Note: The actual call is disable, to save time when running with slow debugging tools.
sql/sp_head.cc:
  Make current_time() et all work in stored procedures.
2005-02-25 13:19:44 +01:00
unknown
20a30c64f5 fixed typo in test 2005-02-24 02:59:36 +02:00
unknown
b6a28b3c78 Merge 51.0.168.192.in-addr.arpa:/Users/bell/mysql/bk/mysql-5.0
into 51.0.168.192.in-addr.arpa:/Users/bell/mysql/bk/work-qc_item_view-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_cache.cc:
  Auto merged
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2005-02-21 13:16:25 +02:00
unknown
dba0875304 Fixed...
BUG#6642: Stored procedure crash if expression with set function
  BUG#7013: Stored procedure crash if group by ... with rollup
  BUG#7743: 'Lost connection to MySQL server during query' on Stored Procedure
  BUG#7992: SELECT .. INTO variable .. within Stored Procedure crashes
            the server
  BUG#8116: calling simple stored procedure twice in a row results
            in server crash

Rolling back the item change list after each substatement in a procedure
fixed the failing assert().


mysql-test/r/sp.result:
  New test cases for BUG#6642, 7013, 7743, 7992 and 8116.
mysql-test/t/sp.test:
  New test cases for BUG#6642, 7013, 7743, 7992 and 8116.
sql/sp_head.cc:
  Roll back the item change list after each sub statement.
2005-02-18 17:39:32 +01:00
unknown
0f466d046c Fixed BUG#8540: Local variable overrides an alias.
mysql-test/r/sp.result:
  New test case for BUG#8540.
mysql-test/t/sp.test:
  New test case for BUG#8540.
sql/item.h:
  Use the existing name (if any) for a SP local variable (to get the correct
  field name in a select in the case of an alias).
2005-02-16 16:06:41 +01:00
unknown
b1f5ed9dd7 Temporary disabling part of test which fails in --ps-protocol mode. 2005-02-15 22:17:44 +03:00
unknown
2379a9d261 postreview changes
(used t3, moved after last bug, renamed)
2005-02-09 16:02:37 +02:00
unknown
1ff73ae729 Merge
sql/sp_head.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
mysql-test/r/sp.result:
  SCCS merged
mysql-test/t/sp.test:
  SCCS merged
2005-02-09 00:31:56 +02:00
unknown
3f24932124 WL#2130: Table locking for stored FUNCTIONs
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.
2005-02-08 20:52:50 +01:00
unknown
fdb6225390 fixed using in SP sentences which use Item tree temporary changes rollback (BUG#7992)
mysql-test/r/sp.result:
  rolling back temporary Item tree changes in SP
mysql-test/t/sp.test:
  rolling back temporary Item tree changes in SP
sql/sp_head.cc:
  if PS instruction made some temporary changes in Item tree we have to roll it back
2005-01-20 17:04:24 +02:00
unknown
2f19824d20 Enable warnings for 'no default' fields being set to default when they
are not specified in an insert. Most of these changes are actually to
clean up the test suite to either specify defaults to avoid warnings,
or add the warnings to the results. Related to bug #5986.


mysql-test/t/index_merge_ror.test:
  Set default on columns to avoid warnings
mysql-test/t/ctype_many.test:
  Add defaults to avoid warnings
mysql-test/t/ctype_latin1_de.test:
  Add defaults to avoid warnings
mysql-test/t/gis-rtree.test:
  Remove field that isn't used in test
mysql-test/t/limit.test:
  set default values
mysql-test/t/null.test:
  Specify default values
mysql-test/t/order_by.test:
  add default value
mysql-test/t/show_check.test:
  Add defaults
mysql-test/t/sp.test:
  Add default value
mysql-test/t/type_blob.test:
  Set default value
mysql-test/t/type_ranges.test:
  Set default values
mysql-test/r/create.result:
  Update results
mysql-test/r/ctype_latin1_de.result:
  Update results
mysql-test/r/ctype_many.result:
  Update results
mysql-test/r/gis-rtree.result:
  Update results
mysql-test/r/grant.result:
  Update results
mysql-test/r/grant2.result:
  Update results
mysql-test/r/help.result:
  Update results
mysql-test/r/limit.result:
  Update results
mysql-test/r/null.result:
  Update results
mysql-test/r/order_by.result:
  Update results
mysql-test/r/rpl000001.result:
  Update results
mysql-test/r/sp.result:
  Update results
mysql-test/r/strict.result:
  Update results
mysql-test/r/type_blob.result:
  Update results
mysql-test/r/type_ranges.result:
  Update results
mysql-test/r/warnings.result:
  Update results
sql/sql_insert.cc:
  Change check_that_all_fields_are_given_values() to issue warnings for all
  fields, and not only run when thd->abort_on_warning is set and error on
  just the first field.
2005-01-14 17:09:35 -08:00
unknown
bd365f7622 After merge fixes
Add support for warnings for prepare of prepared statements
Fixed test to work with --ps-protocol
Fixed some test results


libmysql/libmysql.c:
  Add support for warnings for prepare of prepared statements
mysql-test/r/func_concat.result:
  After merge fixes
mysql-test/r/select.result:
  Delete conflicting tables form previous tests
mysql-test/r/view.result:
  New code from 4.1 fixed old error
mysql-test/t/create.test:
  Ensure that --ps-protocol return same results as normal test
mysql-test/t/func_group.test:
  Remove not needed --disable_ps_protocol
mysql-test/t/func_time.test:
  Ensure that --ps-protocol return same results as normal test
mysql-test/t/having.test:
  Ensure that --ps-protocol return same results as normal test
mysql-test/t/insert_select.test:
  Remove not needed --disable_ps_protocol
mysql-test/t/select.test:
  Ensure that --ps-protocol return same results as normal test
mysql-test/t/sp.test:
  Fixed comment
mysql-test/t/system_mysql_db_fix.test:
  Fix that results is same as from system_mysql_db.test
mysql-test/t/trigger.test:
  Added comment
mysql-test/t/type_blob.test:
  Remove not needed --disable_ps_protocol
mysql-test/t/union.test:
  Run most of the test with --ps-protocol
mysql-test/t/user_limits.test:
  Ensure that --ps-protocol return same results as normal test
mysql-test/t/view.test:
  Removed --error as bug is now fixed
mysql-test/t/warnings.test:
  Ensure that --ps-protocol return same results as normal test
ndb/include/Makefile.am:
  Don't automaticly use SCCS files
sql/ha_ndbcluster.cc:
  Removed compiler warning
sql/log_event.cc:
  After merge fix
sql/sql_class.h:
  After merge fix
sql/sql_insert.cc:
  After merge fix
sql/sql_load.cc:
  After merge fix
sql/sql_prepare.cc:
  Add support for warnings for prepare of prepared statements
sql/sql_update.cc:
  After merge fixes
2005-01-04 13:46:53 +02:00
unknown
2bcaed348d Better handling of ensuring that setup_tables() are not called twice
This fixed a bug in prepared statements when used with outher joins
Fixed a bug in SUM(DISTINCT) when used with prepared statements.
Some safety fixes in test scripts to ensure that previous test failures shouldn't affect other tests


mysql-test/r/mysqldump.result:
  Safety fix if a previous test would fail
mysql-test/r/show_check.result:
  Safety fix if a previous test would fail
mysql-test/r/sp.result:
  Fix for --ps-protocol
mysql-test/r/synchronization.result:
  Safety fix if a previous test would fail
mysql-test/r/system_mysql_db.result:
  Safety fix if a previous test would fail
mysql-test/t/mysqldump.test:
  Safety fix if a previous test would fail
mysql-test/t/select.test:
  Safety fix if a previous test would fail
mysql-test/t/show_check.test:
  Safety fix if a previous test would fail
mysql-test/t/sp.test:
  fix for --ps-protocol
mysql-test/t/strict.test:
  Fix for --ps-protocol
mysql-test/t/synchronization.test:
  Safety fix if a previous test would fail
mysql-test/t/system_mysql_db.test:
  Safety fix if a previous test would fail
sql/item_sum.cc:
  Fix bug in SUM(DISTINCT...) when using with prepared statements
sql/item_sum.h:
  Fix bug in SUM(DISTINCT...) when using with prepared statements
sql/mysql_priv.h:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_base.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_insert.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_parse.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_prepare.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_select.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_union.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/sql_update.cc:
  Better handling of ensuring that setup_tables() are not called twice
sql/table.h:
  Better handling of ensuring that setup_tables() are not called twice
2005-01-03 21:04:33 +02:00
unknown
0c83f07c5e Reverted previous name changes of all bug tests in sp.test, but kept the
robustness (dropping things just in case).


mysql-test/r/sp.result:
  Reverted previous name changes of all bug tests, but kept the
  robustness (dropping things just in case).
mysql-test/t/sp.test:
  Reverted previous name changes of all bug tests, but kept the
  robustness (dropping things just in case).
2004-12-28 16:58:14 +01:00
unknown
067863e184 merge
include/mysqld_error.h:
  Auto merged
libmysqld/lib_sql.cc:
  Auto merged
mysql-test/r/rpl_charset.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/rpl_charset.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/ha_innodb.cc:
  Auto merged
sql/ha_innodb.h:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_row.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/item_uniq.h:
  Auto merged
sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/parse_file.cc:
  Auto merged
sql/protocol.cc:
  Auto merged
sql/protocol.h:
  Auto merged
sql/protocol_cursor.cc:
  Auto merged
sql/repl_failsafe.cc:
  Auto merged
sql/repl_failsafe.h:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/slave.cc:
  Auto merged
sql/slave.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_analyse.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_db.cc:
  Auto merged
sql/sql_delete.cc:
  Auto merged
sql/sql_error.cc:
  Auto merged
sql/sql_help.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_repl.h:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/share/czech/errmsg.txt:
  Auto merged
sql/share/danish/errmsg.txt:
  Auto merged
sql/share/dutch/errmsg.txt:
  Auto merged
sql/share/english/errmsg.txt:
  Auto merged
sql/share/estonian/errmsg.txt:
  Auto merged
sql/share/french/errmsg.txt:
  Auto merged
sql/share/german/errmsg.txt:
  Auto merged
sql/share/greek/errmsg.txt:
  Auto merged
sql/share/hungarian/errmsg.txt:
  Auto merged
sql/share/italian/errmsg.txt:
  Auto merged
sql/share/japanese/errmsg.txt:
  Auto merged
sql/share/korean/errmsg.txt:
  Auto merged
sql/share/norwegian-ny/errmsg.txt:
  Auto merged
sql/share/norwegian/errmsg.txt:
  Auto merged
sql/share/polish/errmsg.txt:
  Auto merged
sql/share/portuguese/errmsg.txt:
  Auto merged
sql/sql_udf.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/table.cc:
  Auto merged
sql/unireg.cc:
  Auto merged
sql/share/romanian/errmsg.txt:
  Auto merged
sql/share/russian/errmsg.txt:
  Auto merged
sql/share/serbian/errmsg.txt:
  Auto merged
sql/share/slovak/errmsg.txt:
  Auto merged
sql/share/spanish/errmsg.txt:
  Auto merged
sql/share/swedish/errmsg.txt:
  Auto merged
sql/share/ukrainian/errmsg.txt:
  Auto merged
2004-11-12 15:36:31 +02:00
unknown
ebbe5e39ed Various syntax fixes in sql/sql_yacc.yy for stored procedures:
- No RESTICT|CASCADE in DROP SP (since it's not implemented)
  - Added optional "noise" to FETCH: [[NEXT] FROM]
  - At least one statement required in all block constructs except BEGIN-END
    (where zero is allowed)


mysql-test/r/sp.result:
  Modified test cases for optional [[NEXT] FROM] in FETCH.
mysql-test/t/sp.test:
  Modified test cases for optional [[NEXT] FROM] in FETCH.
sql/sql_yacc.yy:
  Various syntax fixes for stored procedures:
    - No RESTICT|CASCADE in DROP SP (since it's not implemented)
    - Added optional "noise" to FETCH: [[NEXT] FROM]
    - At least one statement required in all block constructs except BEGIN-END
      (where zero is allowed)
2004-11-03 13:49:54 +01:00
unknown
46ce3d0092 merge
mysql-test/r/sp-security.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp-security.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_rcontext.cc:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-10-28 11:02:48 +03:00
unknown
4c06b4aed7 Fixed BUG#6029: Stored procedure specific handlers should have priority.
mysql-test/r/sp.result:
  New test case for BUG#6022.
mysql-test/t/sp.test:
  New test case for BUG#6022.
sql/sp_rcontext.cc:
  Find the most specific condition handler, not just the first one.
  (And corrected the return type for find_handler)
sql/sp_rcontext.h:
  Corrected return type for find_handler.
2004-10-23 14:23:32 +02:00
unknown
d925bcd8d6 Fixed BUG#6022: Stored procedure shutdown problem with self-calling function.
Fixed the pre-caching of functions. It now gives the expected stack overrun
  error for functions recursing too deep.


mysql-test/r/sp.result:
  New test case for BUG#6022.
mysql-test/t/sp.test:
  New test case for BUG#6022.
sql/sp.cc:
  Cache function first, then recurse, or the pre-caching loops infinitely
  for recursive functions.
2004-10-23 13:30:05 +02:00
unknown
35588c9dd0 Fixed BUG#6027: Stored procedures can be renamed.
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.
2004-10-22 19:05:17 +02:00
unknown
0a929c5e6e Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-error-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_handler.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_select.h:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-10-20 16:11:16 +03:00
unknown
066c90563a errors without code removed
net_printf/send_error calls replaced by my_error family functions
-1/1 (sent/unsent) error reporting removed
(WL#2133)


include/mysqld_error.h:
  new errors added.
mysql-test/r/rpl_charset.result:
  new error
mysql-test/r/rpl_timezone.result:
  new error
mysql-test/r/sp-security.result:
  more clean error message
mysql-test/r/sp.result:
  now error state intercepted correctly
mysql-test/t/connect.test:
  new error message
mysql-test/t/rpl_charset.test:
  new error message
mysql-test/t/rpl_timezone.test:
  new error
mysql-test/t/sp-security.test:
  more correct error handling
mysql-test/t/sp.test:
  now error state intercepted correctly
sql/ha_innodb.cc:
  -1/1 (sent/unsent) error reporting removed
sql/ha_innodb.h:
  -1/1 (sent/unsent) error reporting removed
sql/item.cc:
  only boolean values should be returned by fix_fields()
sql/item_cmpfunc.cc:
  only boolean values should be returned by fix_fields()
sql/item_func.cc:
  only boolean values should be returned by fix_fields()
  net_printf/send_error calls replaced by my_error family functions
sql/item_row.cc:
  only boolean values should be returned by fix_fields()
sql/item_subselect.cc:
  only boolean values should be returned by fix_fields()
  -1/1 (sent/unsent) error reporting removed
sql/item_subselect.h:
  -1/1 (sent/unsent) error reporting removed
sql/item_sum.cc:
  only boolean values should be returned by fix_fields()
sql/item_timefunc.cc:
  only boolean values should be returned by fix_fields()
sql/item_uniq.h:
  only boolean values should be returned by fix_fields()
sql/mysql_priv.h:
  -1/1 (sent/unsent) error reporting removed
sql/mysqld.cc:
  net_printf/send_error calls replaced by my_error family functions
  changes in my_message_sql to support error handling correctly
sql/protocol.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/protocol_cursor.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/repl_failsafe.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/repl_failsafe.h:
  -1/1 (sent/unsent) error reporting removed
sql/set_var.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/share/czech/errmsg.txt:
  new error messages
sql/share/danish/errmsg.txt:
  new error messages
sql/share/dutch/errmsg.txt:
  new error messages
sql/share/english/errmsg.txt:
  new error messages
sql/share/estonian/errmsg.txt:
  new error messages
sql/share/french/errmsg.txt:
  new error messages
sql/share/german/errmsg.txt:
  new error messages
sql/share/greek/errmsg.txt:
  new error messages
sql/share/hungarian/errmsg.txt:
  new error messages
sql/share/italian/errmsg.txt:
  new error messages
sql/share/japanese/errmsg.txt:
  new error messages
sql/share/korean/errmsg.txt:
  new error messages
sql/share/norwegian-ny/errmsg.txt:
  new error messages
sql/share/norwegian/errmsg.txt:
  new error messages
sql/share/polish/errmsg.txt:
  new error messages
sql/share/portuguese/errmsg.txt:
  new error messages
sql/share/romanian/errmsg.txt:
  new error messages
sql/share/russian/errmsg.txt:
  new error messages
sql/share/serbian/errmsg.txt:
  new error messages
sql/share/slovak/errmsg.txt:
  new error messages
sql/share/spanish/errmsg.txt:
  new error messages
sql/share/swedish/errmsg.txt:
  new error messages
sql/share/ukrainian/errmsg.txt:
  new error messages
sql/slave.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/slave.h:
  -1/1 (sent/unsent) error reporting removed
sql/sp.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/sp_head.cc:
  new eror handling support
  net_printf/send_error calls replaced by my_error family functions
sql/sp_rcontext.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/sql_acl.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/sql_acl.h:
  -1/1 (sent/unsent) error reporting removed
sql/sql_base.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_class.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/sql_class.h:
  my_messhage_sql now set/reset query_error flag
sql/sql_db.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_delete.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_do.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_error.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_handler.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_help.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/sql_insert.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_lex.h:
  -1/1 (sent/unsent) error reporting removed
sql/sql_load.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_map.cc:
  errors without code removed
sql/sql_parse.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed from mysql_execute_command
sql/sql_prepare.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/sql_repl.cc:
  error messages fixed
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/sql_repl.h:
  -1/1 (sent/unsent) error reporting removed
sql/sql_select.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_select.h:
  -1/1 (sent/unsent) error reporting removed
sql/sql_show.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_table.cc:
  net_printf/send_error calls replaced by my_error family functions
  -1/1 (sent/unsent) error reporting removed
sql/sql_trigger.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_udf.cc:
  net_printf/send_error calls replaced by my_error family functions
sql/sql_union.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_update.cc:
  -1/1 (sent/unsent) error reporting removed
  net_printf/send_error calls replaced by my_error family functions
sql/sql_view.cc:
  -1/1 (sent/unsent) error reporting removed
sql/sql_view.h:
  -1/1 (sent/unsent) error reporting removed
sql/sql_yacc.yy:
  net_printf/send_error calls replaced by my_error family functions
2004-10-20 04:04:37 +03:00
unknown
a750003f57 Implemented the stored procedure data access characteristics:
NO SQL
CONTAINS SQL (default)
READS SQL DATA
MODIFIES SQL DATA

These are needed as hints for the replication.
(Before this, we did have the default in the mysql.proc table, but no support in the parser.)


mysql-test/r/sp.result:
  Modified test cases for new data access characteristics.
mysql-test/t/sp.test:
  Modified test cases for new data access characteristics.
scripts/mysql_create_system_tables.sh:
  We now support all the SP data access characteristics (not just CONTAINS SQL).
scripts/mysql_fix_privilege_tables.sql:
  We now support all the SP data access characteristics (not just CONTAINS SQL).
sql/lex.h:
  New tokens for SP data access characteristics.
sql/sp.cc:
  Store, print and support alter of data access characteristics.
sql/sp_head.cc:
  Added SP_ prefix to some symbols.
sql/sql_lex.h:
  Added SP_ prefix to some symbols, and added SP data access enum.
sql/sql_yacc.yy:
  Parse SP data access characteristics.
  (And allow "alter ... language sql", mostly as a formality, it was accidently
   put in the wrong clause before.)
2004-10-14 18:07:09 +02:00
unknown
aaa54ac7e7 Fixed BUG#4905: Stored procedure doesn't clear for "Rows affected".
mysql-test/r/sp.result:
  New test case for BUG#4905
mysql-test/t/sp.test:
  New test case for BUG#4905
sql/sql_parse.cc:
  Reset row count before CALL.
2004-09-29 18:55:05 +02:00
unknown
e2c4279ce2 Fixed BUG#3583: query cache doesn't work for stored procedures.
mysql-test/r/sp.result:
  New test case for BUG#3583.
  (And current query is now set correctly.)
mysql-test/t/sp.test:
  New test case for BUG#3583.
sql/sp_head.cc:
  Set the thd->query and try to use cached query, if any, when executing a statement.
sql/sp_head.h:
  Extract the sub-query and store in sp_instr_stmt.
sql/sql_cache.cc:
  Keep the net->pkt_nr up-to-date when using query cache.
  This makes it work with stored procedures too.
sql/sql_cache.h:
  Keep the net->pkt_nr up-to-date when using query cache.
  This makes it work with stored procedures too.
sql/sql_yacc.yy:
  Extract the sub-query and store in sp_instr_stmt.
  (And it's never safe to cache references to local variables.)
2004-09-17 15:40:38 +02:00
unknown
749c03840a Fixed BUG#4941: Stored procedure crash fetching null value into variable.
mysql-test/r/sp.result:
  New test case for BUG#4941.
mysql-test/t/sp.test:
  New test case for BUG#4941.
sql/protocol_cursor.cc:
  Handle null values.
sql/sp_rcontext.cc:
  Handle null values.
2004-09-10 16:28:11 +02:00
unknown
0994dc396e Fixed BUG#4487: Stored procedure connection aborted if uninitialized char.
mysql-test/r/sp.result:
  New test case for BUG#4487.
mysql-test/t/sp.test:
  New test case for BUG#4487.
sql/item_func.h:
  Propagate null_value properly in sp functions.
2004-09-09 19:08:54 +02:00
unknown
e18b7ea959 Merge on pull
BitKeeper/etc/logging_ok:
  auto-union
include/my_sys.h:
  Auto merged
mysql-test/r/func_in.result:
  Auto merged
2004-09-09 07:26:28 +03:00
unknown
33efc9677d After merge fixes of merge with 4.1 that included the new arena code.
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
2004-09-09 06:59:26 +03:00
unknown
1bf3ce01c4 Fixed BUG#5258: Stored procedure modified date is 0000-00-00.
Althought techically not a but (as it's functioning as designed),
  it was decided that the design should be changed. Some users have
  a problem with dates being '0000-00-00' and the SQL standard specifies
  that the modification date should be the same as the creation date
  at creation.


mysql-test/r/sp.result:
  New test case for BUG#5258.
mysql-test/t/sp.test:
  New test case for BUG#5258.
sql/sp.cc:
  Set the modification time at creation too.
2004-09-08 11:42:18 +02:00
unknown
2c3f49a64d Fixed BUG#5307: Stored procedure allows statement after BEGIN ... END.
mysql-test/r/sp.result:
  New test case for BUG#5307
mysql-test/t/sp.test:
  New test case for BUG#5307
sql/sp_head.cc:
  Use the correct end-of-query pointer when extracting the body in the case
  of a create procedure compound with another statement.
2004-09-02 19:14:34 +02:00
unknown
339859d261 Fixed BUG#5287: Stored procedure crash if leave outside loop.
Bug in diff_handlers and diff_cursors made it attempt to pop
the wrong number at jumps sometimes.


mysql-test/r/sp.result:
  New testcase for BUG#5287.
mysql-test/t/sp.test:
  New testcase for BUG#5287.
sql/sp_pcontext.cc:
  Fixed diff_handlers and diff_cursors methods, they miscounted.
sql/sp_pcontext.h:
  Made m_handlers available for diff_handlers.
2004-09-02 17:24:25 +02:00
unknown
711e887905 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into pcgem.rdg.cyberkinetica.com:/usr/home/acurtis/work/mysql-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-08-30 22:11:14 +01:00
unknown
45dd187e7c Fix column name where it starts with a backtick
mysql-test/r/sp.result:
  test for backticks
mysql-test/t/sp.test:
  test for backticks
2004-08-30 22:08:51 +01:00
unknown
3170a8f942 Fixed BUG#5279: Stored procedure packets out of order if CHECKSUM TABLE.
mysql-test/r/sp.result:
  New testcase for BUG#5251.
mysql-test/t/sp.test:
  New testcase for BUG#5251.
sql/sp_head.cc:
  Added checksum to the list of statements that return result sets.
2004-08-30 14:52:21 +02:00
unknown
d410927963 Fixed BUG#5251: mysql changes creation time of a procedure/function when altering.
mysql-test/r/sp.result:
  New test case for BUG#5251.
mysql-test/t/sp.test:
  New test case for BUG#5251.
sql/sp.cc:
  Don't update the created timestamp when doing alter procedure/function.
2004-08-27 16:41:34 +02:00
unknown
071651efbd Major rehacking and cleanup of sp_pcontext.
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.
2004-08-26 12:54:30 +02:00
unknown
ac06195caa Fixed BUG#3157: Crash if stored procedure contains IF EXISTS,
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.
2004-08-24 16:07:39 +02:00
unknown
9b5a6f7228 WL#2002: Implement stored procedure GOTO.
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.
2004-08-17 20:20:58 +02:00
unknown
5e0f34017a Made sp.test more repeatable. 2004-08-13 20:02:52 +04:00
unknown
8602f545dc Removed an SP test case that's not repeatable over different builds/platforms.
mysql-test/r/sp.result:
  Removed a test case that's not repeatable over different builds/platforms.
mysql-test/t/sp.test:
  Removed a test case that's not repeatable over different builds/platforms.
2004-08-06 17:04:55 +02:00
unknown
ba7c743983 Fixed BUG#4904: Stored procedure crash if continue handler for HY000 errors.
The description is not entirerly correct. The issue was follow-up errors
  where the first error is not caught - in which case it's often a system
  error with errcode < 1000 (which are mapped by default to 'HY000'). In this
  case the error state is different from what was assumed in the execution
  loop.


mysql-test/r/sp.result:
  New test case for BUG#4902.
mysql-test/t/sp.test:
  New test case for BUG#4902.
sql/sp_head.cc:
  Don't test the net.report_error flag in the execution loop. (Don't know
  why this was done in the first place, as it seems to serve no purpose.)
2004-08-06 15:21:28 +02:00
unknown
177ef90b57 Fixed BUG#4902: Stored procedure with SHOW WARNINGS leads to packet error,
and tried to do it properly this time, digging out all show commands that
  need the multi results flag set.


mysql-test/r/sp.result:
  New test case for BUG#4902, with lots of other show commands as well.
mysql-test/t/sp.test:
  New test case for BUG#4902, with lots of other show commands as well.
sql/sp_head.cc:
  The check for possible multiple result commands was becomming unwieldly,
  so we moved it to a separate function, and added loads of new command codes
  to the test.
sql/sp_head.h:
  The check for possible multiple result commands was becomming unwieldly,
  so we moved it to a separate function.
sql/sql_yacc.yy:
  The check for possible multiple result commands was becomming unwieldly,
  so we moved it to a separate function.
2004-08-06 13:47:01 +02:00
unknown
96aeecf237 Fixed BUG#4318: Stored Procedure packet error if HANDLER statement,
at least partially. It doesn't crash or give packets out of order
any more, but it's unclear why it doesn't actually return anything
from within an SP. This should be investigated at some point, but
for the moment this will have to do. (It is a rather obscure feature... :)


mysql-test/r/sp.result:
  Test case for BUG#4318.
mysql-test/t/sp.test:
  Test case for BUG#4318.
sql/sql_yacc.yy:
  Recognize HANDLER READ as another statement that might result in multiple results.
2004-07-29 16:52:17 +02:00
unknown
02578b31e6 Merge
mysql-test/t/sp.test:
  SCCS merged
2004-07-26 21:06:46 +02:00
unknown
1876125e6d New test case for BUG#4726: Stored procedure crash when looping over SELECT with complex WHERE's.
(The fix was merged in from 4.1)


mysql-test/r/sp.result:
  New test case for BUG#4726.
mysql-test/t/sp.test:
  New test case for BUG#4726.
2004-07-23 19:52:06 +02:00
unknown
8a33c2bc8f Fixed BUG#4579: Execution of SP crashes server.
Sub-CALLs of procedures zapped thd->current_arena for good.


mysql-test/r/sp.result:
  New test case for BUG#4579.
mysql-test/t/sp.test:
  New test case for BUG#4579.
sql/sp_head.cc:
  Keep and restore old thd->current_arena before/after executing an SP,
  instead of just setting it to 0 afterwards.
2004-07-22 16:46:59 +02:00
unknown
7ba81837b0 disabled innodb is NOT a reason to fail 2004-07-13 21:00:00 +02:00
unknown
05f9e4dd0e Fixed BUG#3368: Stored procedure crash if group_concat(variable).
mysql-test/r/sp.result:
  New test case for BUG#3368.
mysql-test/t/sp.test:
  New test case for BUG#3368.
sql/item.h:
  Corrected const_item() for item_splocal. (Confusing semantics here, but this
  makes group_concat() behave as expected, instead of crashing, and does not
  appear to affect anything else.)
2004-06-15 14:26:19 +02:00
unknown
6fd6652be2 Fixed BUG#3843: ANALYZE TABLE inside stored procedure causes 'Packets out of order' error.
mysql-test/r/sp.result:
  New test case for BUG#3843.
mysql-test/t/sp.test:
  New test case for BUG#3843.
sql/sql_yacc.yy:
  Added another multi results special case for stored procedures (analyze).
2004-06-14 12:38:54 +02:00
unknown
05165962e7 Fixed BUG#3132: Stored function returns empty when used in union.
mysql-test/r/sp.result:
  Added testcase for BUG#3132.
mysql-test/t/sp.test:
  Added testcase for BUG#3132.
sql/item_func.cc:
  Set a useful max_length in Item_func_sp so field widths are correctly calculated.
2004-06-10 17:07:53 +02:00
unknown
6762a65133 Fixed BUG#2564: SHOW CREATE inconsistent W.R.T ANSI_QUOTES.
It's not possible to quote the definition according to the current sql_mode
setting, so instead we use the setting stored with the SP (that's how it's
parsed anyway), and show this setting in the SHOW CREATE output.


mysql-test/r/sp.result:
  Modifed SHOW CREATE FUNCTION|PROCEDURE output. Show the sql_mode used at
  creation as well.
  New test case for BUG#2564: SHOW CREATE inconsistent W.R.T ANSI_QUOTES.
mysql-test/t/sp.test:
  New test case for BUG#2564: SHOW CREATE inconsistent W.R.T ANSI_QUOTES.
sql/sp.cc:
  Rewrote create_string to quote things correctly according to the sql_mode
  used at creation time.
sql/sp_head.cc:
  Store sql_mode in sp_head and use it for SHOW CREATE.
sql/sp_head.h:
  Store sql_mode in sp_head and use it for SHOW CREATE.
2004-06-09 14:19:43 +02:00
unknown
b0921b1f5a Fixed BUG#2460: Crash wih Stored Procedure and UNION.
mysql-test/r/sp.result:
  Added test case for BUG#2460.
mysql-test/t/sp.test:
  Added test case for BUG#2460.
sql/sql_union.cc:
  When called from stored procedures, tabs might be reset already.
2004-05-28 19:43:06 +02:00
unknown
72139b18aa Added test cases for the following bugs that have been fixed by recent changes:
BUG#1863: CREATE TABLE in Stored Procedure sometimes crashes on repeated calls.
 BUG#2656: select with join in stored procedure: erroneous result on 2nd call.
 BUG#3426: IF x IS NULL in stored procedure fails on second call within connection.
 BUG#3448: Stored Procedures with inner joins possible bug.
 BUG#3734: Stored procedure returns wrong rows with fulltext parameter.
 BUG#3863: Stored procedure crash when incrementing variable in a loop.

(And corrected the row count output to the client after CALL)


mysql-test/r/sp.result:
  New test case results for fixed bugs.
mysql-test/t/sp.test:
  New test cases for fixed bugs.
sql/sql_parse.cc:
  Corrected the row_count output to the client.
2004-05-28 18:33:14 +02:00
unknown
556b51e12a Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-sp2_bak-5.0


mysql-test/t/sp.test:
  Auto merged
2004-05-26 14:59:42 +03:00
unknown
16227c28e6 PS and SP made compatible in mechanism used for preparing query for rexecutions (Bug #2266)
mysql-test/r/sp.result:
  test suite for Bug #2266
mysql-test/t/sp.test:
  test suite for Bug #2266
sql/item_subselect.cc:
  made ancestor for Statement (Item_arena)
sql/item_subselect.h:
  made ancestor for Statement (Item_arena)
sql/item_sum.cc:
  made ancestor for Statement (Item_arena)
sql/item_sum.h:
  made ancestor for Statement (Item_arena)
sql/mysql_priv.h:
  reset_stmt_for_execute use PS and SP
sql/sp_head.cc:
  sp_head use Item_arena as ancestor to be PS cleunup compatible
  SP use PS storing/restoring/cleanup mechanisms
  cleanup() of SP Items added
  Items created in temporary memory pool during SP execution saved for normal freeing after SP execution
sql/sp_head.h:
  sp_head use Item_arena
sql/sql_base.cc:
  made ancestor for Statement (Item_arena)
  results of wild_setup made permanent
  setup_conds make natural joins expanding only once and store results in PS/SP memory
sql/sql_class.cc:
  made ancestor for Statement (Item_arena)
sql/sql_class.h:
  made ancestor for Statement (Item_arena)
  method to detect PS preparation added
sql/sql_delete.cc:
  storing where for DELETE and mark first execution
sql/sql_derived.cc:
  use method
sql/sql_insert.cc:
  mark first execution for INSERT
sql/sql_lex.cc:
  flags to correctly make transformations of query and storing them in memory of PS/SP
  made ancestor for Statement (Item_arena)
sql/sql_lex.h:
  reved variable od SP ol saving data
  flags to correctly make transformations of query and storing them in memory of PS/SP
sql/sql_parse.cc:
  cleunup unit for any query
sql/sql_prepare.cc:
  made ancestor for Statement (Item_arena)
  storing where moved to preparation
  changed interface of reset_stmt_for_execute to use it is SP
  do not restore where/order by/group by before first execution (but tables and unit can be chenged without execution and should be prepared (subqueries executes on demand))
sql/sql_select.cc:
  storing where for SELECT/multi-DELETE/... and mark first execution
sql/sql_union.cc:
  made ancestor for Statement (Item_arena)
sql/sql_update.cc:
  storing where for UPDATE and mark first execution
2004-05-20 02:02:49 +03:00
unknown
86719746e8 Fixed comment for prime test.
(Again, mostly to test sendmail replacement for tunneling.)


mysql-test/t/sp.test:
  Fixed comment for prime test.
2004-05-13 13:29:18 +02:00
unknown
8993010222 Added comment about expected result for prime test.
(This is mostly to test sendmail tunneling of commit email...
 might not actually get pushed)


mysql-test/t/sp.test:
  Added comment about expected result for prime test.
2004-05-13 13:08:16 +02:00
unknown
f3d691a970 Correction of WL#1567: row_count() is -1 following non-insert/update/delete
statements.


mysql-test/r/sp.result:
  Added row_count() test for non-insert/update/delete statement.
mysql-test/t/sp.test:
  Added row_count() test for non-insert/update/delete statement.
sql/sql_class.h:
  thd->row_count_func must be signed for JDBC/ODBC (can be -1).
sql/sql_parse.cc:
  Reset thd->row_count_func to -1 for non-insert/update/delete statements.
2004-05-04 17:18:47 +02:00
unknown
7c4ceb739f WL#1567: Add ROW_COUNT() Function to retrieve count of rows updated/inserted/deleted
mysql-test/r/sp.result:
  New test cases for function ROW_COUNT().
mysql-test/t/sp.test:
  New test cases for function ROW_COUNT().
sql/item_func.cc:
  New Item_func_row_count.
sql/item_func.h:
  New Item_func_row_count.
sql/lex.h:
  New symbol for function ROW_COUNT().
sql/sql_class.h:
  New slot in THD for storing the row_count after insert, delete and update.
sql/sql_delete.cc:
  Set thd->row_count_func when deleting.
sql/sql_insert.cc:
  Set thd->row_count_func when inserting.
sql/sql_parse.cc:
  Stored procedure CALLs send the row count from the last insert, delete or update.
sql/sql_update.cc:
  Set thd->row_count_func when updating.
sql/sql_yacc.yy:
  New function ROW_COUNT().
2004-05-04 13:45:20 +02:00
unknown
8468cde4f1 Fixed BUG#2780: Stored procedure exit handler ignored for warnings.
Actually catch pushed warnings.


mysql-test/r/sp.result:
  New test case for BUG#2780.
mysql-test/t/sp.test:
  New test case for BUG#2780.
sql/sql_error.cc:
  Actually attempt to catch pushed warnings when running SPs.
2004-04-06 16:29:38 +02:00
unknown
c22ccc136b Fixed BUG#2776: Stored procedure crash if variable assigned to default.
Keep track on the default value and use it. (Or NULL, if not declared.)


mysql-test/r/sp.result:
  New testcases for BUG#2776.
mysql-test/t/sp.test:
  New testcases for BUG#2776.
sql/sp_pcontext.cc:
  Initialize local variable default value.
sql/sp_pcontext.h:
  New method for saving default value.
sql/sql_yacc.yy:
  If DEFAULT is use as a value in SET variable = ... in an SP, actually use the default.
2004-04-06 15:48:58 +02:00
unknown
91dcd01159 Fixed BUG#2772: Function with character set clause fails in stored procedures.
Complex return types were not stored correctly in the mysql.proc table.


mysql-test/r/sp.result:
  New testcase for BUG2772.
mysql-test/t/sp.test:
  New testcase for BUG2772.
sql/sp_head.cc:
  Pick up character set for "returns" types in functions and add it separately,
  since it's missed when extracting the type during the parser. (Due to LALR
  behaviour.)
sql/sp_head.h:
  Save the character set for returns clause in functions.
sql/sql_yacc.yy:
  Pick up character set for "returns" types in functions since it's missed otherwise.
  (Due to LALR behaviour.)
2004-04-06 13:26:53 +02:00
unknown
7456a3e92f Enforce standard declaration order in SPs.
Added new test cases for this, and adjusted old tests accordingly,
and new error codes and messages.
Fixed bugs in some tests (bug2673 and use test).
Added debug printing of instructions in SPs.


include/mysqld_error.h:
  New error codes for non-standard declaration order in SPs.
include/sql_state.h:
  New error codes for non-standard declaration order in SPs.
mysql-test/r/sp-error.result:
  Enforce standard declaration order.
  Fixed syntax error in use-test.
  New test cases for wrong order.
mysql-test/r/sp.result:
  Enforce strict declaration order.
  Fixed platform dependent bug2673 test.
mysql-test/t/sp-error.test:
  Enforce standard declaration order.
  Fixed syntax error in use-test.
  New test cases for wrong order.
mysql-test/t/sp.test:
  Enforce strict declaration order.
  Fixed platform dependent bug2673 test.
sql/share/czech/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/danish/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/dutch/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/english/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/estonian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/french/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/german/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/greek/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/hungarian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/italian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/japanese/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/korean/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/norwegian-ny/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/norwegian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/polish/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/portuguese/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/romanian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/russian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/serbian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/slovak/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/spanish/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/swedish/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/share/ukrainian/errmsg.txt:
  New error messages for strict (standard) declaration order in SPs.
sql/sp_head.cc:
  Debug printing of instructions in procedures.
  New error instruction for future use.
sql/sp_head.h:
  Debug printing of instructions in procedures.
  New error instruction for future use.
sql/sql_string.cc:
  New methods needed by debug printing of instruction in SPs.
sql/sql_string.h:
  New methods needed by debug printing of instruction in SPs.
sql/sql_yacc.yy:
  Check for standard order of declarations in SPs.
2004-03-29 11:16:45 +02:00
unknown
220494bde0 Fixed BUG#3259: Stored procedure names are case sensitive.
Procedure names were unintentionally case-sensitive when read from the database
(but case-insensitive when fetched from the cache).
Note that the DB-part of qualified names is still case-sensitive (for consistency
with other usage in mysql).


Docs/sp-imp-spec.txt:
  Removed "binary" from name and specific_name columns in mysql.proc definition.
mysql-test/r/sp.result:
  Test case for BUG#3259; SP names were supposed to be case-insensitive.
mysql-test/t/sp.test:
  Test case for BUG#3259; SP names were supposed to be case-insensitive.
scripts/mysql_create_system_tables.sh:
  Removed "binary" from name and specific_name columns in mysql.proc definition.
scripts/mysql_fix_privilege_tables.sql:
  Removed "binary" from name and specific_name columns in mysql.proc definition,
  and added a corresponding ALTER TABLE to fix existing tables.
sql/sp.cc:
  Added missing init of variable.
2004-03-23 12:04:40 +01:00
unknown
645d19f694 WL#1366: Use the schema (db) associated with an SP.
Phase 4 (final): Remove associated stored procedures when a database is dropped.


mysql-test/r/sp-security.result:
  drop database now deletes associated SPs.
mysql-test/r/sp.result:
  drop database now deletes associated SPs.
mysql-test/t/sp-security.test:
  drop database now deletes associated SPs.
mysql-test/t/sp.test:
  drop database now deletes associated SPs.
sql/sp.cc:
  New function for deleting all SPs associated with a database.
sql/sp.h:
  New function for deleting all SPs associated with a database.
sql/sp_cache.cc:
  New function for just invalidating all SP caches (when dropping a database).
sql/sp_cache.h:
  New function for just invalidating all SP caches (when dropping a database).
sql/sql_db.cc:
  When dropping a database, also delete all associated SPs.
2004-03-22 14:44:41 +01:00
unknown
edf2003009 Merge
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sp.cc:
  SCCS merged
2004-03-18 15:08:17 +01:00
unknown
36dd97239a Fix BUG#2674: Crash if return system variable in stored procedures.
Had to initialize some fields in lex before parsing an SP read from
mysql.proc.


mysql-test/r/sp.result:
  New test case for BUG#2674.
mysql-test/t/sp.test:
  New test case for BUG#2674.
sql/sp.cc:
  We need to initialize some thd->lex fields (e.g. unit master pointers) since
  LEX::uncacheable() depends on this, and it's called when looking up system
  variables during parsing.
2004-03-17 12:09:03 +01:00
unknown
eb4aa092e5 WL#1366: Use the schema (db) associated with an SP.
Phase 2: Make SPs belong to a DB, and use qualified names.
  As a side effect, using USE in an SP is no longer allowed.
  (It just doesn't work otherwise.)


include/mysqld_error.h:
  New error code (USE is no longer allowed in a stored procedure).
include/sql_state.h:
  New error state (USE is no longer allowed in a stored procedure).
mysql-test/r/sp-error.result:
  Updated result for test of USE in SP (not allowed now).
mysql-test/r/sp-security.result:
  Updated test results for new db column and qualified procedured names.
mysql-test/r/sp.result:
  Updated results for USE in SP (as it's no longer allowed), and
  for new db column in status result.
mysql-test/t/sp-error.test:
  Moved test of USE in SP from sp.test (as it's no longer allowed).
mysql-test/t/sp-security.test:
  Ajusted tests for new db column and qualified procedured names.
mysql-test/t/sp.test:
  Moved test of USE in SP to sp-error.test (as it's no longer allowed).
  Adjusted tests for new db column in status result.
sql/mysql_priv.h:
  mysql_change_db() now has optional arguments for use by SP with qualified names.
sql/share/czech/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/danish/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/dutch/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/english/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/estonian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/french/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/german/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/greek/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/hungarian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/italian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/japanese/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/korean/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/norwegian-ny/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/norwegian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/polish/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/portuguese/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/romanian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/russian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/serbian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/slovak/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/spanish/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/swedish/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/share/ukrainian/errmsg.txt:
  New error message: USE is not allowed in a stored procedure.
sql/sp.cc:
  SPs are now "belong" to a DB and may have qualified names.
  New functions for changing DB ("use") when parsing and invoking SPs.
sql/sp.h:
  New functions for changing DB ("use") when parsing and invoking SPs.
sql/sp_cache.cc:
  Use the qualified name in the SP cache.
sql/sp_head.cc:
  New function for allocating a qualified SP name (used in sql_yacc.yy).
  Change DB when executing an SP (if needed).
  Moved thd_mem_root swap functions from sp_head.h.
sql/sp_head.h:
  New function for allocating a qualified SP name (used in sql_yacc.yy).
  Moved thd_mem_root swap functions to sp_head.cc.
sql/sql_db.cc:
  mysql_change_db() now has optional arguments for use by SP with qualified names
  (for use when reading an SP from database and executing it); also allow "unusing"
  a database, i.e. setting thd->thd to "".
sql/sql_yacc.yy:
  Initialize qualfied SP names correctly.
  USE is no longer allowed in an SP.
2004-03-11 17:18:59 +01:00
unknown
5390589c3c Fixed test for BUG#2614 (right name, right place, etc...),
and updated sp.result as well.


mysql-test/r/sp.result:
  Fixed test for BUG#2614 (right name, right place, etc...),
  and updated this file as well.
mysql-test/t/sp.test:
  Fixed test for BUG#2614 (right name, right place, etc...)
2004-02-03 15:58:22 +01:00
unknown
323bca3380 sp.test:
test case for the fix for bug #2614
sp_head.cc:
  A fix for a crashing bug in stored procedures with INSERT ... SELECT ... (Bug #2514)


sql/sp_head.cc:
  A fix for a crashing bug in stored procedures with INSERT ... SELECT ... (Bug #2514)
mysql-test/t/sp.test:
  test case for the fix for bug #2614
2004-02-03 16:22:43 +02:00
unknown
219f51b475 Fixed BUG#2227: Server crash with stored procedure call.
(Meaning "... with SELECT v", where v is a local variable.)


mysql-test/r/sp.result:
  Test case for BUG#2227
mysql-test/t/sp.test:
  Test case for BUG#2227
sql/item.h:
  Item_splocal::send() needed for "SELEC v", where "v" is a local variable.
  Also set the field name.
sql/sp_head.cc:
  Have to get decimals and max_length right for reals, when SELECT of local variables.
2004-01-21 14:28:35 +01:00
unknown
95a34bd83f Merge mysql.com:/usr/local/bk/mysql-5.0
into mysql.com:/home/pem/work/mysql-5.0


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2004-01-14 18:20:49 +01:00
unknown
b6b947d614 Fixed BUG#2267: Lost connect if stored procedure has SHOW FUNCTION STATUS.
(This might not be enough, could be more statements that must be detected...)


mysql-test/r/sp.result:
  Test case for BUG#2267
mysql-test/t/sp.test:
  Test case for BUG#2267
sql/sp.cc:
  Code clean-up: Get the correct order of print-outs in debug trace.
sql/sql_yacc.yy:
  Detect "select-like" statements so that the multi result flag is set correctly.
2004-01-14 18:18:29 +01:00
unknown
612078813b Fixed BUG#2329: Crash if insert with variable name in stored procedure.
Found a few more places in the parser (insert, replace and update) where
local stored procedure variables should not be recognized.


mysql-test/r/sp-error.result:
  Test cases for BUG#2329
mysql-test/r/sp.result:
  New test case for certain context dependencies for symbols.
mysql-test/t/sp-error.test:
  Test cases for BUG#2329
mysql-test/t/sp.test:
  New test case for certain context dependencies for symbols.
sql/sql_yacc.yy:
  Found a few more places where local SP variables should not be recognized.
2004-01-14 12:47:03 +01:00
unknown
03b652cfbf Fix BUG#2260: Handler NOT FOUND declaration does't work in stored procedure
mysql-test/r/sp.result:
  Test case for BUG#2260.
mysql-test/t/sp.test:
  Test case for BUG#2260.
sql/sp_rcontext.cc:
  Detect warning and not found, and exception condition correctly.
2004-01-08 10:55:10 +01:00
unknown
bc748bef53 Post-merge fixes.
Multiple result sets from stored procedures now works with the
mysql and mysqltest clients.


client/mysqltest.c:
  Post-merge fixes.
mysql-test/r/index_merge_innodb.result:
  Post-merge fixes.
mysql-test/r/sp-error.result:
  Post-merge fixes.
  Removed now obsolete error test for multiple selects (without "into").
mysql-test/r/sp.result:
  Post-merge fixes.
  Added test for mulple result sets.
mysql-test/r/variables.result:
  Post-merge fixes.
mysql-test/t/index_merge_innodb.test:
  Post-merge fixes.
mysql-test/t/sp-error.test:
  Post-merge fixes.
  Removed now obsolete error test for multiple selects (without "into").
mysql-test/t/sp.test:
  Post-merge fixes.
  Added test for mulple result sets.
sql/lex.h:
  Post-merge fixes.
2003-12-16 18:09:22 +01:00
unknown
a6f85eeac1 WL#1365: Implement definer's rights execution of stored procedures.
(Also put the hostpart back in the definer column.)


mysql-test/r/sp-error.result:
  Moved error test from sp.test
mysql-test/r/sp.result:
  Moved error test to sp-error.test.
  Put hostpart back into definer column in mysql.proc.
mysql-test/t/sp-error.test:
  Moved error test from sp.test
mysql-test/t/sp.test:
  Moved error test to sp-error.test.
  Put hostpart back into definer column in mysql.proc.
sql/item_func.cc:
  (Maybe) switch security context before invoking a stored function.
sql/sp.cc:
  Renamed creator into definer, for more consistent terminology, and put the
  hostpart back.
sql/sp_head.cc:
  Some fixes in the way things are allocated, and moved set_info() definition
  here from sp_head.h. creator is now called definer, and is split into a
  user and host part.
  Added functions for (possible) change and restore of privileges, for sql security
  definer calls.
sql/sp_head.h:
  Moved set_info() definition here from sp_head.h.
  creator is now called definer, and is split into a user and host part.
  Added functions for (possible) change and restore of privileges, for sql security
  definer calls.
sql/sql_acl.cc:
  New function acl_getroot_no_password() for getting the privileges used when
  calling an SP with sql security definer.
sql/sql_acl.h:
  New function acl_getroot_no_password() for getting the privileges used when
  calling an SP with sql security definer.
sql/sql_parse.cc:
  (Maybe) switch security context before invoking a stored procedure.
sql/sql_yacc.yy:
  Fixed typo.
2003-12-13 16:40:52 +01:00
unknown
cabd28c68c In order to make ALTER PROCEDURE|FUNCTION work correctly, and in general to
make characteristics (and SHOW) work right, we had to separate the old
definition blob in the mysql.proc table into separate fields for parameters,
return type, and body, and handle the characteristics (like SQL SECURITY)
separately... and then reassemble the CREATE string for parsing, of course.
This is rather ugly, mostly the parser bit. (Hopefully that will be better
with the new parser.)


Docs/sp-imp-spec.txt:
  Separated the definitions string of the procedure into different columns
  in the mysql.proc schema.
mysql-test/r/sp.result:
  New characteristics tests.
mysql-test/t/sp.test:
  New characteristics tests.
scripts/mysql_create_system_tables.sh:
  Separated the definitions string of the procedure into different columns
  in the mysql.proc schema.
scripts/mysql_fix_privilege_tables.sql:
  Separated the definitions string of the procedure into different columns
  in the mysql.proc schema.
sql/sp.cc:
  Separated the definitions string of the procedure into different columns.
  Rewrote much of the code related this (have a assemble the definition
  string from its different parts now) and the way characteristics are now
  handled, in order to make ALTER actually work.
sql/sp.h:
  Changed prototypes.
sql/sp_head.cc:
  Rewrote much of the code related to the new mysql.proc schema with separate
  definition fields (have to assemble the definition string from its different
  parts now) and the way characteristics are now handled, in order to make ALTER
  actually work.
sql/sp_head.h:
  Separated the different parts of the definition strings: name, parameters,
  return type (for functions) and body.
sql/sql_yacc.yy:
  Separated the different parts of the definition strings: name, parameters,
  return type (for functions) and body.
  This is ugly and messy; hopefully there's a more elegant way to do this
  when the new parser is installed.
2003-12-12 14:05:29 +01:00
unknown
b5627bb00c WL#1364: Store some environmental values with SPs and use at invokation
sql_mode is stored and used with SPs.
sql_select_limit is always unlimited in SPs.


mysql-test/r/sp.result:
  Test case for mode settings.
mysql-test/t/sp.test:
  Test case for mode settings.
sql/sp.cc:
  Store the sql_mode with the SP and reset it on retrieval.
  sql_select_limit is always maximum (default) in an SP,
  regardless of the setting at the time of create or call.
2003-12-11 12:23:50 +01:00
unknown
7f9ba01f99 New test cases for BUG#1653 (recalling a procedure after replacing a faulty
table definition crashed), and recursive calls.


mysql-test/r/sp.result:
  New test cases for BUG#1653 and recursive calls.
mysql-test/t/sp.test:
  New test cases for BUG#1653 and recursive calls.
2003-12-05 18:52:33 +01:00
unknown
da7ca9ba04 Post-merge fixes. 2003-12-01 18:24:09 +01:00
unknown
50685be51b Fixed BUG#1874: Don't call fix_fields() indiscriminately, it resets null_value
for some items, which made aggregates like MIN(), MAX() and SUM() fail.


mysql-test/r/sp.result:
  Test case for aggregate functions in SELECT INTO. (BUG#1874)
mysql-test/t/sp.test:
  Test case for aggregate functions in SELECT INTO. (BUG#1874)
2003-11-20 18:30:02 +01:00
unknown
8bd2c19af8 Handle null values correctly in SP local variables.
mysql-test/r/sp.result:
  Test for handling of null values.
mysql-test/t/sp.test:
  Test for handling of null values.
sql/item.h:
  Update null_value correctly in Item_splocal.
2003-11-20 16:14:24 +01:00
unknown
700ae43d71 Bugfixes in SHOW CREATE PROCEDURE/FUNCTION and SHOW PROCEDURE/FUNCTION STATUS;
- dropped routines should not show up in status
- error handling for non-existing routines

+ some cleanup.


mysql-test/r/sp-error.result:
  Test SHOW CREATE PROCEDURE for non-existing procedure.
mysql-test/r/sp.result:
  Additional SHOW FUNCTION/PROCEDURE STATUS calls (make sure they don't show
  after being dropped).
mysql-test/t/sp-error.test:
  Test SHOW CREATE PROCEDURE for non-existing procedure.
mysql-test/t/sp.test:
  Additional SHOW FUNCTION/PROCEDURE STATUS calls (make sure they don't show
  after being dropped).
sql/sp.cc:
  Fixed bug in SHOW ... STATUS after a routine has been dropped,
  and fixed the error return codes (for correct error handling).
  Also some general cleanup.
sql/sp.h:
  Fixed prefix for external functions (should be sp_, not db_).
sql/sql_parse.cc:
  Fixed error handling in SHOW CREATE PROCEDURE/FUNCTION.
2003-11-20 15:07:22 +01:00
unknown
afe2186e3b Post-merge fixes. 2003-11-19 16:59:35 +01:00
unknown
bd2263503d Fixed BUG#1862 (flush table in SPs didn't work).
Fixed various bugs: setting local variables to NULL, SELECT INTO var now actually
might work, SELECT INTO with not row now gives a "no data" warning (instead of
the "empty query" error), etc.
Updated test cases accordingly.


mysql-test/r/sp-error.result:
  Corrected security syntax for alter/create procedure.
mysql-test/r/sp.result:
  Corrected security syntax for alter/create procedure.
  New tests for setting local variables to null,
  bug fixes for SELECT INTO var, FLUSH TABLES calls (BUG#1862),
  and corrected "no data" warning for SELECT INTO with no rows.
mysql-test/t/sp-error.test:
  Corrected security syntax for alter/create procedure.
mysql-test/t/sp.test:
  Corrected security syntax for alter/create procedure.
  New tests for setting local variables to null,
  bug fixes for SELECT INTO var, FLUSH TABLES calls (BUG#1862),
  and corrected "no data" warning for SELECT INTO with no rows.
sql/lex.h:
  Added SQL_SYM (and added a few _SYM suffixes for new symbols).
sql/sp_head.cc:
  Fixed bug in the item_list copying for "with_wild" cases (list nodes ended
  up in the wrong memroot).
  Catch errors and warnings even if return values is 0 from sub-statements.
  Restore table_list which is zapped by SQLCOM_CREATE_TABLE and INSERT_SELECT.
  Set old table pointers to NULL after sub-statement call (since all tables are
  closed).
sql/sql_class.cc:
  Corrected error message when no rows return by a SELECT INTO var; should
  be a "no data" warning.
sql/sql_lex.h:
  Have to store the original table_list first pointer for some
  sub-statements in SPs.
sql/sql_yacc.yy:
  Corrected SECURITY INVOKER/DEFINER syntax ("SQL" missing), added some _SYM
  suffixes, and fixed valgrind complaints for SP COMMENTs.
  (Also removed some now irrelevant comments.)
2003-11-19 11:26:18 +01:00
unknown
6c1a2b7fd2 WL#1241: SHOW PROCEDURE/FUNCTION
WL#1263: Support for the attributes COMMENT and SUID
         in CREATE/ALTER PROCEDURE/FUNCTION


include/mysqld_error.h:
  Error code for 'alter procedure'
mysql-test/r/sp-error.result:
  Test for WL#1241&WL#1263
mysql-test/r/sp.result:
  Test for WL#1241&WL#1263
mysql-test/t/sp-error.test:
  Test for WL#1241&WL#1263
mysql-test/t/sp.test:
  Test for WL#1241&WL#1263
sql/share/czech/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/danish/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/dutch/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/english/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/estonian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/french/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/german/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/greek/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/hungarian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/italian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/japanese/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/korean/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/norwegian-ny/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/norwegian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/polish/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/portuguese/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/romanian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/russian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/serbian/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/slovak/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/spanish/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/swedish/errmsg.txt:
  Error massage for 'alter procedure'
sql/share/ukrainian/errmsg.txt:
  Error massage for 'alter procedure'
2003-11-17 21:21:36 +04:00
unknown
c9232c60e2 Various bug fixes:
- Duplicate parameters/variables, conditions and cursors (not allowed).
  - ITERATE in labelled BEGIN-END (not allowed).
  - Missing SQLSTATE [VALUE] keywords in CONDITION/HANDLER declaration (added).
  - Empty BEGIN-END (now allowed).
  - End label (now optional).


include/mysqld_error.h:
  New error code for duplicate things (vars et al) in SPs.
mysql-test/r/sp-error.result:
  New error tests for ITERATE in begin-end block and duplicate variables,
  conditions and cursors.
mysql-test/r/sp.result:
  New tests for empty begin-end blocks, overriding local variables outside scope
  only, leave a begin-end block, and SQLSTATE [VALUE] words for CONDITION/HANDLER
  declarations.
mysql-test/t/sp-error.test:
  New error tests for ITERATE in begin-end block and duplicate variables,
  conditions and cursors.
mysql-test/t/sp.test:
  New tests for empty begin-end blocks, overriding local variables outside scope
  only, leave a begin-end block, and SQLSTATE [VALUE] words for CONDITION/HANDLER
  declarations.
sql/lex.h:
  New SQLSTATE keyword.
sql/share/czech/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/danish/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/dutch/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/english/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/estonian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/french/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/german/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/greek/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/hungarian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/italian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/japanese/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/korean/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/norwegian-ny/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/norwegian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/polish/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/portuguese/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/romanian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/russian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/serbian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/slovak/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/spanish/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/swedish/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/share/ukrainian/errmsg.txt:
  New error message for duplicate things (vars et al) in SPs.
sql/sp_pcontext.cc:
  Keep track on scope limits for error checking of duplicate variables,
  conditions and cursors.
sql/sp_pcontext.h:
  Keep track on scope limits for error checking of duplicate variables,
  conditions and cursors.
  Also need to flag BEGIN labels to check for illegal ITERATEs.
sql/sql_yacc.yy:
  End-labels in SPs loop and begin-end blocks are now optional.
  SQLSTATE [VALUE] added to syntax for sqlstates.
  Check for duplicate variable, condition and cursor declarations, but
  only in the same scope.
  Empty BEGIN-END statements now allowed.
  Check if ITERATE is referring to a BEGIN label.
2003-11-13 19:34:56 +01:00
unknown
f89c6de8e3 Fix BUG#1656: Have to initialize OUT parameters too, in case they're not
later set by the procedure.


mysql-test/r/sp.result:
  Test case for BUG#1656
mysql-test/t/sp.test:
  Test case for BUG#1656
2003-10-28 15:43:49 +01:00
unknown
ec3a39dc67 Post-merge fixes.
mysql-test/r/sp-error.result:
  Post-merge fixes. Error codes renumbered.
mysql-test/r/sp.result:
  Post-merge fixes. Error codes renumbered.
mysql-test/r/variables.result:
  Post-merge fixes. Error codes renumbered.
mysql-test/t/sp-error.test:
  Post-merge fixes. Error codes renumbered.
mysql-test/t/sp.test:
  Post-merge fixes. Error codes renumbered.
sql/item_subselect.cc:
  Post-merge fixes. thd->lex is a pointer.
sql/slave.cc:
  Post-merge fixes. Undid imported patch that's not 5.0 compatible.
sql/sql_parse.cc:
  Post-merge fixes. Changed access API calls, and fixed merge error.
sql/sql_table.cc:
  Post-merge fixes. No update log in 5.0.
2003-10-23 16:06:51 +02:00
unknown
2b1dc5f35d Bugfix; added another method to Item_splocal, updated tests, and added previous
fix to functions as well.


mysql-test/r/sp.result:
  Modified test to trap yet another bug (now fixed).
mysql-test/t/sp.test:
  Modified test to trap yet another bug (now fixed).
sql/item.h:
  Another bugfix; need to override yet another method in Item_splocal.
sql/sp_head.cc:
  Completed previous initialization bug; now for FUNCTIONs. too.
2003-10-20 16:59:45 +02:00
unknown
82e5115ae7 Bugfix. Local variables are now initialized to null.
mysql-test/r/sp.result:
  New test case for bugfix (when a variable is not set due to an exception).
mysql-test/t/sp.test:
  New test case for bugfix (when a variable is not set due to an exception).
sql/item.h:
  Local variables are initialized to null.
sql/sp_head.cc:
  Local variables are initialized to null.
2003-10-17 17:13:49 +02:00
unknown
12a0546da3 Handle user variables (@-vars) as OUT and INOUT parameters in SPs.
mysql-test/r/sp.result:
  Test cases for user variables (@-vars) as OUT and INOUT parameters.
mysql-test/t/sp.test:
  Test cases for user variables (@-vars) as OUT and INOUT parameters.
sql/item_func.h:
  We need to be able to detect Item_func_get_user_vars when used as arguments to SPs.
sql/sp_head.cc:
  Handle user variables (@-vars) as OUT and INOUT parameters.
  But we still just ignore it, if it's anything else.
2003-10-16 15:45:27 +02:00
unknown
9aa680a016 Fix for BUG#1547: "SELECT ... WHERE field = var" sometimes give the wrong result in SPs
Two missing methods added to Item_splocal + test case.


mysql-test/r/sp.result:
  Test case for BUG#1547
mysql-test/t/sp.test:
  Test case for BUG#1547
sql/item.h:
  Fix for BUG#1547: "SELECT ... WHERE field = var" sometimes give the wrong result in SPs
  
  Added missing methods to Item_splocal to get the correct compare function
  and make the optimizer do the right thing.
2003-10-15 19:03:37 +02:00
unknown
776784b821 Fix for BUG#1495: Evaluate items before setting a local variable with SELECT INTO.
Also copy and restore order_list and group_list for selects in SPs.


mysql-test/r/sp.result:
  Test for BUG#1495, and an additional cursor test.
mysql-test/t/sp.test:
  Test for BUG#1495, and an additional cursor test.
sql/sp_head.cc:
  Fix BUG#1495: renamed eval_func_item() into sp_eval_func_item() and made it
  non-static.
  Also need to copy and restore order_list and group_list pointers before and
  after execution of a substatement. (Which means these must always be properly
  initialized for all queries.)
sql/sp_rcontext.cc:
  Fix BUG#1495: Evaluate and set a local variable (for SELECT INTO).
sql/sp_rcontext.h:
  Fix BUG#1495: Evaluate and set a local variable (for SELECT INTO).
sql/sql_class.cc:
  Fix BUG#1495: Evaluate and set a local variable (for SELECT INTO).
sql/sql_class.h:
  Fix BUG#1495: Evaluate and set a local variable (for SELECT INTO); need type for this.
sql/sql_parse.cc:
  order_list and group_list must be initialized in select_lex for all queries,
  to make SP sub statement execution work.
sql/sql_yacc.yy:
  Type needed for setting local variables.
sql/table.h:
  Need a copy of the Item* pointer when executing sub-statements in SPs. (Since
  it's modified and must be restored afterwards.)
2003-10-14 12:59:28 +02:00
unknown
04c6b9b8d8 WL#962: Added simple, read-only, non-scrolling, asensitive cursors in SPs, using the
(updated) Protocol_cursor class.
Also did some bug fixes.


Docs/sp-imp-spec.txt:
  Added CURSOR docs (and fixed typos)
Docs/sp-implemented.txt:
  Updated for CURSORs
include/mysqld_error.h:
  New error codes/messages for CURSORs
libmysqld/Makefile.am:
  SP cursors now needs this.
mysql-test/r/sp-error.result:
  New tests for cursors.
mysql-test/r/sp.result:
  New tests for cursors.
mysql-test/t/sp-error.test:
  New tests for cursors.
mysql-test/t/sp.test:
  New tests for cursors.
sql/protocol.cc:
  We now always have Protocol_cursor (SPs use it)
sql/protocol.h:
  Fixed bugs in Protocol_cursor (for SPs)
sql/protocol_cursor.cc:
  Fixed bugs in Protocol_cursor (for SPs)
sql/share/czech/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/danish/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/dutch/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/english/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/estonian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/french/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/german/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/greek/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/hungarian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/italian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/japanese/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/korean/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/norwegian-ny/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/norwegian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/polish/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/portuguese/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/romanian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/russian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/serbian/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/slovak/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/spanish/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/swedish/errmsg.txt:
  New error codes/messages for CURSORs
sql/share/ukrainian/errmsg.txt:
  New error codes/messages for CURSORs
sql/sp_head.cc:
  Added cursor support.
  Also fixed problems with item_lists, where pointers and ref_pointer_arrays.
sql/sp_head.h:
  Added cursor support
sql/sp_pcontext.cc:
  Added cursor support
sql/sp_pcontext.h:
  Added cursor support
sql/sp_rcontext.cc:
  Added cursor support, in particular the new sp_cursor class.
sql/sp_rcontext.h:
  Added cursor support, in particular the new sp_cursor class.
sql/sql_lex.h:
  We sometimes need to copy item_lists in LEX when executing substatements in SPs
sql/sql_yacc.yy:
  Added minimal cursor support (not the full syntax yet).
2003-10-10 16:57:21 +02:00
unknown
869b49efe5 Fixed BUG#822: Copying and clearing some things in thd/lex when
executing sub-statements (selects) prevents crashes intermittent
crashes.
Also fixed bug in sql_yacc.yy (generated a hpop instruction when
not needed).


mysql-test/r/sp.result:
  Test-case for BUG#822.
mysql-test/t/sp.test:
  Test-case for BUG#822.
sql/sp_head.cc:
  Fixed BUG#822; needed to copy and clear some stuff when calling sub-statements.
sql/sql_yacc.yy:
  Only generate hpop instruction when we actually have handlers.
2003-10-03 12:39:12 +02:00
unknown
4deedf6263 Implemented SP CONDITIONs and HANDLERs, with the extension of handling
MySQL error codes as well.
(No UNDO HANDLERs yet, and no SIGNAL or RESIGNAL.)
WL#850


Docs/sp-imp-spec.txt:
  Spec of CONDITIONs and HANDLERs (and updated some old stuff too).
Docs/sp-implemented.txt:
  Updated info about caching, CONDITIONs and HANDLERs.
include/mysqld_error.h:
  New error for undeclared CONDITION.
libmysqld/Makefile.am:
  New file: sp_rcontext.cc.
mysql-test/r/sp-error.result:
  New tests for CONDITIONs and HANDLERs.
mysql-test/r/sp.result:
  New tests for CONDITIONs and HANDLERs.
mysql-test/t/sp-error.test:
  New tests for CONDITIONs and HANDLERs.
mysql-test/t/sp.test:
  New tests for CONDITIONs and HANDLERs.
sql/Makefile.am:
  New file: sp_rcontext.cc.
sql/lex.h:
  New symbols for CONDITIONs, HANDLERs and CURSORs.
sql/mysqld.cc:
  Catch error if we have a handler for it.
sql/protocol.cc:
  Catch error if we have a handler for it.
sql/share/czech/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/danish/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/dutch/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/english/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/estonian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/french/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/german/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/greek/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/hungarian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/italian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/japanese/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/korean/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/norwegian-ny/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/norwegian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/polish/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/portuguese/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/romanian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/russian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/serbian/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/slovak/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/spanish/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/swedish/errmsg.txt:
  New error for undeclared CONDITION.
sql/share/ukrainian/errmsg.txt:
  New error for undeclared CONDITION.
sql/sp_head.cc:
  New HANDLER code.
sql/sp_head.h:
  New HANDLER code.
sql/sp_pcontext.cc:
  New CONDITION and HANDLER code.
sql/sp_pcontext.h:
  New CONDITION and HANDLER code.
sql/sp_rcontext.h:
  New CONDITION and HANDLER code.
sql/sql_yacc.yy:
  New CONDITION and HANDLER code.
2003-09-16 14:26:08 +02:00
unknown
8ea9613e7e Adopt SP stuff to the new lex pointer.
mysql-test/r/sp.result:
  New test (of more call levels).
mysql-test/t/sp.test:
  New test (of more call levels).
sql/mysql_priv.h:
  SPs wants to init lex only.
sql/sp.cc:
  Restore lex pointer (and fixed memory leak).
sql/sp_head.cc:
  lex is now a pointer, so reset things the right way.
sql/sp_head.h:
  lex is now a pointer.
sql/sql_lex.h:
  SPs wants to init lex only.
sql/sql_parse.cc:
  SPs wants to init lex only.
sql/sql_prepare.cc:
  Restore lex pointer.
2003-05-23 15:32:31 +02:00
unknown
64cad16faa Post-fix of bug #302 fix.
Fixed bug #320.
Some new tests and cosmetic changes.
Another strcasecmp() replaced.


mysql-test/r/sp.result:
  Moved SP tests from subselect and added some more.
mysql-test/r/subselect.result:
  Moved SP tests to sp.test.
mysql-test/t/sp.test:
  Moved SP tests from subselect and added some more.
mysql-test/t/subselect.test:
  Moved SP tests to sp.test.
sql/sp.cc:
  Don't close derived tables.
sql/sp_head.cc:
  Minor layout and comment fix.
sql/sp_head.h:
  Minor comment fix.
sql/sql_derived.cc:
  Don't set org_table_list->derived to 1 when debugging, as this breaks certain
  subselect args to SPs.
sql/sql_parse.cc:
  Post-fix of bugfix (free memory on error), and added comment.
sql/sql_yacc.yy:
  Another strcasecmp() replaced.
2003-04-27 17:35:54 +02:00
unknown
cfd69393e4 Post merge fixes.
mysql-test/r/sp.result:
  Enabled the cs test as it works now.
mysql-test/t/sp.test:
  Enabled the cs test as it works now.
2003-04-04 15:47:43 +02:00
unknown
2eebaf7bd3 Getting rid of lots of memory leaks (but not quite all of them yet,
some will go away when temporary code is replaced).


mysql-test/r/sp.result:
  Drop db before creating.
mysql-test/t/sp.test:
  Drop db before creating.
2003-04-02 20:42:28 +02:00
unknown
cc0f1f15cd Implemented DEFAULT for DECLARE variables.
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2003-03-30 13:25:43 +02:00
unknown
2c9ef84cc3 Fixed save/restore of current database when calling a procedure. 2003-03-26 15:02:48 +01:00
unknown
fa870804d3 Post post merge fix. Made the broken ip test work again.
sql/sp_head.cc:
  Added some more DBUG output.
sql/sp_pcontext.cc:
  Post post merge fix.
2003-03-20 11:57:05 +01:00
unknown
addf8ea04e Post-merge fixes.
mysql-test/r/sp.result:
  Post-merge fixes.
  (And disabled the ip test, since some change in 4.1 broke it.)
mysql-test/t/sp.test:
  Post-merge fixes.
  (And disabled the ip test, since some change in 4.1 broke it.)
2003-03-19 11:36:32 +01:00
unknown
6b3c898655 Fixed reentrantness bugs in select (lex->result) and select_dumpvar, and added cool
prime number test example.


mysql-test/r/sp.result:
  New prime number example. (Good for future benchmarkings too.)
mysql-test/t/sp.test:
  New prime number example. (Good for future benchmarkings too.)
sql/sql_class.cc:
  Reset row_count in select_dumpvar when preparing, to make it reentrant as a lex member.
sql/sql_select.cc:
  Don't delete result if it's a lex member (since lex needs to be reentrant).
2003-03-06 19:16:46 +01:00
unknown
f74b36a242 Improved error handling regarding SPs (with info like names etc in the output).
Disabled queries in FUNCTIONs.


include/mysqld_error.h:
  New error message for queries in FUNCTIONs.
mysql-test/t/sp.test:
  Moved error tests to sp-error.test.
sql/share/czech/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/danish/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/dutch/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/english/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/estonian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/french/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/german/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/greek/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/hungarian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/italian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/japanese/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/korean/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/norwegian-ny/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/norwegian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/polish/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/portuguese/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/romanian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/russian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/serbian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/slovak/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/spanish/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/swedish/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/share/ukrainian/errmsg.txt:
  New error message for queries in FUNCTIONs.
  Improved most of the SP error messages with added info.
sql/sp_head.cc:
  Added debug output to sp_instr_jump::execute(). (Moved from sp_head.h)
sql/sp_head.h:
  Moved sp_instr_jump::execute() to sp_head.cc.
sql/sql_lex.h:
  Added SQLCOM_CREATE_SPFUNCTION (for improved error handling).
sql/sql_parse.cc:
  Improved error handling regarding SPs (adding info like names etc in output).
sql/sql_yacc.yy:
  Improved error handling regarding SPs (adding info like names etc in output).
  Disabled queries in FUNCTIONS (since it can't work anyway).
2003-03-05 19:45:17 +01:00
unknown
f519382d2b New FUNCTION documentation, and a minor test case modification.
Docs/sp-imp-spec.txt:
  Updated docs about stored FUNCTIONs.
Docs/sp-implemented.txt:
  Updated docs about stored FUNCTIONs.
mysql-test/r/sp.result:
  Changed the ifac test example into a combination of a procedure and a function.
mysql-test/t/sp.test:
  Changed the ifac test example into a combination of a procedure and a function.
2003-03-03 15:03:19 +01:00
unknown
8a9422bd2a Made FUNCTIONs work in insert and select queries, as well as nested function invocations.
Had to add a cahing mechanism which is in parts an ugly kludge, but it will be
reworked once the real SP caching is implemented.


mysql-test/r/sp.result:
  New function tests.
mysql-test/t/sp.test:
  New function tests.
sql/sp.cc:
  Big rehack of mysql.proc table usage strategy and adding a function cache
  mechanism, since we need to read used functions from the db before doing anything else
  when executing a query. (This cache is temporary and will probably be replaced by
  the real thing later.)
sql/sp.h:
  New (temporary) FUNCTION caching functions.
sql/sp_head.cc:
  Fixed some bugs in the function and procedure execution.
  Disabled some data collections that's not used at the moment.
sql/sp_head.h:
  Fixed some bugs in the function and procedure execution.
  Disabled some data collections that's not used at the moment.
sql/sql_class.h:
  Added SP function cache list to thd.
sql/sql_lex.cc:
  Added SP function name list to lex.
sql/sql_lex.h:
  Added SP function name list to lex.
sql/sql_parse.cc:
  Read used FUNCTIONs from db and cache them in thd before doing anything else
  in a query execution. (This is necessary since we can't open mysql.proc during
  query execution.)
sql/sql_yacc.yy:
  Collect used function names in lex.
2003-03-02 19:17:41 +01:00
unknown
aecc6a21bd A small step forward. Fixed a few bugs and made string type functions work,
but still strange interferences between multiple function invocations...


mysql-test/r/sp.result:
  New FUNCTION tests.
mysql-test/t/sp.test:
  New FUNCTION tests.
sql/item_func.cc:
  Fixed field_type bug; now string functions work too.
  Removed unecessary function which was added in a state of confusion.
sql/item_func.h:
  Fixed field_type bug; now string functions work too.
  Removed unecessary function which was added in a state of confusion.
sql/sp_head.cc:
  Fixed string type bug, and set the right charset.
2003-02-27 19:08:52 +01:00
unknown
76b037dc42 Made stored FUNCTION invokation work almost always. Still buggy and unstable, and
various known problems, but good enough for a checkpoint commit.


mysql-test/r/sp.result:
  New tests for invoking simple FUNCTIONs.
mysql-test/t/sp.test:
  New tests for invoking simple FUNCTIONs.
sql/item_func.cc:
  New Item_func_sp for stored FUNCTIONs.
sql/item_func.h:
  New Item_func_sp for stored FUNCTIONs.
sql/sp.cc:
  Close mysql.proc table earlier so recursive find_function calls work.
  Added temporary sp_function_exists() function for checking without parsing.
sql/sp.h:
  Added temporary sp_function_exists() function for checking without parsing.
sql/sp_head.cc:
  New code for executing a FUNCTION. (And reworked some of the old code in the process.)
sql/sp_head.h:
  New code for executing a FUNCTION.
sql/sp_rcontext.h:
  Added result slot for FUNCTIONs.
sql/sql_lex.cc:
  Added check for stored FUNCTION, analogous to UDFs.
sql/sql_parse.cc:
  sp_head::execute was renamed into execute_procedure.
sql/sql_yacc.yy:
  Added parsing of stored FUNCTION invocation and code generation for RETURN statement.
2003-02-26 19:22:29 +01:00
unknown
0521fb5444 Most of the groundwork for sprint task 729 (implement FUNCTIONs).
Expanded the mysql.proc table, reworked the find/create/drop functions
completely, added new functions for FUNCTIONs (lotta functions here :),
got rid of some unnecessary use of Item_strings while at it. Extended
the parser correspondingly, and fiddled around a bit to make SP FUNCTIONs
coexist with UDFs.
Can now CREATE and DROP FUNCTIONs. Invoking yet to come...


Docs/sp-implemented.txt:
  Updated with info about CASCADE/RESTICT and METHOD, and some answers to questions.
include/mysqld_error.h:
  New error message for misuse of RETURN.
mysql-test/install_test_db.sh:
  Added enum field to mysql.proc to distinguish between FUNCTION and PROCEDURE.
mysql-test/r/sp.result:
  New test for creating and dropping FUNCTIONS.
mysql-test/t/sp.test:
  New test for creating and dropping FUNCTIONS.
scripts/mysql_install_db.sh:
  Added enum field to mysql.proc to distinguish between FUNCTION and PROCEDURE.
sql/lex.h:
  De-UDFed some symbol names, as they are now used for SPs as well.
  Added RETURN_SYM.
sql/share/czech/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/danish/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/dutch/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/english/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/estonian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/french/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/german/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/greek/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/hungarian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/italian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/japanese/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/korean/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/norwegian-ny/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/norwegian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/polish/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/portuguese/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/romanian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/russian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/serbian/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/slovak/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/spanish/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/swedish/errmsg.txt:
  New error message for misuse of RETURN.
sql/share/ukrainian/errmsg.txt:
  New error message for misuse of RETURN.
sql/sp.cc:
  Major rehack to accomodate FUNCTIONs, and to make it easier to add
  future in-memory cache of prepared SPs.
sql/sp.h:
  Major rehack to accomodate FUNCTIONs, and to make it easier to add
  future in-memory cache of prepared SPs.
sql/sp_head.cc:
  Now creates FUNCTIONs too. (And got rid of some unnecessary Item_string use.)
sql/sp_head.h:
  Now creates FUNCTIONs too. (And got rid of some unnecessary Item_string use.)
sql/sql_lex.h:
  New stored FUNCTION commands.
sql/sql_parse.cc:
  Added FUNCTION support ("drop" merged with the old UDF code), and made some
  additional changes for better error handling (following the sp.cc rehacking).
sql/sql_yacc.yy:
  Some former UDF specific symbols renamed.
  Added CREATE FUNCTION parsing.
  DROP FUNCTION had to be partly merged with the old UDF code, because of the similar
  syntax.
  RETURN statement added, but still a no-op.
2003-02-21 17:37:05 +01:00
unknown
3c88ebdc9d Fixed SELECT INTO OUTFILE/DUMPFILE and stored procedures, and extended and
reorganized the sp.test file.


mysql-test/r/sp.result:
  New results from the reorganized sp.test file.
mysql-test/t/sp.test:
  Reorganized the tests, and added a few new ones. ("fac" and more "select into")
sql/sql_class.cc:
  Unlock tables and set thd->lock=0 in select_export::send_eof() and
  select_dump::send_eof().
  This fixes a problem with an assert() in lock_tables(), and made
  SELECT ... INTO OUTFILE and ... INTO DUMPFILE work in stored procedures.
2003-02-19 12:42:32 +01:00
unknown
f8b7968e04 Added another select into test.
mysql-test/r/sp.result:
  Added another test for select into (mixed variable types), and made into_test
  independent of previous tests.
mysql-test/t/sp.test:
  Added another test for select into (mixed variable types), and made into_test
  independent of previous tests.
2003-02-02 17:41:21 +01:00
unknown
d2b6620621 Merge sinisa@work.mysql.com:/home/bk/mysql-5.0
into sinisa.nasamreza.org:/mnt/work/petica


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2003-01-28 14:44:13 +02:00
unknown
cbc7570665 Added check for selects without into in SPs, and updated error messages and tests
accordingly.


include/mysqld_error.h:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/czech/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/danish/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/dutch/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/english/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/estonian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/french/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/german/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/greek/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/hungarian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/italian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/japanese/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/korean/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/norwegian-ny/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/norwegian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/polish/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/portuguese/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/romanian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/russian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/serbian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/slovak/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/spanish/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/swedish/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
sql/share/ukrainian/errmsg.txt:
  Added bad select in SP error (and fixed leave/iterate label mismatch error).
mysql-test/r/sp.result:
  New test for repeat(...) and select with and without into in SPs.
mysql-test/t/sp.test:
  New test for repeat(...) and select with and without into in SPs.
sql/sql_yacc.yy:
  Check if an SP substatement is a SELECT and if so, has an INTO. If not, it's an
  error.
2003-01-23 14:00:32 +01:00
unknown
172dc5b371 solve the lex conflict between the existing repeat() function
and repeat SP-construction
2003-01-23 17:00:31 +04:00
unknown
6d5f7d1c4b Changing some proc names to a more suitable one. 2003-01-20 15:38:35 +02:00
unknown
69047e719a SELECT ... INTO local_vars ...;
For Stored Procedures
2003-01-18 18:21:13 +02:00
unknown
838303a731 Added the Stored Procedure tests.
Removed newly added, but now redundant, test file.



BitKeeper/deleted/.del-mysql_proc.result~63faae2f407c3fc2:
  Delete: mysql-test/r/mysql_proc.result
BitKeeper/deleted/.del-mysql_proc.test~8863f59cfc347469:
  Delete: mysql-test/t/mysql_proc.test
2003-01-17 14:38:05 +01:00