Commit graph

189 commits

Author SHA1 Message Date
unknown
fd4544879b Renamed the "schema" column to "db" in mysql.proc to keep it in style with
all the other mysql.* tables.
2003-12-16 19:14:10 +01:00
unknown
1d77c0412e Fixed various memory leaks.
sql/sp.cc:
  Fixed memory leaks. Deletion of sps now in sp_cache.
sql/sp_cache.cc:
  Fixed memory leaks. Use implicit delete of objects to make sure
  they're always freed.
sql/sp_cache.h:
  Fixed memory leaks. Use implicit delete of objects to make sure
  they're always freed.
sql/sp_head.cc:
  Fixed memory leaks. Make sure we use the right mem_root during parsing.
sql/sp_head.h:
  Fixed memory leaks. Make sure we use the right mem_root during parsing.
sql/sql_parse.cc:
  Fixed memory leaks. Don't forget to free the temporary object created at definition.
sql/sql_yacc.yy:
  Fixed memory leaks. Make sure we use the right mem_root during parsing.
2003-12-15 13:24:16 +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
8630ca9a09 Don't want host in the definer's column. 2003-12-12 14:12:38 +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
3702a1dbc4 WL#1363: Update the mysql.proc table and add new fields.
Also made the parsing and handling of SP characteristics
more general and extendable, and added a few ch:istics.


Docs/sp-imp-spec.txt:
  Updated spec with new schema.
Docs/sp-implemented.txt:
  Added info about ALTER and SHOW.
mysql-test/r/sp.result:
  Minor change in SHOW FUNCTION|PROCEDURE STATUS output.
scripts/mysql_create_system_tables.sh:
  New mysql.proc schema.
scripts/mysql_fix_privilege_tables.sql:
  New mysql.proc schema.
sql/lex.h:
  New lex words for SP characteristics.
sql/sp.cc:
  New mysql.proc schema.
  Also made the characteristics handling slightly more extendable.
sql/sp.h:
  Made the characteristics handling slightly more extendable.
sql/sp_head.cc:
  Made the characteristics handling slightly more extendable.
sql/sp_head.h:
  Made the characteristics handling slightly more extendable.
sql/sql_lex.h:
  Made the characteristics handling slightly more extendable.
sql/sql_parse.cc:
  Made the characteristics handling slightly more extendable.
sql/sql_yacc.yy:
  Made the characteristics handling slightly more extendable
  and made the parsing of characteristics more general, and
  added a few new dito. (LANGUAGE SQL, and [NOT] DETERMINISTIC
  for starters).
2003-12-10 19:05:37 +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
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
43289bef37 Added more error handling for abnormal cases (like a broken mysql.proc table).
sql/sp.cc:
  Added more error handling for abnormal cases (like a broken mysql.proc table),
  and made the field indexing clearer, using defines instead of explicit numbers.
2003-10-30 10:25:45 +01:00
unknown
7e8cc90a8b Bugfix of previous WL#1265 commit.
Need a sp_cache_remove() function with implicit name lookup to make the WL task
to work. It's a cleaner and more convenient interface anyway...


sql/sp.cc:
  Modified sp_cache_remove() function calls; just remove by name.
sql/sp_cache.cc:
  Modified sp_cache_remove() function. Get name and lookup/remove, return the
  removed entry, if any.
sql/sp_cache.h:
  Modified sp_cache_remove() function. Get name and lookup/remove, return the
  removed entry, if any.
2003-10-21 18:13:14 +02:00
unknown
562a04d593 WL#1265: Fix proper ALTER/DROP support in the SP cache.
New sp_cache C API. When an SP is dropped, old caches (in other threads)
become invalid and are cleared.
Also, the caches in THD are only created on demand.


Docs/sp-imp-spec.txt:
  Brough the SP cache docs up-to-date.
sql/mysqld.cc:
  Initialize SP cache.
sql/sp.cc:
  New C API for SP cache.
sql/sp_cache.cc:
  New C API for sp_cache.
  The class sp_cache is still used, but not directly. The C functions makes takes
  care of updating caches when SPs are dropped. (This is done in the simplest
  possible way, by simply detecting drops and then clear all old caches.)
  The API is also designed so that the sp_cache is created on demand.
sql/sp_cache.h:
  New C API for sp_cache.
  The class sp_cache is still used, but not directly. The C functions makes takes
  care of updating caches when SPs are dropped.
  The API is also designed so that the sp_cache is created on demand.
sql/sql_class.cc:
  The new sp_cache API creates the caches on demand, to avoid allocating it
  when it's not needed.
2003-10-21 12:08:35 +02:00
unknown
03042c7db4 Post-merge fixes. 2003-09-24 15:26:20 +02:00
unknown
c21755eb5f Fix bug in sp.cc:db_find_routine() which made tables remain open in some cases.
sql/sp.cc:
  Fix bug which made tables remain open in some cases.
2003-09-17 12:30:05 +02:00
unknown
2b16d5457b Merging 4.1 into 5.0 (second pass; post-merge fixes).
One test in subselect.test still wrong.
Had to reconstruct all errmsg.txt files completely, since auto-merge made
a mess of the lot. :-(


mysql-test/r/sp-error.result:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
mysql-test/r/subselect.result:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
  One test still wrong (different from 4.1), left for Sanja. :)
mysql-test/r/variables.result:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
mysql-test/t/sp-error.test:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
mysql-test/t/subselect.test:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
  One test still wrong (different from 4.1), left for Sanja :)
scripts/mysql_create_system_tables.sh:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/item.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/item_cmpfunc.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/item_subselect.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/item_sum.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/mysql_priv.h:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/mysqld.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/danish/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/dutch/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/english/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/estonian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/french/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/german/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/greek/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/hungarian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/italian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/japanese/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/korean/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/norwegian-ny/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/norwegian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/polish/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/portuguese/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/russian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/serbian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/slovak/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/spanish/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/swedish/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/share/ukrainian/errmsg.txt:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sp.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_base.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_cache.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_insert.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_parse.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_select.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
sql/sql_update.cc:
  Merging 4.1 into 5.0 (second pass; post-merge fixes).
2003-07-09 17:07:12 +02:00
unknown
a6b9cbd65c Fixed the old kludge for pre-loading functions and made it more efficient
using a hash table instead (and made it work with lex pointers).
Some additional code cleanup too.


sql/sp.cc:
  Fixed the old kludge for pre-loading functions and made it more efficient
  using a hash table instead (and made it work with lex pointers).
  Some additional cleanup of comments too.
sql/sp_head.h:
  Some additional code cleanup.
sql/sql_lex.cc:
  Use hash table for function pre-loading (isntead of list).
sql/sql_lex.h:
  Use hash table for function pre-loading (isntead of list).
2003-07-07 14:55:10 +02:00
unknown
f1c754efe9 Code cleanup (and moved sp cache to separate file). 2003-07-03 15:58:37 +02:00
unknown
8070c06ae0 SP cache (WL#730). (Mostly by vva, additions by pem.)
sql/sp.cc:
  In-memory cache added.
  sp_clear_function_cache() no longer needed.
sql/sp.h:
  In-memory cache added.
  sp_clear_function_cache() no longer needed.
sql/sql_class.cc:
  In-memory cache added.
sql/sql_class.h:
  In-memory cache added.
sql/sql_parse.cc:
  In-memory cache added.
  sp_clear_function_cache() no longer needed.
  Don't delete sp_heads after each use.
2003-07-01 18:14:24 +02:00
unknown
31a58c4068 Bugfixes for the sp_head memroot stuff.
sql/sp.cc:
  Bugfixes for the sp_head memroot stuff. (Do things in the correct order
  at error clean-up.)
sql/sp_head.cc:
  Bugfixes for the sp_head memroot stuff. Make sure everything goes to the
  right memroot. Need separate post-reset-memroot init in sp_head.
sql/sp_head.h:
  Need separate post-reset-memroot init method.
sql/sql_yacc.yy:
  Bugfixes for the sp_head memroot stuff. Make sure everything goes to the
  right memroot. Must do things in the correct order for this.
2003-07-01 17:19:48 +02:00
unknown
663ac86f6c sp_head now has its own mem_root (WL#961).
Also fixed some difficult memory leaks that became apparent
in this task.


sql/sp.cc:
  sp_head now has its own mem_root.
sql/sp_head.cc:
  sp_head now has its own mem_root.
  Also fixed some difficult memory leaks.
sql/sp_head.h:
  sp_head now has its own mem_root.
sql/sql_lex.h:
  Fixed some memory leaks in sp_head. Need to keep track on used lex:es.
sql/sql_parse.cc:
  sp_head now has its own mem_root.
  Fixed SP memory leaks.
sql/sql_prepare.cc:
  Fixed SP memory leaks.
sql/sql_yacc.yy:
  sp_head now has its own mem_root.
2003-06-29 18:15:17 +02:00
unknown
40f41ee1fc 'Expand the mysql.proc table to include (almost) all fields' task(851)
Fix after review
2003-06-02 14:25:01 +05: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
78c162ee22 Merge eagle.mysql.r18.ru:/home/vva/work/mysql.orig/clear/mysql-5.0
into eagle.mysql.r18.ru:/home/vva/work/LEX_PTR/mysql-5.0


sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2003-05-14 19:48:58 -04:00
unknown
fb5df27adf Expand the mysql.proc table 2003-05-06 21:09:20 +05:00
unknown
b9121cdea3 made lex a pointer in THD 2003-05-05 14:54:37 -04: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
fc448ccb7f Fixed the last memory leaks in the SP code.
sql/sp.cc:
  Fixed clear_function_cache bug that made memory freeing work for functions too.
sql/sp_head.cc:
  Added more DBUG output to help finding memory leak.
sql/sql_parse.cc:
  Moved sp_clear_function_cache call so it *works*.
  Added missing memory freeing call.
2003-04-03 20:00:52 +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
56106b024b ...and got rid of the strncasecmps too. 2003-03-27 17:47:25 +01:00
unknown
e9cc965afd Replaced a couple of strcasecmps. 2003-03-27 17:35:27 +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
1ff79b61a0 Closing tables during SP execution the proper way.
mysql-test/r/show_check.result:
  proc table now shows up in different places.
mysql-test/r/status.result:
  proc table now shows up in different places.
sql/sp.cc:
  Fixed closing of tables.
sql/sp_head.cc:
  Close tables after each sub statement.
sql/sql_class.cc:
  Removed closing of tables in various send_eof() methods again.
2003-02-28 15:07:14 +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
344c639b8b Post-merge fixes (adapting new SP code to 4.1 changes).
sql/sql_class.cc:
  Unlock tables after a SELECT INTO variables, or an assert() in lock_tables() fails.
  Note: This might be a problem with other SELECT variants too.
sql/sql_yacc.yy:
  Make all bison versions work (hopefully).
2003-02-18 19:58:03 +01:00
unknown
6cfaf04e4d Fixed some DBUGing, and optimized SET slightly.
sql/sp.cc:
  Added DBUG statements.
sql/sp_head.cc:
  Added DBUG statements.
sql/sql_parse.cc:
  Changed returns into DBUG_RETURNs in mysql_execute_command().
sql/sql_yacc.yy:
  Small optimization: Don't generate sp_instr_stmt instructions for empty
  SET_OPTIONs. (Which happened if there were only local variables in the SET
  statement.)
2003-02-12 16:17:03 +01:00
unknown
565d98958e Some new stuff in the Docs/sp-* files, and renamed a few functions in preparation
for future work.


Docs/sp-imp-spec.txt:
  Started on the FUNCTION parts...
Docs/sp-implemented.txt:
  Added som info on SET behaviour, and added Open questions.
sql/sp.cc:
  Renamed functions.
sql/sp.h:
  Renamed functions.
sql/sql_parse.cc:
  Renamed functions.
2003-02-04 17:40:18 +01:00
unknown
b1b6227485 Moved create/find/drop functions to a separate files (sp.cc,sp.h).
Fixed backpatching of forward jumps.
Implemented LOOP, WHILE, REPEAT (temporarily known as SPREPEAT).

Known bug: Expression evaluation still not quite ok (e.g. "x > 0"),
which is why IF and CASE is not yet implemented.


sql/Makefile.am:
  Added new sp.h/sp.cc file.
sql/item.h:
  New deferred result_type() method in Item_splocal.
sql/lex.h:
  Temporary fix until REPEAT conflict is solved. Use SPREPEAT for now.
sql/sp_head.cc:
  Moved create/find/drop functions to sp.cc.
  Fixed the backpatch stuff.
  (Also removed some dead code and updated comments.)
sql/sp_head.h:
  Moved create/find/drop declarations to sp.h.
  Fixed the backpatch stuff.
sql/sp_pcontext.h:
  New method: last_label().
sql/sql_parse.cc:
  Include sp.h.
sql/sql_yacc.yy:
  Fixed backpatching of forward jumps.
  Implemented LOOP, WHILE, and REPEAT. (Note: SPREPEAT for now.)
2002-12-12 13:14:23 +01:00