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;
mysql-test/r/ctype_ujis.result:
Explicitly specify correct charset.
mysql-test/r/schema.result:
Drop our test database to not affect this test if some test
left it cause of failure.
mysql-test/r/show_check.result:
Drop our test database to not affect this test if some test
left it cause of failure.
mysql-test/r/skip_name_resolve.result:
Ignore columns with unpredictable values.
mysql-test/r/sp-big.result:
Add cleanup statement.
mysql-test/r/sp-dynamic.result:
Add cleanup statements.
mysql-test/r/sp.result:
Update result file.
mysql-test/r/sum_distinct-big.result:
Update result file.
mysql-test/r/type_newdecimal-big.result:
Update result file.
mysql-test/t/ctype_ujis.test:
Explicitly specify correct charset.
mysql-test/t/schema.test:
Drop our test database to not affect this test if some test
left it cause of failure.
mysql-test/t/show_check.test:
Drop our test database to not affect this test if some test
left it cause of failure.
mysql-test/t/skip_name_resolve.test:
Ignore columns with unpredictable values.
mysql-test/t/sp-big.test:
Add cleanup statement.
mysql-test/t/sp-dynamic.test:
Add cleanup statements.
mysql-test/t/sp.test:
Non-scalar values prohibited for assignment to SP-vars;
polishing.
mysql-test/t/type_newdecimal-big.test:
Update type specification so that the variables
can contain the large values used in the test.
sql/field.cc:
Extract create_field::init() to initialize an existing
instance of create_field from new_create_field().
sql/field.h:
Extract create_field::init() to initialize an existing
instance of create_field from new_create_field().
sql/item.cc:
- Introduce a new class: Item_sp_variable -- a base class
of stored-routine-variables classes;
- Introduce Item_case_expr -- an Item, which is used to access
to the expression of CASE statement;
sql/item.h:
- Introduce a new class: Item_sp_variable -- a base class
of stored-routine-variables classes;
- Introduce Item_case_expr -- an Item, which is used to access
to the expression of CASE statement;
sql/item_func.cc:
Pass the Field (instead of Item) for the return value of
a function to the function execution routine.
sql/item_func.h:
Pass the Field (instead of Item) for the return value of
a function to the function execution routine.
sql/mysql_priv.h:
Move create_virtual_tmp_table() out of sql_select.h.
sql/sp.cc:
Use create_result_field() instead of make_field().
sql/sp_head.cc:
- Add a function to map enum_field_types to Item::Type;
- Add sp_instr_push_case_expr instruction -- an instruction
to push CASE expression into the active running context;
- Add sp_instr_pop_case_expr instruction -- an instruction
to pop CASE expression from the active running context;
- Adapt the SP-execution code to using Fields instead of Items
for SP-vars;
- Use create_field structure for field description instead of
a set of members.
sql/sp_head.h:
- Add a function to map enum_field_types to Item::Type;
- Add sp_instr_push_case_expr instruction -- an instruction
to push CASE expression into the active running context;
- Add sp_instr_pop_case_expr instruction -- an instruction
to pop CASE expression from the active running context;
- Adapt the SP-execution code to using Fields instead of Items
for SP-vars;
- Use create_field structure for field description instead of
a set of members.
sql/sp_pcontext.cc:
- Change rules to assign an index of SP-variable: use
transparent index;
- Add an operation to retrieve a list of defined SP-vars
from the processing context recursively.
sql/sp_pcontext.h:
- Change rules to assign an index of SP-variable: use
transparent index;
- Add an operation to retrieve a list of defined SP-vars
from the processing context recursively.
sql/sp_rcontext.cc:
- Change rules to assign an index of SP-variable: use
transparent index;
- Use a tmp virtual table to store SP-vars instead of Items;
- Provide operations to work with CASE expresion.
sql/sp_rcontext.h:
- Change rules to assign an index of SP-variable: use
transparent index;
- Use a tmp virtual table to store SP-vars instead of Items;
- Provide operations to work with CASE expresion.
sql/sql_class.cc:
- Reflect Item_splocal ctor changes;
- Item_splocal::get_offset() has been renamed to get_var_idx().
sql/sql_class.h:
Polishing.
sql/sql_parse.cc:
Extract create_field::init() to initialize an existing
instance of create_field from new_create_field().
sql/sql_select.cc:
Take care of BLOB columns in create_virtual_tmp_table().
sql/sql_select.h:
Move create_virtual_tmp_table() out of sql_select.h.
sql/sql_trigger.cc:
Use boolean constants for boolean type instead of numerical ones.
sql/sql_yacc.yy:
Provide an instance of create_field for each SP-var.
mysql-test/include/sp-vars.inc:
The definitions of common-procedures, which are created
under different circumstances.
mysql-test/r/sp-vars.result:
Result file for the SP-vars test.
mysql-test/sp-vars.test:
A new test for checking SP-vars functionality.
into mysql.com:/home/jimw/my/mysql-5.1-clean
mysql-test/r/sp.result:
Auto merged
sql/field.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/innobase/btr/btr0sea.c:
Auto merged
storage/innobase/dict/dict0dict.c:
Auto merged
storage/innobase/dict/dict0load.c:
Auto merged
storage/innobase/include/buf0buf.h:
Auto merged
storage/innobase/include/dict0dict.h:
Auto merged
storage/innobase/include/dict0load.h:
Auto merged
storage/innobase/include/rem0cmp.h:
Auto merged
storage/innobase/rem/rem0cmp.c:
Auto merged
storage/innobase/row/row0mysql.c:
Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
Auto merged
mysql-test/r/innodb.result:
Resolve conflicts
sql/share/errmsg.txt:
Resolve conflict
prepared statement execute
mysql-test/r/sp.result:
Test results fixed: a fix for Bug#15392
mysql-test/t/sp.test:
A test case for Bug#15392 "Server crashes during prepared
statement execute". No test case for error in
Item_func_set_user_var::update as the only possible one is OOM.
sql/sp_head.cc:
A fix for Bug#15392 "Server crashes during prepared statement
execute": the bug was caused by mysql_change_db() call
which was overwriting the error state of 'ret'.
Later in the code, suv->fix_fields() would discover
thd->net.report_error and return it without completing
its work. As the return value of fix_fields() was ignored,
the server would afterwards crash in suv->update().
The fix makes sure that a possible internal error
is raised in reset_lex_and_exec_core and then is
handled in sp_head::execute_procedure.
it's about mysql_admin_commands not being reexecution-safe
(and CHECK still isn't)
mysql-test/r/sp-error.result:
optimize is now allowed in SP
mysql-test/r/sp.result:
test repair/optimize/analyze in SP
mysql-test/t/backup.test:
clean up after itself
mysql-test/t/sp-error.test:
optimize is now allowed in SP
mysql-test/t/sp.test:
test repair/optimize/analyze in SP
sql/sp_head.cc:
all mysql_admin commands return result set
sql/sql_parse.cc:
all mysql_admin commands modify table list and we should restore it for SP
sql/sql_table.cc:
optimization - don't execute views when no view is expected/allowed
sql/sql_yacc.yy:
optimize is now allowed in SP
into sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.1
configure.in:
Auto merged
mysql-test/r/query_cache.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/sql_cache.cc:
merge
sql/sql_lex.h:
merge
into mysql.com:/usr/home/pem/mysql-5.1-new
mysql-test/r/sp.result:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
-issue more correct message for incorrect date|datetime|time values
-ER_WARN_DATA_OUT_OF_RANGE message is changed
-added new error message
mysql-test/r/auto_increment.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/bigint.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ctype_ucs.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/date_formats.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/func_sapdb.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/func_str.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/func_time.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/insert.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/loaddata.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/mysqldump.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_2myisam.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_3innodb.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_4heap.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_5merge.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_6bdb.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/ps_7ndb.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/rpl_rewrite_db.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/sp.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/strict.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/timezone2.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/timezone_grant.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_bit.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_bit_innodb.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_date.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_datetime.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_decimal.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_float.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_newdecimal.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_ranges.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_time.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/type_uint.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/view.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
mysql-test/r/warnings.result:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
result change
sql/share/errmsg.txt:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
-ER_WARN_DATA_OUT_OF_RANGE message is changed
-added new error message
sql/time.cc:
Fix for bug#8294 Traditional: Misleading error message for invalid CAST to DATE
issue more correct message for incorrect date|datetime|time values
sql/sp_head.cc:
Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select).
- call thd->cleanup_after_query() to clean next_insert_id.
sql/sql_class.cc:
Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select).
- save/restore clear_next_insert_id
sql/sql_class.h:
Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select).
- clear_next_insert_id added
earlier because of various features/checks missing (these features/checks
are now implemented).
mysql-test/r/sp.result:
Enabled back bunch of tests which were previously disabled because of various
features/checks missing (since these features/checks are now implemented).
mysql-test/t/sp.test:
Enabled back bunch of tests which were previously disabled because of various
features/checks missing (since these features/checks are now implemented).
Don't set thd->is_fatal_error in sql_update for duplicate key errors.
mysql-test/r/sp.result:
New test case for BUG#13729.
mysql-test/r/sp_trans.result:
New test case for BUG#14840.
mysql-test/t/sp.test:
New test case for BUG#13729.
mysql-test/t/sp_trans.test:
New test case for BUG#14840.
sql/sql_update.cc:
Don't set thd->is_fatal_error if it's a duplicate key error.
into sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
mysql-test/r/sp-error.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/sp-error.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
mysql-test/r/sp.result:
merge
sql/share/errmsg.txt:
merge
client/mysqltest.c:
An expected error messages hiding from the log if disable_result_log is in force.
mysql-test/r/sp-dynamic.result:
The test expanded for case of allowed/disalowed recursion.
mysql-test/r/sp-error.result:
Error messages changed.
Test of bug11394() made with allowed recursion.
mysql-test/r/sp.result:
Tests for recursion.
mysql-test/r/trigger.result:
Check that triggers are not affected by this patch.
mysql-test/r/variables.result:
Test of max_sp_recursion_depth variable.
mysql-test/t/sp-dynamic.test:
The test expanded for case of allowed/disalowed recursion.
mysql-test/t/sp-error.test:
Error messages changed.
Test of bug11394() made with allowed recursion.
mysql-test/t/sp.test:
Tests for recursion.
mysql-test/t/trigger.test:
Check that triggers are not affected by this patch.
mysql-test/t/variables.test:
Test of max_sp_recursion_depth variable.
sql/item_func.cc:
sp_find_function() and sp_find_procedure() joined to sp_find_routine()
function as it was mentioned in TODO.
sql/mysqld.cc:
max_sp_recursion_depth variable added.
sql/set_var.cc:
max_sp_recursion_depth variable added.
sql/share/errmsg.txt:
An error message changed.
An error message added.
sql/sp.cc:
sp_find_function() and sp_find_procedure() joined to sp_find_routine()
function as it was mentioned in TODO.
Temory LEX is allocated on a stack, not on a heap.
Recursion support added for stored procedures.
sql/sp.h:
sp_find_function() and sp_find_procedure() joined to sp_find_routine()
function as it was mentioned in TODO.
sql/sp_head.cc:
Initialization of new sp_head fields to get correct list of instances
contained one instance only.
Stack requirement for SP instruction is increased.
Stack free space is checked before mem root initialisation to avoid
memory leak.
Pointer to the free instance management added before and after
SP execution.
sql/sp_head.h:
New sp_head variables added to support inst of instances of SP
for recursion and pointer on ths first free to use instance.
sql/sql_base.cc:
open_table() consume a lot of stack space so we check free stack space before it.
sql/sql_class.h:
max_sp_recursion_depth variable added.
sql/sql_parse.cc:
sp_find_function() and sp_find_procedure() joined to sp_find_routine()
function as it was mentioned in TODO.
into sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.0
sql/item.h:
Auto merged
sql/protocol.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/sp.result:
merge
mysql-test/r/trigger.result:
merge
mysql-test/t/sp.test:
merge
mysql-test/t/trigger.test:
merge
sql/item.cc:
merge
sql/sp_rcontext.h:
merge
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.
mysql-test/r/sp.result:
Test suite for bug#13549.
mysql-test/r/trigger.result:
Test suite for bug#13549.
mysql-test/t/sp.test:
Test suite for bug#13549.
mysql-test/t/trigger.test:
Test suite for bug#13549.
sql/item.cc:
Protection against using wrong context by SP local variable.
sql/item.h:
Protection against using wrong context by SP local variable.
sql/protocol.cc:
An incorrect macro name fixed.
sql/protocol.h:
An incorrect macro name fixed.
sql/sp.cc:
Do not allow SP which we are parsing to use other SP
context (BUG#13549).
sql/sp_head.cc:
Protection against using wrong context by SP local variable.
sql/sp_rcontext.h:
Protection against using wrong context by SP local variable.
sql/sql_cache.h:
An incorrect macro name fixed.
sql/sql_class.cc:
Protection against using wrong context by SP local variable.
sql/sql_class.h:
Protection against using wrong context by SP local variable.
sql/sql_trigger.cc:
Do not allow Trigger which we are parsing to use
other SP context (BUG#13549).
sql/sql_yacc.yy:
Protection against using wrong context by SP local variable.
when COUNT(*) is 0". The bug itself cannot be repeated.
mysql-test/r/sp.result:
Test results were fixed (Bug#14845)
mysql-test/t/sp.test:
An SQL language test case for Bug#14845
tests/mysql_client_test.c:
A test case for Bug#14845
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.
mysql-test/r/sp.result:
New test case for BUG#14723.
mysql-test/t/sp.test:
New test case for BUG#14723.
sql/sp_head.cc:
Changed the way the end of the definition and body is found from the lex state.
In the case of /*!version */ wrappers we must take the trailing " */" into account.
initialization crashes server.
Make sure variables are initialized to something (like null) when
the default initialization fails and a continue handler is in effect.
mysql-test/r/sp.result:
New test case for BUG#14643.
mysql-test/t/sp.test:
New test case for BUG#14643.
sql/sp_head.cc:
Make sure variables are initialized to something (like null) when
the default initialization fails and a continue handler is in effect.
If this also fails (out of memory), we have to abort without letting
the handler catch.
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).
mysql-test/r/sp.result:
New test case for BUG#14498.
mysql-test/t/sp.test:
New test case for BUG#14498.
(Note that one call is disabled at the moment. Depends on BUG#14643.)
sql/sp_head.cc:
Added a continuation destination for sp_instr_jump_if_not, for the case when
an error in the test expression causes a continue handler to catch.
This includes new members in sp_instr_jump_if_not, adjustment of the optmizer
(mark and move methods), and separate backpatching code (since we can't use
the normal one for this).
Also removed the class sp_instr_jump, since it's never used.
...and added some comments to the optimizer.
sql/sp_head.h:
Added a continuation destination for sp_instr_jump_if_not, for the case when
an error in the test expression causes a continue handler to catch.
This includes new members in sp_instr_jump_if_not, adjustment of the optmizer
(mark and move methods), and separate backpatching code (since we can't use
the normal one for this).
Also removed the class sp_instr_jump, since it's never used.
sql/sql_yacc.yy:
Added backpatching of the continue destination for all conditional statements
(using sp_instr_jump_if_not).
large table gives server crash": make sure that when a MyISAM temporary
table is created for a cursor, it's created in its memory root,
not the memory root of the current query.
mysql-test/r/sp.result:
Test results fixed: a test case for Bug#14210
mysql-test/t/sp.test:
A test case for Bug#14210 "Simple query with > operator on large table
gives server crash"
sql/handler.cc:
- rewrite get_new_handler to accept a memory root and use it for
sql/handler.h:
- get_new_handler declaration changed
sql/opt_range.cc:
- get_new_handler declaration changed
sql/sql_base.cc:
- get_new_handler declaration changed
sql/sql_select.cc:
- the actual fix for Bug#14210. In create_myisam_from_heap we should
create the new table handler in TABLE::mem_root, not in THD::mem_root:
the latter is freed shortly after cursor is open.
- adjust create_tmp_table to explicitly supply &table->mem_root
to get_new_handler when creating a handler for a new temporary table
sql/sql_table.cc:
- get_new_handler declaration changed
sql/table.cc:
- get_new_handler declaration changed
sql/unireg.cc:
- get_new_handler declaration changed
tests/mysql_client_test.c:
A test case for Bug#14210 "Simple query with > operator on large table
gives server crash": a C API test case is worth adding because of different
memory allocation/freeing patterns in handling of C API and SP cursors
Added finer scope control for default clauses of local variable
declarations.
mysql-test/r/sp.result:
New test case for BUG#14376.
mysql-test/t/sp.test:
New test case for BUG#14376.
sql/sp_pcontext.cc:
Added boundary variable for local parameters/variables,
for better scope control of default values.
sql/sp_pcontext.h:
Added boundary variable for local parameters/variables,
for better scope control of default values.
sql/sql_yacc.yy:
Make the variables of the current DECLARE "invisible" to its DEFAULT clause.
into sanja.is.com.ua:/home/bell/mysql/bk/work-owner7-5.0
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_view.cc:
Auto merged
mysql-test/r/information_schema.result:
error message changed
mysql-test/r/sp.result:
error message changed
mysql-test/r/sql_mode.result:
fixed test suite
mysql-test/r/view.result:
error message changed
mysql-test/r/view_grant.result:
test of underlying view tables check
mysql-test/t/sql_mode.test:
fixed test suite
mysql-test/t/view_grant.test:
test of underlying view tables check
sql/item.cc:
check of underlying tables privilege added
sql/item.h:
Name the resolution context points to the security context of view (if item belong to the view)
sql/item_func.cc:
a view error hiding for execution of prepared function belonged to a view
fixed checking privileges if stored functions belonds to some view
sql/mysql_priv.h:
refult of derived table processing functions changed to bool
Security_context added as an argument to find_field_in_table()
sql/share/errmsg.txt:
error message fixed
sql/sql_acl.cc:
Storing requested privileges of tables added
View underlying tables privilege check added
sql/sql_base.cc:
View underlying tables privilege check added
sql/sql_cache.cc:
Code cleunup: we should not register underlying tables of view second time
sql/sql_delete.cc:
ancestor -> merge_underlying_list renaming
sql/sql_derived.cc:
refult of derived table processing functions changed to bool
do not give SELECT_ACL for TEMPTABLE views
sql/sql_lex.h:
The comment added
sql/sql_parse.cc:
registration of requested privileges added
sql/sql_prepare.cc:
registration of requested privileges added
sql/sql_update.cc:
manipulation of requested privileges for underlying tables made the same as for table which we are updating
sql/sql_view.cc:
underlying tables of view security check support added
sql/table.cc:
renaming and fixing view preparation methods, methods for checking underlyoing tables security context added
sql/table.h:
storege for reuested privileges added
- allow CREATE VIEW as well as DROP VIEW to use in prepared statements;
- fix CREATE VIEW implementation to make it work in prepared statements.
mysql-test/r/sp.result:
Results file for the test case for BUG#13095.
mysql-test/t/sp.test:
Test case for BUG#13095.
sql/sql_lex.h:
Added a variable to remember start of whole CREATE VIEW statement
as well as start of its SELECT part.
sql/sql_prepare.cc:
Allow CREATE VIEW and DROP VIEW to use in prepared statements.
sql/sql_view.cc:
Use stored start of whole CREATE VIEW statement instead of thd->query,
which differs from the original when prepared statement is executing.
sql/sql_yacc.yy:
Remember start of whole CREATE VIEW statement as well as start of its
SELECT part.
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.
mysql-test/r/sp.result:
New test case for BUG#13941.
mysql-test/t/sp.test:
New test case for BUG#13941.
sql/sp_head.cc:
Copy the string when evaluating some string functions (e.g. "replace" and "ifnull")
to avoid using a dangling pointer.
into mysql.com:/home/pem/work/bug7049/mysql-5.0
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
Make sure "select" aborts when finding a SP condition handler beyond the current scope.
mysql-test/r/sp.result:
Updated test results after fixing error handling in select.
sql/mysqld.cc:
Make sure "select" aborts when finding a SP condition handler beyond the current scope.
sql/protocol.cc:
Make sure "select" aborts when finding a SP condition handler beyond the current scope.
sql/sp_rcontext.h:
Added method for checking if the handler was found in the current context.
sql/sql_error.cc:
Make sure "select" aborts when finding a SP condition handler beyond the current scope.
Test for bug#12812 moved from sp.test to sp-security.test
mysql-test/t/sp.test:
Test for bug#12812 moved from sp.test to sp-security.test
mysql-test/t/sp-security.test:
Test for bug#12812 moved from sp.test to sp-security.test
mysql-test/r/sp.result:
Test for bug#12812 moved from sp.test to sp-security.test
mysql-test/r/sp-security.result:
Test for bug#12812 moved from sp.test to sp-security.test
procedure variable
Second version, after review.
Keep the unsigned_flag in Item_decimal updated. Note that this also changed
the result of several old test results - creating tables from decimal
templates now gives unsigned columns and different sizes. (Several tests
had Length > Max_length before.)
mysql-test/r/case.result:
Updated result (after fixing BUG#12589).
mysql-test/r/metadata.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_2myisam.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_3innodb.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_4heap.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_5merge.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_6bdb.result:
Updated result (after fixing BUG#12589).
mysql-test/r/ps_7ndb.result:
Updated result (after fixing BUG#12589).
mysql-test/r/sp.result:
New test case for BUG#12589.
mysql-test/r/type_newdecimal.result:
Updated result (after fixing BUG#12589).
mysql-test/t/sp.test:
New test case for BUG#12589.
sql/item.cc:
Keep the unsigned_flag updated in Item_splocal and Item_decimal.
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.
mysql-test/r/sp.result:
New test case for BUG#7049.
Note that the spurious warnings in the BUG#12379 test now are gone (as expected).
mysql-test/t/sp.test:
New test case for BUG#7049.
sql/sp_head.cc:
Link sp_rcontexts to allow catching errors across invokation boundaries.
(Also fixed print method for the hreturn instruction.)
sql/sp_rcontext.cc:
Link sp_rcontexts to allow catching errors across invokation boundaries.
If a handler is not found in the current sp_rcontext, recurse into the previous ones (if any).
sql/sp_rcontext.h:
Link sp_rcontexts to allow catching errors across invokation boundaries.
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.)
mysql-test/r/sp.result:
New test case for BUG#6127.
mysql-test/t/sp.test:
New test case for BUG#6127.
sql/sp_head.cc:
Replaced the setting of ctx->in_handler with a enter/exit handler methods.
sql/sp_rcontext.cc:
Replaced the boolean in_handler flag with a stack of handlers being exectuted, for proper recursion check.
sql/sp_rcontext.h:
Replaced the boolean in_handler flag with a stack of handlers being exectuted, for proper recursion check.
(And added some comments in the sp_rcontext class.)
Execution rigths on function was checked just before function execution,
thus it was unknown on prepare stage whether user have right to execute
particular function.
Added access rights checking function which is called right after fixing
Item_func_sp.
This have additional effect that if user don't have rights for execution
query will fail on earlier stage and will not waste resources on optimizing
with failing on execution stage.
sql/item_func.h:
Fix bug#12812 create view calling a function works without execute right on function
sql/item_func.cc:
Fix bug#12812 create view calling a function works without execute right on function
Added function Item_func_sp::check_access() which checks access rights.
Added function Item_func_sp::fix_field() which calls check_access() after fixing.
Item_func_sp::execute() now calls to check_access() to check access rights.
mysql-test/t/sp.test:
Test case for bug#12812 create view calling a function works without execute right on function
mysql-test/r/sp.result:
Test case for bug#12812 create view calling a function works without execute right on function
mysql-test/r/sp.result:
Added missing drop table.
mysql-test/t/sp.test:
Added missing drop table.
sql/sp_head.h:
Post-review fix for autocommit check in SPs and triggers.
sql/sql_yacc.yy:
Post-review fix for autocommit check in SPs and triggers.
mysql-test/r/sp.result:
fix result
mysql-test/r/type_newdecimal.result:
fix result
mysql-test/t/sp.test:
add a test for the bug
mysql-test/t/type_newdecimal.test:
add a test for the bug
sql/item_func.cc:
call correct method of the item
get strange result
according to Monty's suggestions, fixing the SELECT behaviour on errors
with SP handlers. Note that some warnings from SELECT still shows up when
the handler has caught - this is an effect of another known bug (BUG#7049).
mysql-test/r/sp.result:
New test cases for BUG#12379.
mysql-test/t/sp.test:
New test cases for BUG#12379.
sql/sql_class.cc:
Abort selects on errors more graceful with SP handlers.
sql/sql_class.h:
Abort selects on errors more graceful with SP handlers.
Have to init. all local variables in their frames, not just once at the beginning
of invocation.
mysql-test/r/sp.result:
New test case for BUG#13133.
mysql-test/t/sp.test:
New test case for BUG#13133.
sql/sp_head.cc:
Just init. local variable slots in the fram to NULL. (Real init. will be done
in each block.)
sql/sp_pcontext.cc:
Removed isset flag, since it's not used.
sql/sp_pcontext.h:
Removed isset flag, since it's not used.
sql/sql_yacc.yy:
Initialize local variables in the block to null, or the default value, given.
(Untabifed block too.)
into mysql.com:/home/psergey/mysql-5.0-bug12943
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/sql_parse.cc:
Auto merged
(recommit with the right Bug#)
mysql-test/r/sp.result:
result file modified to reflect new test
mysql-test/t/sp.test:
added test for the bug
sql/item.cc:
protect Item_splocal value from modification by CONCAT() et al
sql/item.h:
added a buffer to save Item_splocal string pointer
sql/sp_head.cc:
don't employ reuse mechanism to save var into itself
* Allocate thd->user_var_events elements on appropriate mem_root
* If several SP statements are binlogged as a single statement, collect all user var
accesses they make (grep for StoredRoutinesBinlogging for details)
mysql-test/r/rpl_sp_effects.result:
Testcase for BUG#12637
mysql-test/r/sp.result:
re-enabled test case for BUG#12297
mysql-test/t/rpl_sp_effects.test:
Testcase for BUG#12637
mysql-test/t/sp.test:
re-enabled test case for BUG#12297
sql/item_func.cc:
Fix for BUG#12637: Make SPs+user variables replication work:
* Allocate thd->user_var_events elements on appropriate mem_root
* If several SP statements are binlogged as a single statement, collect all user var
accesses they make.
sql/log.cc:
Fix for BUG#12637: Make SPs+user variables replication work:
* Allocate thd->user_var_events elements on appropriate mem_root
* If several SP statements are binlogged as a single statement, collect all user var
accesses they make.
sql/sp_head.cc:
Fix for BUG#12637: Make SPs+user variables replication work:
* Allocate thd->user_var_events elements on appropriate mem_root
* If several SP statements are binlogged as a single statement, collect all user var
accesses they make.
sql/sp_head.h:
Remove compiler warning.
sql/sql_class.h:
Fix for BUG#12637: Make SPs+user variables replication work.
sql/sql_parse.cc:
Fix for BUG#12637: Make SPs+user variables replication work.
(already approved)
mysql-test/r/information_schema.result:
update test results
mysql-test/r/sp.result:
update test results
mysql-test/r/sql_mode.result:
update test results
sql/sp.cc:
don qualify the name
"Creating a function with char binary IN parameter fails"
Parse BINARY as part of type declaration, not as
a column attribute.
mysql-test/r/sp.result:
test for bug 9048
mysql-test/t/sp.test:
test for bug 9048
sql/sql_yacc.yy:
fix bug 9048
parse BINARY as part of type declaration and not as column modifier.
into mysql.com:/home/cps/mysql/devel/mysql-5.0-sp11333
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/sp_head.cc:
manual merge
mysql-test/r/sp.result:
update result
mysql-test/t/sp.test:
Add test for Bug #11333 "Stored Procedure: Memory blow up on repeated SELECT ... INTO query"
sql/item.cc:
we should call destructors for Items before reuse
sql/item.h:
Add new method and constructor for Item_string.
sql/sp_head.cc:
String allocation should be done on the system heap for now.
mysql-test/r/sp.result:
fix result
mysql-test/t/sp.test:
fix test for a bug: tests in sp.test should reuse tables t1 and t2 and create/drop tables t3, t4 etc.
So, tables t1 and t2 were renamed into t3 and t4
NOT FOUND ...' in conditional handled incorrectly".
Whenever we remove an instruction during optimization, we need to
adjust instruction numbers (ip - instruction pointer) stored in all
instructions. In addition to that, sp_instr_hpush_jump, which
corresponds to DECLARE CONTINUE HANDLER needs adjustment for m_handler,
which holds the number of instruction with the continue handler.
In the bug report, a wrong ip stored in m_handler was pointing at
FETCH, which resulted in an error message and abnormal SP termination.
The fix is to just remove m_handler member from sp_instr_hpush_jump,
as it's always points to the instruction next to the DECLARE
statement itself (m_ip+1).
mysql-test/r/sp.result:
Test results fixed (Bug#12168)
mysql-test/t/sp.test:
A test case for Bug#12168 "'DECLARE CONTINUE HANDLER FOR NOT
FOUND ...' in conditional handled incorrectly"
sql/sp_head.cc:
Remove m_handler (the number of continue handler instruction)
as it always equal to m_ip+1
sql/sp_head.h:
Remove m_handler (the number of continue handler instruction)
as it always equal to m_ip+1
and Bug#12297 SP crashes the server if data inserted inside a lon loop
Third commit attempt. With fixes to the issues, showed up after full rebuild and
tests on other hosts.
mysql-test/r/rpl_sp.result:
New warnings appeared in result file, as now we always create spcont in a stored routine.
This is correct behaviour. We swallowed some warnings, as we used thd->spcont to check whether
we are in the SP though we didn't set spcont in certain cases. This is fixed now.
mysql-test/r/sp.result:
fixed result file to reflect new tests
mysql-test/t/sp.test:
Added tests for bugs. Though one of them is disabled, as it fails because of the other bug.
It should be enabled, when bug 12297 is fixed.
sql/sp_head.cc:
Per-instruction arena is implemented
sql/sp_rcontext.cc:
Now we should deal with callers_arena->free_list when we employ reuse mechanism with callers_arena
switched during sp_eval_func_item
sql/sp_rcontext.h:
Add new member to sp_rcontext class, in order to handle instructions with assignment
and/or with nested SP processing properly.
into mysql.com:/home/dlenev/src/mysql-5.0-is
mysql-test/r/information_schema.result:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/sp.result:
Manual merge
mysql-test/t/sp.test:
Manual merge
sql/sql_class.h:
Manual merge
result set".
To enable full access to contents of I_S tables from stored functions
or statements that use them, we manipulate with thread's open tables
state and ensure that we won't cause deadlock when we open tables by
ignoring flushes and name-locks.
Building of contents of I_S.TABLES no longer requires locking of tables
since we use use handler::info() method with HA_STATUS_AUTO flag instead
of handler::update_auto_increment() for obtaining information about
auto-increment values. But this also means that handlers have to implement
support for HA_STATUS_AUTO flag (particularly InnoDB needs it).
mysql-test/r/alter_table.result:
Updated test results. This change was caused by the fact that now when
we build contents of I_S tables (and thus output of SHOW INDEX) we
don't use instances of tables which may be already opened and locked
by thread (we always use new instance).
mysql-test/r/information_schema.result:
Added test which checks how information about current auto-increment value for
table is reported in INFORMATION_SCHEMA.TABLES view.
mysql-test/r/sp.result:
Added test for bug #10055 "Using stored function with information_schema causes
empty result set".
mysql-test/t/information_schema.test:
Added test which checks how information about current auto-increment value for
table is reported in INFORMATION_SCHEMA.TABLES view.
mysql-test/t/sp.test:
Added test for bug #10055 "Using stored function with information_schema causes
empty result set".
sql/mysql_priv.h:
close_thread_tables():
Get rid of 'stopper' argument which is no longer used. Now when we need
to open and then close some table without touching tables which are already
opened we use THD::reset_n/restore_backup_open_tables_state() methods.
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sp.cc:
close_proc_table/open_proc_table_for_read/db_find_routine():
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
open_proc_table_for_read():
Since now we can have several open tables states stacked up we can't rely
rely on checking whether we have some tables open in previous state.
Instead we always assume that some tables are open and we need to ignore
flush while locking mysql.proc. We don't really need
MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK in this case since we open mysql.proc table
only for reading.
sql/sp.h:
Added declarations of open_proc_table_for_read()/close_proc_table() to be
able to use them in sql_show.cc.
sql/sql_base.cc:
close_thread_tables():
Get rid of 'stopper' argument which is no longer used. Now when we need
to open and then close some table without touching tables which are already
opened we use THD::reset_n/restore_backup_open_tables_state() methods.
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_class.cc:
Open_tables_state, THD:
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
sql/sql_class.h:
Open_tables_state, THD:
Replaced push_open_tables_state/pop_open_tables_state() methods which
were saving/restoring current open tables state in/from THD::open_state_list
with reset_n_backup_open_tables_state/restore_backup_open_tables_state()
methods which assume that backup storage for this state is allocated on
stack (or elsewhere) by their caller.
sql/sql_handler.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_prepare.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
sql/sql_show.cc:
get_all_tables():
Now we use THD::reset_n_/restore_backup_open_tables_state() for
saving/restoring open tables state instead of working with it directly
(This also allows us to have proper content of I_S system tables in
statements with stored functions and in stored functions). We also
ignore possible flushes when opening tables (we may create deadlock
otherwise). Also we do all needed manipulations with LEX in this function
and not in get_schema_tables_result() now.
get_schema_tables_record():
Let us use handler::info() method with HA_STATUS_AUTO flag for obtaining
information about table's auto-increment value. This allows to avoid locking
of tables which is needed when we use handler::update_auto_increment() method.
fill_schema_proc():
Now we use open_proc_table_for_read/close_proc_table() for access to
mysql.proc table (so we won't cause deadlock if we already have some
tables open and locked, this also allows us to have proper content in
ROUTINES system table in statements using stored functions/in stored
functions).
get_schema_tables_result():
Moved all manipulations with Open_tables_state and LEX needed for
safe opening of tables to ST_SCHEMA_TABLE::fill_table functions
(i.e. get_all_tables() and fill_schema_proc()).
sql/sql_update.cc:
open_tables()/open_normal_and_derived_tables():
Added 'flags' argument to be able open tables even if some has done
a flush or hold namelock on them.
mysql-test/r/sp.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_trigger.h:
Auto merged
* Don't activate prelocking mode for evaluating procedure arguments when it is not necessary.
* Code structure simplification and cleanup.
* Cleanup in .test files
mysql-test/r/sp-prelocking.result:
Prelocking-free SPs, post-review fixes:
Added comment, s/testdb/mysqltest/, fixed a wrong test (error wasnt reported because of known bug in mysqltestrun)
mysql-test/r/sp-security.result:
Don't drop the table we're not using.
mysql-test/r/sp.result:
Prelocking-free SPs, post-review fixes:
remove redundant "drop table if exists t3" statements
mysql-test/t/sp-prelocking.test:
Prelocking-free SPs, post-review fixes:
Added comment, s/testdb/mysqltest/, fixed a wrong test (error wasnt reported because of known bug in mysqltestrun)
mysql-test/t/sp-security.test:
Don't drop the table we're not using.
mysql-test/t/sp.test:
Prelocking-free SPs, post-review fixes:
remove redundant "drop table if exists t3" statements
sql/sp.cc:
New, better defined, sp_get_prelocking_info() function to get info about
statement prelocking options
sql/sp.h:
Prelocking-free SPs, post-review fixes: New, better defined, sp_get_prelocking_info()
function to get info about statement prelocking options
sql/sp_cache.h:
Prelocking-free SPs, post-review fixes: Amended the comments
sql/sp_head.cc:
Prelocking-free SPs, post-review fixes: Amend the comments, simplify the code that
attaches removes statement's prelocking tables.
sql/sql_base.cc:
Prelocking-free SPs, post-review fixes:
* Use a better defined sp_get_prelocking_info() function to get info about
statement prelocking options
* Don't activate prelocked mode for evaluation of SP arguments that use tables
but don't need prelocking.
sql/sql_class.cc:
Prelocking-free SPs, post-review fixes: Initialize THD members in the order they are declared.
its body, but lets each statement to get/release its own locks. This allows a broader set
of statements to be executed inside PROCEDUREs (but breaks replication)
This patch should fix BUG#8072, BUG#8766, BUG#9563, BUG#11126
mysql-test/r/sp-security.result:
Drop tables this test attempts to create
mysql-test/r/sp-threads.result:
Update test results
mysql-test/r/sp.result:
Disabled a test that triggers BUG#11986, cleanup used tables when tests start.
mysql-test/r/view.result:
Enabled a test case that now works with prelocking-free SPs
mysql-test/t/sp-security.test:
Drop tables this test attempts to create
mysql-test/t/sp.test:
Disabled a test that triggers BUG#11986, cleanup used tables when tests start.
mysql-test/t/view.test:
Enabled a test case that now works with prelocking-free SPs
sql/handler.cc:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
sql/item_func.cc:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
sql/sp.cc:
Non-prelocked SP execution: Added support for skipping prelocking of procedure body for
"CALL proc(...)" statements.
sql/sp.h:
Non-prelocked SP execution: Added support for skipping prelocking of procedure body for
"CALL proc(...)" statements.
sql/sp_cache.h:
Added comments
sql/sp_head.cc:
Non-prelocked SP execution:
* Try to unlock tables after PROCEDURE arguments have been evaluated.
* Make sp_lex_keeper be able to execute in 2 modes: A) when already in prelocked mode
B) when its statement enters/leaves prelocked mode itself.
sql/sp_head.h:
Non-prelocked SP execution: Make sp_lex_keeper to additionally keep list of tables it
needs to prelock when its statement enters/leaves prelocked mode on its own.
sql/sql_base.cc:
Non-prelocked SP execution: Make open_tables() to
* detect 'CALL proc(...)' and not to do prelocking for procedure body statements.
* Make lex->query_tables_last to point precisely to a boundary in lex->query_tables
list where 'own' tables and views' tables end and added-for-prelocking tables begin.
(it was not true before - view's tables could end up after query_tables_own_last)
sql/sql_class.cc:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
sql/sql_class.h:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
sql/sql_lex.cc:
Non-prelocked SP execution: More rigourous cleanup in st_lex::cleanup_after_one_table_open()
sql/sql_parse.cc:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt, remove outdated comments
sql/sql_trigger.h:
Rename: thd->transaction.in_sub_stmt -> thd->in_sub_stmt
client/client_priv.h:
add OPT_ for --trigger parameter
client/mysqldump.c:
fixed short simbol for trigger
fixed lines break for more compiler compatibility
added sql_mode output
added comments
made protection of trigger and view restoring commands from execution by old versions of mysql
mysql-test/r/mysqldump.result:
changed test, to test sql_mode
mysql-test/r/sp.result:
now sql_mode preserved in SP
mysql-test/t/mysqldump.test:
changed test, to test sql_mode
mysql-test/t/sp.test:
now sql_mode preserved in SP
sql/set_var.cc:
fixed comment
mysql-test/r/sp.result:
added expected result for bug #8692
mysql-test/t/sp.test:
added testcase for bug #8692
sql/protocol_cursor.cc:
fixed detecting of null fields: A field contains a null value only
if length is NULL_LENGTH
mysql-test/r/sp.result:
Test results fixed: rewritten test for Bug#6129
mysql-test/r/view.result:
Push a change to the result file from Sanja's patch.
mysql-test/t/sp.test:
Rewrite the test for Bug#6129 (now that stored procedures don't
evaluate system variables at parse, the test produced different results).
The old test failed with 1 in the second invocation (the old
result was wrong).
sql/item_func.cc:
After-merge fix.
sql/item_func.h:
After-merge fix.
sql/mysql_priv.h:
After-merge fix.
sql/mysqld.cc:
Rollback the patch for Bug#7403 (it breaks the test suite).
using @@var_name in proc
Made sure we don't lose the tokenizer state when swapping lex in during SET
parsing.
mysql-test/r/sp.result:
New test case for BUG#9538.
mysql-test/t/sp.test:
New test case for BUG#9538.
sql/sp_head.cc:
Keep lex->next_state when swapping lex during SP parsing (for SET mainly),
otherwise the tokenizer gets confused.
sub-sequent procedure is called" which was fixed by the same patch
as bug #9597 "read lock stays when querying view from stored procedure".
mysql-test/r/sp.result:
Added test case for bug #9565 "Wrong locking in stored procedure if a
sub-sequent procedure is called".
mysql-test/t/sp.test:
Added test case for bug #9565 "Wrong locking in stored procedure if a
sub-sequent procedure is called".
into mysql.com:/home/pem/work/mysql-5.0
mysql-test/r/sp-error.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp-error.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into mysql.com:/home/dlenev/src/mysql-5.0-bg8406
mysql-test/r/sp.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
mysql-test/r/sp-error.result:
Manual merge.
mysql-test/t/sp-error.test:
Manual merge.
sql/sp_head.cc:
Manual merge.
sql/sql_yacc.yy:
Manual merge.
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.
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).
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.
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).
"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.
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.
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
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
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.
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.
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.
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.
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
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
mysql-test/r/case.result:
test result fixed
mysql-test/r/create.result:
test result fixed
mysql-test/r/distinct.result:
test result fixed
mysql-test/r/func_group.result:
test result fixed
mysql-test/r/func_op.result:
test result fixed
mysql-test/r/group_by.result:
test result fixed
mysql-test/r/metadata.result:
test result fixed
mysql-test/r/olap.result:
test result fixed
mysql-test/r/ps_2myisam.result:
test result fixed
mysql-test/r/ps_3innodb.result:
test result fixed
mysql-test/r/ps_4heap.result:
test result fixed
mysql-test/r/ps_5merge.result:
test result fixed
mysql-test/r/ps_6bdb.result:
test result fixed
mysql-test/r/ps_7ndb.result:
test result fixed
mysql-test/r/select.result:
test result fixed
mysql-test/r/sp.result:
test result fixed
mysql-test/r/type_decimal.result:
test result fixed
mysql-test/r/type_newdecimal.result:
test result fixed
mysql-test/r/union.result:
test result fixed
mysql-test/r/variables.result:
test result fixed
mysql-test/t/func_group.test:
test modified
mysql-test/t/olap.test:
test modified
mysql-test/t/type_decimal.test:
test modified
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.
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
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.
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
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()
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.
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()
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
... 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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.)
BitKeeper/etc/logging_ok:
auto-union
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/ndb_autodiscover.result:
Auto merged
mysql-test/r/ps_1general.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/view.result:
Auto merged
scripts/fill_func_tables.sh:
Auto merged
scripts/mysql_create_system_tables.sh:
Auto merged
scripts/mysql_fix_privilege_tables.sh:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
sql/field.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/table.cc:
Auto merged
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.
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
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
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
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.
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.
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.
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
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
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.
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.
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.
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)
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.
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.
The warning sent is by itself ok, the problem was rather why it wasn't
sent on some other platforms...
The real problem was that a total_warn_count which was inconsistent with warn_list
was sent back with send_eof() during SP execution, which in turn cause a protocol
error in mysqltest.
mysql-test/r/sp.result:
Updated results after fixing bug in how total_warn_count is handled.
sql/protocol.cc:
Fixed bug that caused protocol errors with mysqltest. Don't send total_warn_count
with send_eof() during SP execution, as it's usually wrong anyway. (warn_list is
cleared)
sql/sql_parse.cc:
Reset total_warn_count if the warn_list has been cleared. This gets rid of
"empty" warnings after some CALLs.
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
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.
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).
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.
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
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.
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
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).
Implement fine-grained control over access to stored procedures
Privileges are cached (same way as existing table/column privs)
mysql-test/include/system_db_struct.inc:
WL#925 - Privileges for stored routines
New system table: procs_priv
mysql-test/r/connect.result:
WL#925 - Privileges for stored routines
New system table: procs_priv
mysql-test/r/grant.result:
WL#925 - Privileges for stored routines
user table has additional privilege attributes
SHOW PRIVILEGES amended
mysql-test/r/grant2.result:
Fix result
mysql-test/r/information_schema.result:
WL#925 - Privileges for stored routines
New system table procs_priv
New user privileges
mysql-test/r/show_check.result:
Fix result
mysql-test/r/sp-security.result:
WL#925 - Privileges for stored routines
Fix existing tests to work with new privileges
New tests for new privileges
mysql-test/r/sp.result:
WL#925 - Privileges for stored routines
Fix SHOW PRIVILEGES results
mysql-test/r/system_mysql_db.result:
WL#925 - Privileges for stored routines
New system table: procs_priv
user and db tables have new privilege attributes
mysql-test/t/grant2.test:
Fix test
mysql-test/t/show_check.test:
Fix test
mysql-test/t/sp-security.test:
WL#925 - Privileges for stored routines
Allow existing tests to run with new privilege checks
New tests for privileges
mysql-test/t/system_mysql_db_fix.test:
WL#925 - Privileges for stored routines
New system table: procs_priv
scripts/mysql_create_system_tables.sh:
WL#925 - Privileges for stored routines
db and user has new privilege attributes
new system table: procs_priv
scripts/mysql_fix_privilege_tables.sql:
WL#925 - Privileges for stored routines
new system table: procs_priv
scripts/mysql_install_db.sh:
WL#925 - Privileges for stored routines
Amend comment
sql/item_func.cc:
WL#925 - Privileges for stored routines
Privilege check for stored FUNCTION routine
sql/lex.h:
WL#925 - Privileges for stored routines
new token ROUTINE
sql/mysql_priv.h:
WL#925 - Privileges for stored routines
New function: check_procedure_access()
sql/mysqld.cc:
WL#925 - Privileges for stored routines
system option automatic-sp-privileges
sql/set_var.cc:
WL#925 - Privileges for stored routines
system option automatic-sp-privileges
sql/share/errmsg.txt:
WL#925 - Privileges for stored routines
rename errormessage to conform:
ER_SP_ACCESS_DENIED_ERROR -> ER_PROCACCESS_DENIED_ERROR
New error messages
ER_NONEXISTING_PROC_GRANT, ER_PROC_AUTO_GRANT_FAIL, ER_PROC_AUTO_REVOKE_FAIL
sql/sp.cc:
WL#925 - Privileges for stored routines
new function: sp_exists_routine()
sql/sp.h:
WL#925 - Privileges for stored routines
new function: sp_exists_routine()
sql/sql_acl.cc:
WL#925 - Privileges for stored routines
Implementation for SP privileges.
Privileges are cached in memory hash.
New functions:
mysql_procedure_grant()
check_grant_procedure()
sp_revoke_privileges()
sp_grant_privileges()
sql/sql_acl.h:
WL#925 - Privileges for stored routines
New privilege bits: CREATE_PROC_ACL, ALTER_PROC_ACL
Alter confusing bit-segments to be shifted
New macros: fix_rights_for_procedure() get_rights_for_procedure()
New functions:
mysql_procedure_grant()
check_grant_procedure()
sp_grant_privileges()
sp_revoke_privileges()
sql/sql_lex.h:
WL#925 - Privileges for stored routines
new all_privileges attribute in LEX
sql/sql_parse.cc:
WL#925 - Privileges for stored routines
Remove function: check_sp_definer_access()
Add handling for SP grants/revokes
Add privilege checks for stored procedure invocation
sql/sql_show.cc:
WL#925 - Privileges for stored routines
update result for SHOW PRIVILEGES
sql/sql_yacc.yy:
WL#925 - Privileges for stored routines
New token ROUTINE
rename some rules
handle CREATE ROUTINE / ALTER ROUTINE privileges
mysqldump skips information_schema db
'use' now can use information_schema db
changed value of column 'Null' to 'NO' if column is not nullable
client/mysqldump.c:
mysqldump skips information_schema db
mysql-test/r/alter_table.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/create.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/ctype_collate.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/ctype_recoding.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/ctype_ujis.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/drop.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/func_sapdb.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/func_time.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/gis.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/information_schema.result:
Added couple of tests
mysql-test/r/information_schema_inno.result:
Removed coulmn 'CONTRAINT_METOD' from TABLE_CONSTRAINTS
Added column 'POSITION_IN_UNIQUE_CONSTRAINT' to KEY_COLUMN_USAGE
mysql-test/r/innodb.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/ndb_autodiscover.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/ps_1general.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/rpl000009.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/rpl_create_database.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/schema.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/select.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/show_check.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/sp.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/type_enum.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/r/type_ranges.result:
changed value of column 'Null' to 'NO' if column is not nullable
mysql-test/t/information_schema.test:
Added couple of tests
sql/sql_acl.cc:
Don't display 'usage' privilege in TABLE_PRIVILEGES if we have columns privileges
sql/sql_db.cc:
'use' now can use information_schema db
sql/sql_show.cc:
code cleanup
informaton_schema(IS) db now contains data about IS itself
sql/sql_yacc.yy:
A fix(wrong behavour of 'SHOW COLUMNS, SHOW KEYS' with 'where condition')
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
- 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)
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