mysql-test/r/lowercase_view.result:
test of updating and fetching from the same table check
mysql-test/r/view.result:
test of updating and fetching from the same table check
mysql-test/t/lowercase_view.test:
test of updating and fetching from the same table check
mysql-test/t/view.test:
test of updating and fetching from the same table check
sql/mysql_priv.h:
unique table test
sql/sql_base.cc:
unique table test which take into account views added
sql/sql_delete.cc:
unique table test which take into account views added
sql/sql_insert.cc:
unique table test which take into account views added
sql/sql_parse.cc:
unique table test which take into account views added
sql/sql_update.cc:
unique table test which take into account views added
sql/sql_view.cc:
unique table test which take into account views added
sql/table.h:
save next independent (do not belong to current view) table
Mostly needed for Monty for him getting notion what needed for triggers
from new .FRM format.
Things to be done:
- Right placement of trigger's invocations
- Right handling of errors in triggers (including transaction rollback)
- Support for priviliges
- Right handling of DROP/RENAME table (hope that it will be handled automatically
with merging of .TRG into .FRM file)
- Saving/restoring some information critical for trigger creation and replication
with their definitions (e.g. sql_mode, creator, ...)
- Replication
Already has some known bugs so probably not for general review.
include/mysqld_error.h:
Added trigger related error codes.
sql/Makefile.am:
Added sql_trigger.* files to list of sources from which mysqld is built.
sql/item.cc:
Added Item_trigger_field class representing field of new/old version of row which is
inserted/updated/deleted and for which trigger is invoked.
sql/item.h:
Added enums for describing trigger properties. (Here because of dependencies).
Added Item_trigger_field class representing field of new/old version of row which is
inserted/updated/deleted and for which trigger is invoked.
sql/item_func.cc:
Added Item_func_set_user_var::print_as_stmt() for printing of assignment to ser variable
from stored procedures.
Added comment clarifying why we don't need set no_send_ok when calling stored functions.
sql/item_func.h:
Added Item_func_set_user_var::print_as_stmt() for printing of assignment to ser variable
from stored procedures.
sql/lex.h:
Symbols used in statements defining triggers were added.
sql/mysql_priv.h:
Exported some functions needed for triggers implementation.
sql/parse_file.cc:
Cleaned up FILE_OPTIONS_STRLIST handling (needed for triggers).
sql/parse_file.h:
Cleaned up FILE_OPTIONS_STRLIST handling (needed for triggers).
sql/share/czech/errmsg.txt:
Added trigger related error messages.
sql/share/danish/errmsg.txt:
Added trigger related error messages.
sql/share/dutch/errmsg.txt:
Added trigger related error messages.
sql/share/english/errmsg.txt:
Added trigger related error messages.
sql/share/estonian/errmsg.txt:
Added trigger related error messages.
sql/share/french/errmsg.txt:
Added trigger related error messages.
sql/share/german/errmsg.txt:
Added trigger related error messages.
sql/share/greek/errmsg.txt:
Added trigger related error messages.
sql/share/hungarian/errmsg.txt:
Added trigger related error messages.
sql/share/italian/errmsg.txt:
Added trigger related error messages.
sql/share/japanese/errmsg.txt:
Added trigger related error messages.
sql/share/korean/errmsg.txt:
Added trigger related error messages.
sql/share/norwegian-ny/errmsg.txt:
Added trigger related error messages.
sql/share/norwegian/errmsg.txt:
Added trigger related error messages.
sql/share/polish/errmsg.txt:
Added trigger related error messages.
sql/share/portuguese/errmsg.txt:
Added trigger related error messages.
sql/share/romanian/errmsg.txt:
Added trigger related error messages.
sql/share/russian/errmsg.txt:
Added trigger related error messages.
sql/share/serbian/errmsg.txt:
Added trigger related error messages.
sql/share/slovak/errmsg.txt:
Added trigger related error messages.
sql/share/spanish/errmsg.txt:
Added trigger related error messages.
sql/share/swedish/errmsg.txt:
Added trigger related error messages.
sql/share/ukrainian/errmsg.txt:
Added trigger related error messages.
sql/sp_head.cc:
sp_head::init_strings(): added support for triggers
(we don't have most of strings for them)
sp_head::execute_function(): triggers don't require RETURN
sp_head::reset_lex(): added propagation of trigger properties to LEX used for
parsing of statements composing trigger body.
Added two more SP instructions:
- sp_instr_set_user_var for setting user variables in stored functions and triggers
(we can't use sp_instr_stmt and "SET @a:=..." statement since it will close open
tables and thus break execution of calling statement.
- sp_instr_set_trigger_field for assignment to fields of row being updated/inserted in
triggers
sql/sp_head.h:
Added new type of sp_head object - TYPE_ENUM_TRIGGER
Added two more SP instructions:
- sp_instr_set_user_var for setting user variables in stored functions and triggers
(we can't use sp_instr_stmt and "SET @a:=..." statement since it will close open
tables and thus break execution of calling statement.
- sp_instr_set_trigger_field for assignment to fields of row being updated/inserted in
triggers
sql/sql_base.cc:
Now freeing memory occupied by trigger related structures when closing tables.
open_unireg_entry(): added loading of triggers for table.
find_field_in_real_table() is now public since it required by Item_trigger_field in item.cc
sql/sql_delete.cc:
Added triggers invocation for DELETE (should be fixed for sure :))
sql/sql_insert.cc:
Added triggers invocation for INSERT (should be fixed for sure :))
sql/sql_lex.cc:
Added trg_new_row_fake_var variable pointer to which is used for distinguishing between
assignment to NEW row field (when parsing trigger definition) and structured variable.
Added initialization of LEX->trg_table to lex_start(). (When triggers are parsed during
opening of table it points to table object.)
sql/sql_lex.h:
Added trigger related commands.
Added st_trg_chistics structure describing properties of trigger being created
(as struct and as LEX member).
Added trg_new_row_fake_var variable pointer to which is used for
distinguishing between assignment to NEW row field (when parsing trigger definition)
and structured variable.
Added LEX::trg_table which points to table being opened when we are parsing trigger
definition while opening table.
sql/sql_parse.cc:
Added support for CREATE/DROP TRIGGER commands.
sql/sql_table.cc:
Cleanup. close_cached_table() always returns 0 and its result is not analyzed in most
places so chenged its return type to void.
sql/sql_update.cc:
Added triggers invocation for UPDATE (should be fixed for sure :))
sql/sql_yacc.yy:
Added support for CREATE/DROP TRIGGER statements.
Added support for OLD/NEW row identifiers in trigger.
Made assignment to user variables not to break execution of stored function or trigger.
sql/table.h:
Added TABLE::triggers member representing triggers for this table.
Mostly needed for Monty for him getting notion what needed for triggers
from new .FRM format.
Things to be done:
- Right placement of trigger's invocations
- Right handling of errors in triggers (including transaction rollback)
- Support for priviliges
- Right handling of DROP/RENAME table (hope that it will be handled automatically
with merging of .TRG into .FRM file)
- Saving/restoring some information critical for trigger creation and replication
with their definitions (e.g. sql_mode, creator, ...)
- Replication
Already has some known bugs so probably not for general review.
mysql-test/r/view.result:
CHECK OPTION with INSERT ... ON DUPLICATE KEY UPDATE
mysql-test/t/view.test:
CHECK OPTION with INSERT ... ON DUPLICATE KEY UPDATE
sql/sql_class.h:
new parameters added to save CHECK OPTION
constructor moved
sql/sql_insert.cc:
new parameters added to save CHECK OPTION
check of CHECK OPTION added
constructor moved
sql/sql_parse.cc:
new parameters added to save CHECK OPTION
(Includes merge of arena code in 4.1 and 5.0)
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
VC++Files/sql/mysqld.dsp:
Auto merged
client/mysql.cc:
Auto merged
client/mysqltest.c:
Auto merged
include/my_global.h:
Auto merged
include/my_sys.h:
Auto merged
include/mysql.h:
Auto merged
include/mysql_com.h:
Auto merged
innobase/row/row0sel.c:
Auto merged
libmysql/client_settings.h:
Auto merged
libmysql/libmysql.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
libmysqld/examples/Makefile.am:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/sort.c:
Auto merged
mysql-test/r/connect.result:
Auto merged
mysql-test/r/ctype_recoding.result:
Auto merged
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/r/func_in.result:
Auto merged
mysql-test/r/func_like.result:
Auto merged
mysql-test/r/gis.result:
Auto merged
mysql-test/r/having.result:
Auto merged
mysql-test/r/heap.result:
Auto merged
mysql-test/r/join.result:
Auto merged
mysql-test/r/key.result:
Auto merged
mysql-test/r/lowercase_table.result:
Auto merged
mysql-test/r/ndb_autodiscover.result:
Auto merged
mysql-test/r/null.result:
Auto merged
mysql-test/r/olap.result:
Auto merged
mysql-test/r/order_by.result:
Auto merged
mysql-test/r/ps_1general.result:
Auto merged
mysql-test/r/ps_2myisam.result:
Auto merged
mysql-test/r/ps_3innodb.result:
Auto merged
mysql-test/r/ps_4heap.result:
Auto merged
mysql-test/r/ps_5merge.result:
Auto merged
mysql-test/r/ps_6bdb.result:
Auto merged
mysql-test/r/range.result:
Auto merged
mysql-test/r/rename.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/union.result:
Auto merged
mysql-test/r/variables.result:
Auto merged
mysql-test/t/alter_table.test:
Auto merged
mysql-test/t/null.test:
Auto merged
mysql-test/t/ps_1general.test:
Auto merged
mysql-test/t/rpl_charset.test:
Auto merged
mysql-test/t/rpl_heap.test:
Auto merged
mysql-test/t/rpl_relayrotate.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
netware/mysql_test_run.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
scripts/mysql_create_system_tables.sh:
Auto merged
scripts/mysql_fix_privilege_tables.sql:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_create.cc:
Auto merged
sql/item_create.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/lex.h:
Auto merged
sql/lock.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/records.cc:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_list.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_rename.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_string.h:
Auto merged
sql/table.cc:
Auto merged
sql-common/client.c:
Auto merged
client/mysqlbinlog.cc:
Merge with 4.1
configure.in:
Merge with 4.1
include/mysqld_error.h:
Add new error message (1) from 4.1
mysql-test/mysql-test-run.sh:
Merge with 4.1
mysql-test/r/func_gconcat.result:
Merge with 4.1
mysql-test/r/func_if.result:
Merge with 4.1
mysql-test/r/grant.result:
Merge with 4.1
mysql-test/r/join_outer.result:
Merge with 4.1
mysql-test/r/rpl_charset.result:
Merge with 4.1 (This has to be fixed before pushing)
mysql-test/r/system_mysql_db.result:
Merge with 4.1.
Added collation to new privileges
mysql-test/t/grant.test:
Merge with 4.1
mysql-test/t/grant_cache.test:
Merge with 4.1
mysql-test/t/show_check.test:
Merge with 4.1
sql/Makefile.am:
Merge with 4.1
sql/item.cc:
Merge with 4.1
sql/item_cmpfunc.cc:
Merge with 4.1 (arena code)
sql/item_subselect.cc:
Merge with 4.1
sql/item_subselect.h:
Merge with 4.1
sql/item_sum.cc:
Merge with 4.1
sql/item_sum.h:
Merge with 4.1
sql/log.cc:
Merge with 4.1 (Remove code that is not relevant for 5.0)
sql/mysqld.cc:
Merge with 4.1
sql/opt_range.cc:
Merge with 4.1
sql/share/czech/errmsg.txt:
Merge with 4.1
sql/share/danish/errmsg.txt:
Merge with 4.1
sql/share/dutch/errmsg.txt:
Merge with 4.1
sql/share/english/errmsg.txt:
Merge with 4.1
sql/share/estonian/errmsg.txt:
Merge with 4.1
sql/share/french/errmsg.txt:
Merge with 4.1
sql/share/german/errmsg.txt:
Merge with 4.1
sql/share/greek/errmsg.txt:
Merge with 4.1
sql/share/hungarian/errmsg.txt:
Merge with 4.1
sql/share/italian/errmsg.txt:
Merge with 4.1
sql/share/japanese/errmsg.txt:
Merge with 4.1
sql/share/korean/errmsg.txt:
Merge with 4.1
sql/share/norwegian-ny/errmsg.txt:
Merge with 4.1
sql/share/norwegian/errmsg.txt:
Merge with 4.1
sql/share/polish/errmsg.txt:
Merge with 4.1
sql/share/portuguese/errmsg.txt:
Merge with 4.1
sql/share/romanian/errmsg.txt:
Merge with 4.1
sql/share/russian/errmsg.txt:
Merge with 4.1
sql/share/serbian/errmsg.txt:
Merge with 4.1
sql/share/slovak/errmsg.txt:
Merge with 4.1
sql/share/spanish/errmsg.txt:
Merge with 4.1
sql/share/swedish/errmsg.txt:
Merge with 4.1
sql/share/ukrainian/errmsg.txt:
Merge with 4.1
sql/sql_base.cc:
Merge with 4.1
sql/sql_class.cc:
Merge with 4.1
Use arena code from 4.1
sql/sql_class.h:
Merge with 4.1
Use arena code from 4.1
sql/sql_derived.cc:
Merge with 4.1
sql/sql_lex.cc:
Merge with 4.1
sql/sql_lex.h:
Merge with 4.1
sql/sql_parse.cc:
Merge with 4.1
sql/sql_prepare.cc:
Merge with 4.1
sql/sql_select.cc:
Merge with 4.1
sql/sql_table.cc:
Merge with 4.1
sql/sql_union.cc:
Merge with 4.1
sql/sql_yacc.yy:
Merge with 4.1
sql/tztime.cc:
Merge with 4.1
tests/client_test.c:
Merge with 4.1
configure.in:
Auto merged
mysql-test/r/merge.result:
Auto merged
mysql-test/t/merge.test:
Auto merged
scripts/mysqld_safe.sh:
Auto merged
sql/mysqld.cc:
Auto merged
sql/share/czech/errmsg.txt:
Auto merged
sql/share/danish/errmsg.txt:
Auto merged
sql/sql_yacc.yy:
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/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/romanian/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
mysql-test/r/union.result:
Merge with 4.0
mysql-test/t/union.test:
Merge with 4.0
sql/ha_innodb.cc:
Merge with 4.0
sql/share/german/errmsg.txt:
Merge with 4.0
sql/share/portuguese/errmsg.txt:
Merge with 4.0
sql/share/russian/errmsg.txt:
Merge with 4.0
sql/sql_parse.cc:
Merge with 4.0
sql/sql_union.cc:
Merge with 4.0 (Keep 4.1 code)
into sanja.is.com.ua:/home/bell/mysql/bk/work-5.0
mysql-test/r/view.result:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.h:
Auto merged
libmysql/libmysql.c:
More debug
sql/item.h:
Print value of param if it has a value (when debugging)
sql/log.cc:
Better variable name
sql/sql_insert.cc:
Fix bug casused by merge
sql/sql_parse.cc:
Added missing command names (caused crash when running with --debug)
sql/sql_select.cc:
More debugging
sql/sql_yacc.yy:
Fixed typo
tests/client_test.c:
More debugging
mysql-test/r/view.result:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.h:
Auto merged
tests/client_test.c:
Auto merged
sql/sql_base.cc:
Merge
sql/sql_insert.cc:
Merge
sql/sql_select.cc:
Merge
sql/sql_view.cc:
Merge
sql/table.cc:
Merge
Merged the different find_xxxx_table_in_list functions to one + some inline functions
mysql-test/r/view.result:
Fix result (remove not used view from show tables)
sql/item_subselect.cc:
Remove not used functions
sql/item_subselect.h:
Remove not used functions
sql/mysql_priv.h:
Merged the different find_xxxx_table_in_list functions to one + some inline functions
sql/sql_acl.cc:
More debugging + simple cleanups
sql/sql_base.cc:
Merged the different find_xxxx_table_in_list functions to one + some inline functions
Indentation cleanups & more comments
sql/sql_delete.cc:
Namechange
sql/sql_insert.cc:
Simple optimizations & Style cleanups
Merged common code (in mysql_prepare_insert_check_table)
sql/sql_lex.cc:
function name changes
More comments
sql/sql_parse.cc:
Function name changes
Made check_one_table_access returning bool
More debugging in 'check_access'
Added function 'check_some_access', which is used when creating a view
sql/sql_prepare.cc:
Resetting flag directly after test makes code easier to read
sql/sql_select.cc:
Code simplifications
sql/sql_show.cc:
Indentation cleanups.
Fixed typo in name
sql/sql_update.cc:
Function name change
sql/sql_view.cc:
Simple optimizations.
Style fixes.
Remove view_field_names[]
Simplified 'check_key_in_view()'
sql/table.cc:
Simplified new code in openfrm()
variable name change i -> item
Indentation changes
sql/table.h:
Fixed typo in variable name
Method name change in field iterator: end() -> end_of_fields()
tests/client_test.c:
Changed number to macro
mysql-test/r/view.result:
fixed test
VIEW over droped function
mysql-test/t/view.test:
VIEW over droped function
sql/item_func.cc:
after review fix
sql/sp.cc:
hint to find mysql.proc
sql/sql_lex.h:
hint to find mysql.proc
sql/sql_parse.cc:
hint to find mysql.proc
sql/sql_view.cc:
adding mysql.proc to table list if view contains stored procedures
mysql-test/r/negation_elimination.result:
new tests of negation elimination
mysql-test/t/negation_elimination.test:
new tests of negation elimination
sql/item.h:
test of boolean functions added
sql/item_cmpfunc.cc:
NOT subtree is already checked, so wee need to return just argument
sql/item_cmpfunc.h:
test of boolean functions added
sql/mysql_priv.h:
'place' to detect WHERE clause
sql/sql_parse.cc:
function for creation negated expression
sql/sql_select.cc:
removed unused function
sql/sql_select.h:
removed unused function
sql/sql_yacc.yy:
'place' to detect WHERE clause
mysql-test/r/subselect.result:
ORDER clause printing fixed
mysql-test/r/view.result:
order by refers on integer field
mysql-test/t/view.test:
order by refers on integer field
sql/sql_lex.cc:
ORDER clause printing fixed
sql/sql_parse.cc:
fields for correct ORDER printing added
sql/sql_select.cc:
fields for correct ORDER printing added
sql/table.h:
fields for correct ORDER printing added
BitKeeper/etc/logging_ok:
auto-union
VC++Files/sql/mysqld.dsp:
Auto merged
client/mysql.cc:
Auto merged
client/mysqladmin.c:
Auto merged
BitKeeper/deleted/.del-mysql_install.c~8c089740d79a92:
Auto merged
client/mysqlbinlog.cc:
Auto merged
client/mysqlcheck.c:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqlimport.c:
Auto merged
client/mysqlmanager-pwgen.c:
Auto merged
client/mysqlshow.c:
Auto merged
client/mysqltest.c:
Auto merged
extra/my_print_defaults.c:
Auto merged
extra/perror.c:
Auto merged
extra/resolve_stack_dump.c:
Auto merged
extra/resolveip.c:
Auto merged
include/my_getopt.h:
Auto merged
innobase/buf/buf0rea.c:
Auto merged
isam/isamchk.c:
Auto merged
isam/pack_isam.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
myisam/mi_test1.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisampack.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
sql/gen_lex_hash.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
tools/mysqlmanager.c:
Auto merged
Update to new valgrind
mysql-test/mysql-test-run.sh:
Update for new valgrind
sql/mysql_priv.h:
Remove default argument to mysql_truncate()
sql/sql_parse.cc:
Remove default argument to mysql_truncate()
execute crashes server": we were deleting lex->result
after each execute, but prepared statements assumed that
it's left intact.
The fix adds cleanup() method to select_result hierarchy,
so that result objects can be reused.
Plus we now need to delete result objects more wisely.
mysql-test/r/ps.result:
Test results fixed: test case for bug#5034
mysql-test/t/ps.test:
A test case for bug#5034, few followups
sql/sql_class.cc:
- fix warning in THD::THD
- implementation of cleanup() for select_result hierarchy
- select_export::send_eof was identical to
select_dump::send_eof: moved to the base class select_to_file.
- Statement::end_statement() to end lex, free items, and
delete possible select_result
sql/sql_class.h:
- select_result::cleanup() declaration
-
sql/sql_insert.cc:
- implementation of select_insert::cleanup(): currently
we always create a new instance of select_insert/
select_create on each execute.
sql/sql_lex.cc:
- with more complicated logic of freeing lex->result it's
easier to have it non-zero only if it points to a valid
result.
sql/sql_lex.h:
Now st_lex::st_lex is not empty.
sql/sql_parse.cc:
mysql_execute_command():
- delete select_result *result only if it was created in
this function.
- use end_statement() to cleanup lex and thd in the end of
each statement.
- no need to save THD::lock if this is explain. This save
apparently left from times when derived tables were
materialized here, not in open_and_lock_tables.
sql/sql_prepare.cc:
- call result->cleanup() in reset_stmt_for_execute
- now Statement is responsible for freeing its lex->result.
sql/sql_select.cc:
handle_select():
- don't delete result, it might be needed
for next executions
- result is never null
execute crashes server": we were deleting lex->result
after each execute, but prepared statements assumed that
it's left intact.
The fix adds cleanup() method to select_result hierarchy,
so that result objects can be reused.
Plus we now need to delete result objects more wisely.
unions (crashed randomly), and made "label" not a reserved word.
sql/sql_parse.cc:
Fixed valgrind warning for certain complex unions (which sometime caused crash).
sql/sql_yacc.yy:
The temporary(?) "label" statement should not be a reserved word.
into mysql.com:/home/kostja/work/mysql-4.1-4912
sql/item_cmpfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
a second time". The bug was caused by incompatibility of
negations elimination algorithm and PS: during first statement
execute a subtree with negation was replaced with equivalent
subtree without NOTs.
The problem was that although this transformation was permanent,
items of the new subtree were created in execute-local memory.
The patch adds means to check if it is the first execute of a
prepared statement, and if this is the case, to allocate items
in memory of the prepared statement.
The implementation:
- backports Item_arena from 5.0
- adds Item_arena::is_stmt_prepare(),
Item_arena::is_first_stmt_execute().
- deletes THD::allocate_temporary_pool_for_ps_preparing(),
THD::free_temporary_pool_for_ps_preparing(); they
were redundant.
and adds a few invariants:
- thd->free_list never contains junk (= freed items)
- thd->current_arena is never null. If there is no
prepared statement, it points at the thd.
The rest of the patch contains mainly mechanical changes and
cleanups.
mysql-test/r/ps.result:
Test results updated (test case for Bug#4912)
mysql-test/t/ps.test:
A test case for Bug#4912 "mysqld crashs in case a statement is
executed a second time"
sql/item_cmpfunc.cc:
current_statement -> current_arena
sql/item_subselect.cc:
Statement -> Item_arena, current_statement -> current_arena
sql/item_subselect.h:
Item_subselect does not need to save thd->current_statement.
sql/item_sum.cc:
Statement -> Item_arena
sql/item_sum.h:
Statement -> Item_arena
sql/mysql_priv.h:
Statement -> Item_arena
sql/sql_base.cc:
current_statement -> current_arena
sql/sql_class.cc:
- Item_arena
- convenient set_n_backup_statement, restore_backup_statement
(nice idea, Sanja)
sql/sql_class.h:
- Item_arena: backport from 5.0
- allocate_temporary_pool_for_ps_preparing,
free_temporary_pool_for_ps_preparing removed.
sql/sql_derived.cc:
current_statement -> current_arena
sql/sql_lex.cc:
current_statement -> current_arena
sql/sql_parse.cc:
Deploy invariant that thd->free_list never contains junk items
(backport from 5.0).
sql/sql_prepare.cc:
- backporting Item_arena
- no need to allocate_temporary_pool_for_ps_preparing().
sql/sql_select.cc:
Fix for bug#4912 "mysqld crashs in case a statement is
executed a second time": if this is the first execute of
a prepared statement, negation elimination is
done in memory of the prepared statement.
sql/sql_union.cc:
Backporting Item_arena from 5.0.