Commit graph

341 commits

Author SHA1 Message Date
anozdrin@mysql.com
0ff8f60b45 Patch for WL#2894: Make stored routine variables work
according to the standard.

The idea is to use Field-classes to implement stored routines
variables. Also, we should provide facade to Item-hierarchy
by Item_field class (it is necessary, since SRVs take part
in expressions).

The patch fixes the following bugs:
  - BUG#8702: Stored Procedures: No Error/Warning shown for inappropriate data 
    type matching; 
 
  - BUG#8768: Functions: For any unsigned data type, -ve values can be passed 
    and returned; 
 
  - BUG#8769: Functions: For Int datatypes, out of range values can be passed 
    and returned; 
 
  - BUG#9078: STORED PROCDURE: Decimal digits are not displayed when we use 
    DECIMAL datatype; 
 
  - BUG#9572: Stored procedures: variable type declarations ignored; 
 
  - BUG#12903: upper function does not work inside a function; 
 
  - BUG#13705: parameters to stored procedures are not verified; 
 
  - BUG#13808: ENUM type stored procedure parameter accepts non-enumerated
    data; 
 
  - BUG#13909: Varchar Stored Procedure Parameter always BINARY string (ignores 
    CHARACTER SET); 
 
  - BUG#14161: Stored procedure cannot retrieve bigint unsigned;

  - BUG#14188: BINARY variables have no 0x00 padding;

  - BUG#15148: Stored procedure variables accept non-scalar values;
2005-12-07 17:01:17 +03:00
dlenev@mysql.com
b5e21b60d9 Merge mysqldev@production.mysql.com:my/mysql-5.0-release
into  mysql.com:/home/dlenev/src/mysql-5.0-bg11555-2
2005-12-07 14:38:20 +03:00
dlenev@mysql.com
40614adf66 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/dlenev/src/mysql-5.0-bg11555-2
2005-12-07 12:47:25 +03:00
dlenev@mysql.com
06b895c096 Fix for bug #11555 "Stored procedures: current SP tables locking make
impossible view security".

We should not expose names of tables which are explicitly or implicitly (via
routine or trigger) used by view even if we find that they are missing.
So during building of list of prelocked tables for statement we track which
routines (and therefore tables for these routines) are used from views. We
mark elements of LEX::routines set which correspond to routines used in views
by setting Sroutine_hash_entry::belong_to_view member to point to TABLE_LIST
object for topmost view which uses routine. We propagate this mark to all
routines which are used by this routine and which we add to this set. We also
mark tables used by such routine which we add to the list of tables for
prelocking as belonging to this view.
2005-12-07 12:27:17 +03:00
serg@serg.mylan
e4821e3e9d merged 2005-12-07 08:50:14 +01:00
konstantin@mysql.com
712385568f A fix and a test case for Bug#15392 "Server crashes during
prepared statement execute
2005-12-07 00:57:15 +03:00
serg@serg.mylan
6b5320d617 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
2005-12-05 18:18:56 +01:00
serg@serg.mylan
9c0a8bbd17 this has nothing to do with the bug#13012.
it's about mysql_admin_commands not being reexecution-safe
(and CHECK still isn't)
2005-12-03 15:02:09 +01:00
serg@serg.mylan
b3b72c6329 Bug#13012: REPAIR/BACKUP/RESTORE TABLE cause "packet out of order" in SP.
Mark them properly as result-returning statements
2005-12-02 22:59:45 +01:00
bell@sanja.is.com.ua
b1f0e78146 Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug1-5.0
into  sanja.is.com.ua:/home/bell/mysql/bk/work-merge1-5.0
2005-12-02 21:20:25 +02:00
bell@sanja.is.com.ua
45e59f3d76 Now we shall store only position (index of first character)
of SELECT from query begining, to be independet of query buffer
allocation.
Correct procedure used to find beginning of the current statement
during parsing (BUG#14885).
2005-12-02 21:18:12 +02:00
ramil@mysql.com
37cfade0b4 Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select). 2005-12-01 14:26:46 +04:00
pem@mysql.com
df553710df Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/usr/home/pem/bug14643/mysql-5.0
2005-11-28 13:20:15 +01:00
bell@sanja.is.com.ua
db8f03ebe8 Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug7-5.0
into  sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
2005-11-23 01:28:32 +02:00
bell@sanja.is.com.ua
7bd691f11e Recursion support made for SP (BUG#10100). 2005-11-23 01:11:19 +02:00
bell@sanja.is.com.ua
7d2442a160 Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug2-5.0
into  sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
2005-11-23 00:58:13 +02:00
bell@sanja.is.com.ua
2bcd68973b Fix for BUG#13549 "Server crash with nested stored procedures
if inner routine has more local variables than outer one, and
one of its last variables was used as argument to NOT operator".

THD::spcont was non-0 when we were parsing stored routine/trigger
definition during execution of another stored routine. This confused
methods of Item_splocal and forced them use wrong runtime context.
Fix ensures that we always have THD::spcont equal to zero during
routine/trigger body parsing. This also allows to avoid problems
with errors which occur during parsing and SQL exception handlers.
2005-11-23 00:50:37 +02:00
pem@mysql.com
6c2f6e29b9 Post-merge fixes in sp_head.cc (print methods). 2005-11-22 14:25:44 +01:00
pem@mysql.com
d71d1242ff Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/usr/home/pem/show-sp-code/mysql-5.0
2005-11-22 13:24:53 +01:00
pem@mysql.com
962d2df6b0 Some final cleanup of the sp_instr print methods. 2005-11-22 13:06:52 +01:00
bell@sanja.is.com.ua
7f162c7899 Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug1-5.0
into  sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
2005-11-21 21:15:48 +02:00
bell@sanja.is.com.ua
806f9e24ff Inefficient usage of String::append() fixed.
Bad examples of usage of a string with its length fixed.
The incorrect length in the trigger file configuration descriptor
  fixed (BUG#14090).
A hook for unknown keys added to the parser to support old .TRG files.
2005-11-20 20:47:07 +02:00
pem@mysql.com
3a832faafe Post-review fixes, mainly fixing all print() methods for sp_instr* classes.
Also added mysql-test files:
 include/is_debug_build.inc
 r/is_debug_build.require
 r/sp-code.result
 t/sp-code.test
2005-11-18 16:30:27 +01:00
pem@mysql.com
c518a2405f Background:
Since long, the compiled code of stored routines has been printed in the trace file
when starting mysqld with the "--debug" flag. (At creation time only, and only in
debug builds of course.) This has been helpful when debugging stored procedure
execution, but it's a bit awkward to use. Also, the printing of some of the
instructions is a bit terse, in particular for sp_instr_stmt where only the command
code was printed.

This improves the printout of several of the instructions, and adds the debugging-
only commands "show procedure code <name>" and "show function code <name>".
(In non-debug builds they are not available.)
2005-11-17 11:11:48 +01:00
dlenev@mysql.com
63fcccb193 Fix for bug #13399 Crash when executing PS/SP which should activate trigger
which is now dropped" and bug #12329 "Bogus error msg when executing PS with
stored procedure after SP was re-created".
2005-11-17 03:51:14 +03:00
bell@sanja.is.com.ua
a60a6b0f7f Issuing error about presence of commit/rollback statements in stored functions and triggers added to SP parsing procedure (BUG#13627)
The crash mentioned in original bug report is already prevented by one
of previous patches (fix for bug #13343 "CREATE|etc TRIGGER|VIEW|USER
don't commit the transaction (inconsistency)"), this patch only improve
error returning.
2005-11-16 14:09:06 +02:00
pem@mysql.com
b607fdb04d Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/usr/home/pem/bug14723/mysql-5.0
2005-11-11 18:12:40 +01:00
pem@mysql.com
7d134961df Fixed BUG#14723: Dumping of stored functions seems to cause corruption
in the function body
  Changed the way the end of query was found from the lex state.
  The routine body was not extracted correctly when using the
  /*!version ... */ wrapper (in dump files); for some types of routines
  (e.g. with a label at the first begin), the trailing "*/" was not skipped.
2005-11-11 11:10:52 +01:00
anozdrin@mysql.com
491e4f89f5 WL#2818 (Add creator to the trigger definition for privilege
checks on trigger activation)
2005-11-10 22:25:03 +03:00
pem@mysql.com
718f837410 Fixed BUG#14643: Stored Procedure: Continuing after failed var.
initialization crashes server.
  Make sure variables are initialized to something (like null) when
  the default initialization fails and a continue handler is in effect.
2005-11-08 14:47:33 +01:00
pem@mysql.com
58db54364f Fixed BUG#14498: Stored procedures: hang if undefined variable and exception
The problem was to continue at the right place in the code after the
  test expression in a flow control statement fails with an exception
  (internally, the test in sp_instr_jump_if_not), and the exception is
  caught by a continue handler. Execution must then be resumed after the
  the entire flow control statement (END IF, END WHILE, etc).
2005-11-04 15:37:39 +01:00
pem@mysql.com
c865f491ef Post-review fix. 2005-10-21 13:08:00 +02:00
pem@mysql.com
ca5e435f82 Fixed BUG#13941: replace() string fuction behaves badly inside stored
procedure
  For some functions returning strings (like "replace" and "ifnull" - where
  val_str() is returning a pointer into one of the parameters) - we ended
  up with a dangling pointer after the new operator destroyed the reuse item
  in the eval function.
  A working, if not very elegant, solution is to simply copy the string in
  such cases.
2005-10-19 14:54:54 +02:00
pem@mysql.com
ddc36a2784 Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/home/pem/work/bug7049/mysql-5.0
2005-10-17 15:12:38 +02:00
dlenev@mysql.com
cfc5adaf13 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/dlenev/src/mysql-5.0-repl
2005-10-12 23:45:14 +04:00
dlenev@mysql.com
3ee7382703 Temporary solution for bug #13969 "Routines which are replicated from master
can't be executed on slave". It will be possible to solve this problem
in more correct way when we will implement WL#2897 "Complete definer support
in the stored routines".
2005-10-12 23:42:51 +04:00
pem@mysql.com
6a88684eb3 Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/home/pem/work/bug7049/mysql-5.0
2005-10-12 16:39:39 +02:00
pem@mysql.com
b9b8349b3a Merge mysql.com:/usr/local/bk/mysql-5.0
into  mysql.com:/usr/home/pem/bug13616/mysql-5.0
2005-10-12 11:52:37 +02:00
monty@mysql.com
5513ab69b7 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0
2005-10-12 00:59:52 +03:00
monty@mysql.com
17d7ba931d Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0
2005-10-08 03:37:23 +03:00
jimw@mysql.com
4a893c96e3 Fix use of "%*s" *printf() specifiers that were really meant to be
"%.*s". (Bug #13650)
2005-10-06 17:37:24 -07:00
monty@mysql.com
78e828d32f Review of code pushed since last 5.0 pull:
Ensure that ccache is also used for C programs
mysql: Ensure that 'delimiter' works the same way in batch mode as in normal mode
mysqldump: Change to use ;; (instead of //) as a stored procedure/trigger delimiter
Fixed test cases by adding missing DROP's and rename views to be of type 'v#'
Removed MY_UNIX_PATH from fn_format()
Removed current_db_used from TABLE_LIST
Removed usage of 'current_thd' in Item_splocal
Removed some compiler warnings
A bit faster longlong2str code
2005-10-06 17:54:43 +03:00
pem@mysql.com
5640d19432 Fixed BUG#13616: "CALL <dbname>.<procedurename>" executes properly, but
displays error
    When returning to the old database (which may be ""), don't do
    access check - mysql_change_db() would then generate the error
    "No database selected".
    Note: No test case added; it seems a db is always selected when running
    tests.
2005-10-05 16:39:37 +02:00
pem@mysql.com
6a84506af7 Fixed BUG#7049: Stored procedure CALL errors are ignored
Search the chain of sp_rcontexts recursively for handlers. If one is found,
  it will be detected in the sp_head::execute() method at the corresponding
  level.
2005-09-26 18:46:31 +02:00
pem@mysql.com
6ac4c47f7b Fixed BUG#6127: Stored procedure handlers within handlers don't work
Replaced the dumb in-handler/not-in-handler check with a proper recursion
    check of handlers being executed.
    (Re-commit in a different tree, to make push possible.)
2005-09-26 18:22:00 +02:00
konstantin@mysql.com
2d4c54ba1b Merge mysqldev@production.mysql.com:my/mysql-5.0-release
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-09-23 00:46:59 +04:00
konstantin@mysql.com
6f8d3c4844 A fix and a test case for Bug#6513 "Test Suite: Values inserted by using
cursor is interpreted latin1 character and Bug#9819 "Cursors: Mysql Server
Crash while fetching from table with 5 million records."
A fix for a possible memory leak when fetching into an SP cursor
in a long loop.
The patch uses a common implementation of cursors in the binary protocol and 
in stored procedures and implements materialized cursors.
For implementation details, see comments in sql_cursor.cc
2005-09-22 02:11:21 +04:00
bell@sanja.is.com.ua
c1b185f5ff WL#2787 (Add view definer/owner to the view definition (.frm) to check privileges on used tables and stored routines when using a VIEW.)
Part 2 postreview fixes.
2005-09-20 21:20:38 +03:00
bell@sanja.is.com.ua
aec371f910 WL#2787 (part 2, ver 3 (merged)) changed securety context switching 2005-09-15 22:29:07 +03:00
dlenev@mysql.com
2a96aa110f Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/dlenev/src/mysql-5.0-bg12704-2
2005-09-15 03:57:59 +04:00