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.
include/my_sys.h:
There are platforms which use '#define errno ...' and then cause a collision with
'extern int errno;', one example is OpenBSD.
Rather than treat them explicitly by the 'HAVE_ERRNO_AS_DEFINE', we can check for these
by using '#ifndef errno'.
mysql-test/r/drop_temp_table.result:
result update
mysql-test/r/mix_innodb_myisam_binlog.result:
result update
mysql-test/r/rpl000001.result:
result update
mysql-test/r/rpl_change_master.result:
result update
mysql-test/r/rpl_deadlock.result:
result update (merge)
mysql-test/t/rpl000001.test:
can't rely on GET_LOCK() to do slave synchro (use table lock instead)
mysql-test/t/rpl_change_master.test:
changing the test as we can't use GET_LOCK() for slave synchro
mysql-test/t/rpl_deadlock.test:
update (merge) binlog positions
mysql-test/t/rpl_get_lock.test:
comment
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)
sql/sql_union.cc:
a fix for --ps-protocol (bug #6089: FOUND_ROWS returns wrong values when no table/view is used)
Don't touch options as itit's not needed.
(next part is updating test results)
sql/item_func.cc:
no need for binlogging DO RELEASE_LOCK() anymore. Make GET_LOCK() do nothing in slave thread.
sql/log_event.cc:
comment fixes
sql/mysqld.cc:
warning removed
sql/slave.cc:
fix after merge
use function-wide declaration also for loop body.
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Get rid of a duplicate declaration ('Uint32 k;' at function start) that caused
compiler failures on 'octane2' (both 32 and 64 bit) and a compiler crash on 'ds20'.
It would be better not to use those variable declarations with a loop scope,
they have caused compile problems again and again.
in slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
optionally retry the transaction a certain number of times (new variable --slave_transaction_retries).
sql/mysql_priv.h:
new var slave_transaction_retries
sql/mysqld.cc:
new variable slave_transaction_retries. Plus fixing a typo.
sql/set_var.cc:
new global variable slave_transaction_retries (will be one per subslave, when we have multimaster).
sql/slave.cc:
Slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
optionally retry the transaction a certain number of times (--slave_transaction_retries).
sql/slave.h:
new RELAY_LOG_INFO::trans_retries.
innobase/include/srv0srv.h:
Auto merged
innobase/srv/srv0srv.c:
Auto merged
myisam/mi_create.c:
Auto merged
myisam/mi_open.c:
Auto merged
myisam/myisamdef.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
mysql-test/r/myisam.result:
SCCS merged
mysql-test/t/myisam.test:
SCCS merged
sql/ha_innodb.h:
SCCS merged
deadlock in MYSQL_LOG::new_file()
style fixes
mysql-test/r/innodb.result:
one more test for truncate
mysql-test/t/innodb.test:
one more test for truncate
sql/ha_innodb.cc:
bug#8151 - truncate leaves a transaction open
sql/handler.cc:
bug#8151 - truncate leaves a transaction open
sql/item.h:
style fix
sql/item_cmpfunc.cc:
style fix
sql/item_cmpfunc.h:
style fix
sql/item_func.cc:
style fix
sql/item_func.h:
style fix
sql/log.cc:
let new_file() to lock LOCK_index,
don't check for prepared_xids in rotate_and_purge()
increase thread_safe_increment when LOCK_log is taken
sql/log_event.cc:
mysqlbinlog now prints a warning if binlog was not closed properly
sql/sql_class.h:
comments
sql/sql_repl.cc:
DBUG_ENTER tag corrected
Added a check, if the table, which we are going to create, is open.
This can happen if a MERGE mapped table is TRUNCATEd.
myisam/mi_open.c:
Bug#8306 - TRUNCATE leads to index corruption
Made test_if_reopen() globally available.
myisam/myisamdef.h:
Bug#8306 - TRUNCATE leads to index corruption
Declared test_if_reopen() as globally available.
mysql-test/r/myisam.result:
Bug#8306 - TRUNCATE leads to index corruption
The test result.
mysql-test/t/myisam.test:
Bug#8306 - TRUNCATE leads to index corruption
The test case.
mysql-test/r/func_group.result:
Added some tests and fix for Bug#5615.
mysql-test/r/show_check.result:
Fix for Bug#5615.
mysql-test/t/func_group.test:
Added some tests.
sql/item_sum.cc:
Fix for Bug#5615.
sql/item_sum.h:
Fix for Bug#5615.
sql/sql_select.cc:
Fix for Bug#5615.
sql/sql_select.h:
Fix for Bug#5615.
delete_all_rows(): Revert previous change.
The transaction has been marked started already
in external_lock().
sql/ha_innodb.cc:
delete_all_rows(): Revert previous change.
The transaction has been marked started already
in external_lock().
row_sel_store_mysql_rec(): Do not try to space-pad BLOB fields. (Bug #8771)
innobase/row/row0sel.c:
row_sel_store_mysql_rec(): Do not try to space-pad BLOB fields. (Bug #8771)
In TRUNCATE TABLE, MySQL may call innobase_xa_prepare() even though there is no active transaction because it was committed in ha_innobase::delete_all_rows(); in innobase_xa_prepare() InnoDB starts then a new transaction; let us adjust the trx->active_trans flag accordingly
sql/ha_innodb.cc:
In TRUNCATE TABLE, MySQL may call innobase_xa_prepare() even though there is no active transaction because it was committed in ha_innobase::delete_all_rows(); in innobase_xa_prepare() InnoDB starts then a new transaction; let us adjust the trx->active_trans flag accordingly