into chilla.local:/home/mydev/mysql-5.1-axmrg
configure.in:
Auto merged
mysql-test/Makefile.am:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/myisam.test:
Auto merged
from log):
When row-based logging is used, the CREATE-SELECT is written as two
parts: as a CREATE TABLE statement and as the rows for the table. For
both transactional and non-transactional tables, the CREATE TABLE
statement was written to the transaction cache, as were the rows, and
on statement end, the entire transaction cache was written to the binary
log if the table was non-transactional. For transactional tables, the
events were kept in the transaction cache until end of transaction (or
statement that were not part of a transaction).
For the case when AUTOCOMMIT=0 and we are creating a transactional table
using a create select, we would then keep the CREATE TABLE statement and
the rows for the CREATE-SELECT, while executing the following statements.
On a rollback, the transaction cache would then be cleared, which would
also remove the CREATE TABLE statement. Hence no table would be created
on the slave, while there is an empty table on the master.
This relates to BUG#22865 where the table being created exists on the
master, but not on the slave during insertion of rows into the newly
created table. This occurs since the CREATE TABLE statement were still
in the transaction cache until the statement finished executing, and
possibly longer if the table was transactional.
This patch changes the behaviour of the CREATE-SELECT statement by
adding an implicit commit at the end of the statement when creating
non-temporary tables. Hence, non-temporary tables will be written to the
binary log on completion, and in the even of AUTOCOMMIT=0, a new
transaction will be started. Temporary tables do not commit an ongoing
transaction: neither as a pre- not a post-commit.
The events for both transactional and non-transactional tables are
saved in the transaction cache, and written to the binary log at end
of the statement.
mysql-test/r/rpl_row_create_table.result:
Result change
mysql-test/t/rpl_row_create_table.test:
Requring InnoDB for slave as well.
Adding test CREATE-SELECT that is rolled back explicitly.
Changing binlog positions.
sql/log.cc:
Adding helper class to handle lock/unlock of mutexes using RAII.
Factoring out code into write_cache() function to transaction cache
to binary log.
Adding function THD::binlog_flush_transaction_cache() to flush the
transaction cache to the binary log file.
Factoring out code into binlog_set_stmt_begin() to set the beginning
of statement savepoint.
Clearing before statement point when transaction cache is truncated
so that these points are out of range.
sql/log.h:
Adding method MYSQL_BIN_LOG::write_cache()
sql/log_event.h:
Replicating OPTION_NOT_AUTOCOMMIT flag (see changeset comment)
sql/mysql_priv.h:
Although left-shifting signed integer values is well-defined,
it has potential for strange errors. Using unsigned long long
instead of signed long long since this is the type of the options
flags.
sql/slave.cc:
Adding printout of transaction-critical thread flags.
sql/sql_class.h:
Adding function THD::binlog_flush_transaction_cache()
Adding function THD::binlog_set_stmt_begin()
sql/sql_insert.cc:
Adding code to cache events for a CREATE-SELECT statement.
Disabling binlog for SBR (but not RBR) when sending error for select part
of CREATE-SELECT statement.
Adding implicit commit at end of statement for non-temporary tables.
mysql-test/t/rpl_row_create_table-slave.opt:
New BitKeeper file ``mysql-test/t/rpl_row_create_table-slave.opt''
An update that used a join of a table to itself and modified the
table on one side of the join reported the table as crashed or
updated wrong rows.
Fixed by creating temporary table for self-joined multi update statement.
mysql-test/r/myisam.result:
A test case for BUG#21310.
mysql-test/t/myisam.test:
A test case for BUG#21310.
sql/lock.cc:
Exclude 'table' param from check.
sql/sql_update.cc:
Disabling record cache for self-joined multi update statement is wrong.
The join must only see the table as it was at the beginning of the statement.
safe_update_on_fly check if it is safe to update first table on the fly, that is
not creating temporary table. It is possible in case a row from this table is
never read more than once. safe_update_on_fly now detect self-joined table and
refuse to update this table on the fly.
InnoDB timeout behavior (Bug #24200)
mysql-test/t/innodb_mysql-master.opt:
Set --innodb-lock-wait-timeout=2, since test for bug #24200 times out.
This *could* cause random test failures if some long-running transaction concurrency is being tested. However, such a test really should go in innodb-big or some other test file.
Handling of large signed/unsigned values was not consistent, so some string functions could return bogus results.
The current fix is to simply patch up the val_str() methods for those string items.
It would be good clean this code up in general, to make similar problems much harder to make. This is left as an exercise for the reader.
mysql-test/r/func_str.result:
Update test results for bug #24947
mysql-test/t/func_str.test:
Add test case for bug #24947
sql/item_strfunc.cc:
Adjust some string function Items' val_str() methods to handle large signed/unsigned arguments properly
spatial index
While executing OPTIMIZE TABLE on MyISAM tables the server re-creates the
index file(s) in order to sort them physically by the key. This cannot be
done for R-tree indexes as it makes no sense.
The server was not checking the type of the index and was accessing an
R-tree index as if it was a B-tree.
Fixed by preventing sorting the index file if it contains an R-tree index.
myisam/mi_check.c:
Bug #23578: Corruption prevents Optimize table from working properly with a
spatial index
- disable sorting the index file if it contains an R-tree index.
mysql-test/r/gis-rtree.result:
Bug #23578: Corruption prevents Optimize table from working properly with a
spatial index
- test case
mysql-test/t/gis-rtree.test:
Bug #23578: Corruption prevents Optimize table from working properly with a
spatial index
- test case
The final testcase needing new error codes. Really.
mysql-test/r/rpl_row_tabledefs_2myisam.result:
WL #3031
Ack! Another test needing new error code results
As presently PARTITIONS + FEDERATED just doesn't work i added error message
to inform user about that.
Should be enabled again after releted WL's completion.
storage/federated/ha_federated.cc:
partitioning disabled in FEDERATED engine
mysql-test/r/partition_federated.result:
result added
mysql-test/t/partition_federated.test:
test added
If SELECT-part of CREATE VIEW statement contains '\Z',
it is not handled correctly.
The problem was in String::print().
Symbol with code 032 (26) is replaced with '\z',
which is not supported by the lexer.
The fix is to replace the symbol with '\Z'.
mysql-test/r/view.result:
Update result file.
mysql-test/t/view.test:
Add test case for BUG#24293.
sql/sql_string.cc:
We should replace 032 with \Z, since lexer does not understand \z.
- Added more test results for hard-coded error numbers
- Fix for windows
mysql-test/r/rpl_extraCol_myisam.result:
WL# 3031
More result files for tests that have hard-coded error numbers (!!)
mysql-test/r/rpl_ndb_extraCol.result:
WL# 3031
More result files for tests that have hard-coded error numbers (!!)
mysql-test/r/rpl_row_tabledefs_3innodb.result:
WL# 3031
More result files for tests that have hard-coded error numbers (!!)
sql/CMakeLists.txt:
WL# 3031
Noticed windows build breaks, added sql_servers.cc to CMakeLists.txt
into maint1.mysql.com:/data/localhome/msvensson/mysql-5.1-new-maint
mysql-test/r/symlink.result:
Auto merged
mysql-test/t/symlink.test:
Auto merged
include/my_pthread.h:
Manual merge
when REORGANIZE creates new partition, no_subparts for that partition
isn't set right (call handler::set_partitions_defaults always returns 1)
Normally the number of subpartitions should be inherited from the
table.
mysql-test/r/partition.result:
result fixed
mysql-test/t/partition.test:
testcase
sql/sql_partition.cc:
no_subparts is set for newly created partitions
mysql-test/t/rpl_ndb_do_db-slave.opt:
New cluster replication test case to test do_db option
mysql-test/t/rpl_ndb_do_db.test:
New cluster replication test case to test do_db option
mysql-test/r/rpl_ndb_do_db.result:
New cluster replication test case to test do_db option
mysql-test/r/rpl_ndb_do_table.result:
New cluster replication test case to test do_table option
mysql-test/t/rpl_ndb_do_table-slave.opt:
New cluster replication test case to test do_table option
mysql-test/t/rpl_ndb_do_table.test:
New cluster replication test case to test do_table option
mysql-test/t/rpl_ndb_rep_ignore-slave.opt:
New cluster replication test case to test replicate_ignore option(s)
mysql-test/t/rpl_ndb_rep_ignore.test:
New cluster replication test case to test replicate_ignore option(s)
mysql-test/r/rpl_ndb_rep_ignore.result:
New cluster replication test case to test replicate_ignore option(s)
Yet another test result that needed to be regenerated due to new error
messages. This test only runs via ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=row rpl_extraCol_innodb
- Move the specific test case to a separate file that is run only
if we have a disabled handler.
mysql-test/r/warnings.result:
Move the test for warning that table type is changed to separate file
as it only occurs when engine is disabled.
mysql-test/t/warnings.test:
Move the test for warning that table type is changed to separate file
as it only occurs when engine is disabled.
mysql-test/r/warnings_engine_disabled.result:
Move the test for warning that table type is changed to separate file
as it only occurs when engine is disabled.
mysql-test/t/warnings_engine_disabled-master.opt:
New BitKeeper file ``mysql-test/t/warnings_engine_disabled-master.opt''
mysql-test/t/warnings_engine_disabled.test:
Move the test for warning that table type is changed to separate file
as it only occurs when engine is disabled.
into polly.local:/home/kaa/src/maint/mysql-5.1-maint
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysys/typelib.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
into polly.local:/tmp/maint/bug24117/my51-bug24117
mysql-test/t/sp.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
mysql-test/r/sp.result:
Manual merge
the UDF
When deleting a user defined function MySQL must remove it from both the
in-memory hash table and the mysql.proc system table.
Finding (and removal therefore) from the internal hash table is case
insensitive (or whatever the default charset is), whereas finding and
removal from the system table is case sensitive.
As a result if you supply a function name that is not in the same character
case to DROP FUNCTION the server will remove the function only from the
in-memory hash table and will keep the row in mysql.proc system table.
This will cause inconsistency between the two structures (that is fixed
only by restarting the server).
Fixed by using the name in the precise case (from the in-memory hash table)
to delete the row in the mysql.proc system table.
mysql-test/r/udf.result:
Bug #15439: UDF name case handling forces DELETE FROM mysql.func to remove
the UDF
- test case
mysql-test/t/udf.test:
Bug #15439: UDF name case handling forces DELETE FROM mysql.func to remove
the UDF
- test case
sql/sql_udf.cc:
Bug #15439: UDF name case handling forces DELETE FROM mysql.func to remove
the UDF
- use the exact function name in deleting from mysql.proc.
into mysql.com:/windows/Linux_space/MySQL/mysql-5.1
mysql-test/r/ndb_read_multi_range.result:
Auto merged
mysql-test/t/ndb_read_multi_range.test:
Auto merged