sql/ha_partition.cc:
Post-merge fixes.
The new function HA_EXTRA_INSERT_WITH_UPDATE needs to be handled in
ha_partition::extra().
storage/federated/ha_federated.cc:
Post-merge fixes.
Removed leftover characters.
Added a missing brace.
Fixed and improved parenthesis handling in ha_federated::append_stmt_insert().
Moved code from HA_EXTRA_RESET to ha_federated::reset().
storage/federated/ha_federated.h:
Post-merge fixes.
Changed byte to uchar.
Added declaration for ha_federated::reset().
"Federared Transactions Failure"
Bug occurs when the user performs an operation which inserts more than
one row into the federated table and the federated table references a
remote table stored within a transactional storage engine. When the
insert operation for any one row in the statement fails due to
constraint violation, the federated engine is unable to perform
statement rollback and so the remote table contains a partial commit.
The user would expect a statement to perform the same so a statement
rollback is expected.
This bug was fixed by implementing bulk-insert handling into the
federated storage engine. This will relieve the bug for most common
situations by enabling the generation of a multi-row insert into the
remote table and thus permitting the remote table to perform
statement rollback when neccessary.
The multi-row insert is limited to the maximum packet size between
servers and should the size overflow, more than one insert statement
will be sent and this bug will reappear. Multi-row insert is disabled
when an "INSERT...ON DUPLICATE KEY UPDATE" is being performed.
The bulk-insert handling will offer a significant performance boost
when inserting a large number of small rows.
This patch builds on Bug29019 and Bug25511
sql/ha_federated.cc:
bug25513
new member methods:
start_bulk_insert() - initializes memory for bulk insert
end_bulk_insert() - sends any remaining bulk insert and frees memory
append_stmt_insert() - create the INSERT statement
sql/ha_federated.h:
bug25513
new member value:
bulk_insert
new member methods:
start_bulk_insert(), end_bulk_insert(), append_stmt_insert()
make member methods private:
read_next(), index_read_idx_with_result_set()
mysql-test/r/federated_innodb.result:
New BitKeeper file ``mysql-test/r/federated_innodb.result''
mysql-test/t/federated_innodb-slave.opt:
New BitKeeper file ``mysql-test/t/federated_innodb-slave.opt''
mysql-test/t/federated_innodb.test:
New BitKeeper file ``mysql-test/t/federated_innodb.test''
"Federated INSERT failures"
Federated does not correctly handle "INSERT...ON DUPLICATE KEY UPDATE"
However, implementing such support is not reasonably possible without
increasing complexity of the storage engine: checking that constraints
on remote server match local server and parsing error messages.
This patch causes 'ON DUPLICATE KEY' to fail with ER_DUP_KEY message
if a conflict occurs and not to fail silently.
include/my_base.h:
bug25511
new storage engine hint: HA_EXTRA_INSERT_WITH_UPDATE
mysql-test/r/federated.result:
test for bug25511
mysql-test/t/federated.test:
test for bug25511
sql/ha_federated.cc:
bug25511
implement support for handling HA_EXTRA_INSERT_WITH_UPDATE hint
sql/ha_federated.h:
bug25511
new property: insert_dup_update
sql/sql_insert.cc:
bug25511
implement support for HA_EXTRA_INSERT_WITH_UPDATE
When checking duplicates flag, if it is DUP_UPDATE, send hint
to the storage engine.
"REPLACE/INSERT IGNORE/UPDATE IGNORE doesn't work"
Federated does not record neccessary HA_EXTRA flags in order to
support REPLACE/INSERT IGNORE/UPDATE IGNORE.
Implement ::extra() to capture flags neccessary for functionality.
New function append_ident() to better escape identifiers consistantly.
mysql-test/r/federated.result:
test for bug29019
mysql-test/t/federated.test:
test for bug29019
sql/ha_federated.cc:
Bug29019
Federated does not record neccessary HA_EXTRA flags in order to
support REPLACE/INSERT IGNORE/UPDATE IGNORE.
Implement ::extra() to capture flags neccessary for functionality.
New function append_ident() to better escape identifiers consistantly.
sql/ha_federated.h:
bug29019
add 2 member values to ha_federated class
ignore_duplicates and replace_duplicates.
add 1 member method to ha_federated class
extra()
into mysql.com:/home/svoj/devel/mysql/BUG29250/mysql-5.1-engines
mysql-test/t/archive.test:
Auto merged
mysql-test/r/archive.result:
Use local.
storage/archive/ha_archive.cc:
Manual merge.
CHECK TABLE against ARCHIVE table may falsely report table corruption,
or cause server crash.
Fixed by using proper buffer for CHECK TABLE.
Affects both 5.0 and 5.1.
mysql-test/r/archive.result:
A test case for BUG#28916.
mysql-test/t/archive.test:
A test case for BUG#28916.
sql/ha_archive.cc:
We call Field::get_length() from get_row(). Field::get_length() assumes
that the row was read into table->record[0] buffer, which is not the
case when we check a table. As a result we get wrongly initialized
blob length.
Use table->record[0] as record buffer for check table instead.
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/backup.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/events_bugs.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/events_trans.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_dd_basic.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_dd_ddl.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_gis.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/ndb_row_format.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_extraCol_innodb.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_extraCol_myisam.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_incident.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_ndb_extraCol.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_row_tabledefs_2myisam.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_row_tabledefs_3innodb.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/rpl_sp.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/select.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/show_check.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp_gis.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/sp_trans.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/type_timestamp.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/warnings.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/r/xml.result:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/t/grant.test:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
mysql-test/t/partition_grant.test:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
sql/mysql_priv.h:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
sql/share/errmsg.txt:
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
into trift2.:/MySQL/M51/push-5.1
configure.in:
Auto merged
libmysql/libmysql.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
server-tools/instance-manager/listener.cc:
C++ fix of 5.0 is not needed, 5.1 has a different approach.
Assertion failure may happen with falcon + partition + select for
update. This may affect other engines as well.
Though assertion failure is fixed with this patch, falcon still
deadlocks when running falcon_bug_28026.test.
sql/ha_partition.cc:
In case rnd_next fails, we must call ha_rnd_end. This is done
conditionally (NO_CURRENT_PART_ID != m_part_spec.start_part)
in ha_partition::ha_rnd_end. Thus we may not reset
m_part_spec.start_part in case rnd is not ended.
into mysql.com:/home/hf/work/27084/my51-27084
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/sql_partition.h:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/partition.result:
merging
mysql-test/t/partition.test:
merging
sql/sql_partition.cc:
SCCS merged
into olga.mysql.com:/home/igor/mysql-5.1-opt
mysql-test/r/group_min_max.result:
Auto merged
mysql-test/t/group_min_max.test:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_select.cc:
Auto merged
into gleb.loc:/home/uchum/work/bk/5.1-opt
sql/item.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_view.cc:
Auto merged
mysql-test/r/rpl_change_master.result:
Merge with 5.1.
mysql-test/t/rpl_change_master.test:
Merge with 5.1.
sql/sql_acl.cc:
Merge with 5.1.
Max compressed file size was calculated incorretly causing server
crash on INSERT.
With this patch we use proper max file size provided by zlib.
Affects 5.0 only.
sql/ha_archive.cc:
When calculating max compressed file size, use the real offset size
that is provided by zlib, instead of sizeof(z_off_t), which may be
different from actual offset size.
When we're about to write and the data file is almost full flush gzio
buffer to get accurate real file size.
mysql-test/r/archive-big.result:
New BitKeeper file ``mysql-test/r/archive-big.result''
mysql-test/t/archive-big.test:
New BitKeeper file ``mysql-test/t/archive-big.test''
the loose scan optimization for grouping queries was applied returned
a wrong result set when the query was used with the SQL_BIG_RESULT
option.
The SQL_BIG_RESULT option forces to use sorting algorithm for grouping
queries instead of employing a suitable index. The current loose scan
optimization is applied only for one table queries when the suitable
index is covering. It does not make sense to use sort algorithm in this
case. However the create_sort_index function does not take into account
the possible choice of the loose scan to implement the DISTINCT operator
which makes sorting unnecessary. Moreover the current implementation of
the loose scan for queries with distinct assumes that sorting will
never happen. Thus in this case create_sort_index should not call
the function filesort.
mysql-test/r/group_min_max.result:
Added a test case for bug #25602.
mysql-test/t/group_min_max.test:
Added a test case for bug #25602.
into gleb.loc:/home/uchum/work/bk/5.1-opt
libmysql/libmysql.c:
Merge with 5.0-opt.
mysql-test/r/insert_select.result:
Merge with 5.0-opt.
mysql-test/r/mysqlbinlog.result:
Merge with 5.0-opt.
mysql-test/r/rpl_change_master.result:
Merge with 5.0-opt.
mysql-test/r/view.result:
Merge with 5.0-opt.
mysql-test/t/insert_select.test:
Merge with 5.0-opt.
mysql-test/t/mysqlbinlog.test:
Merge with 5.0-opt.
mysql-test/t/rpl_change_master.test:
Merge with 5.0-opt.
mysql-test/t/view.test:
Merge with 5.0-opt.
sql/item.cc:
Merge with 5.0-opt.
sql/item.h:
Merge with 5.0-opt.
sql/log_event.cc:
Merge with 5.0-opt.
sql/sql_select.cc:
Merge with 5.0-opt.