Apply innodb-5.0-* snapshots: ss1489 and ss1547.
Fixes:
Bug#9709: InnoDB inconsistensy causes "Operating System Error 32/33"
Bug#22819: SHOW INNODB STATUS crashes the server with an assertion failure under high load
Bug#25645: Assertion failure in file srv0srv.c
Bug#27294: insert into ... select ... causes crash with innodb_locks_unsafe_for_binlog=1
Bug#28138: indexing column prefixes produces corruption in InnoDB
Fixed bugs:
#16814: SHOW INNODB STATUS format error in LATEST FOREIGN KEY ERROR section
dict_foreign_key_error_report(): Always print a newline after invoking
dict_print_info_on_foreign_key_in_create_format().
#16827: Better InnoDB error message if ibdata files omitted from my.cnf.
#17126: CHECK TABLE on InnoDB causes a short hang during check of adaptive hash.
CHECK TABLE blocking other queries, by releasing the btr_search_latch
periodically during the adaptive hash table validation.
#17405: Valgrind: conditional jump or move depends on uninitialised valuesw.
buf_block_init(): Reset magic_n, buf_fix_count, and io_fix to avoid testing
uninitialised variables.
#18077: InnoDB uses full explicit table locks in stored FUNCTION.
#18238: When locks exhaust the buffer pool, InnoDB does not roll back the trx.
Check in pessimistic insert and update if the buffer pool is exhausted by locks.
#18252: Disk space leaks in updates of InnoDB BLOB rows.
btr_cur_pessimistic_update(): Invoke rec_get_offset() after rec_set_field_extern_bits().
btr_store_big_rec_extern_fields(): Note that offsets will no longer be valid
after calling this function.
#18283: When InnoDB returns error 'lock table full', MySQL can write to binlog too much.
#18384: InnoDB memory leak on duplicate key errors if row has many columns.
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at func_exit if needed.
#18350: Use consistent read in CREATE ... SELECT .. if innodb_locks_unsafe_for_binlog is used.
Fixed bugs:
BUG#15991: "innodb-file-per-table + symlink database + rename = crash"
BUG#15650: "DELETE with LEFT JOIN crashes server"
BUG#15308: "Problem of Order with Enum Column in Primary Key"
BUG#14189: "VARBINARY and BINARY variables: trailing space ignored"
Temporarily remove error print if MySQL tries to do a SELECT even though trx->n_mysql_tables_in_use is 0. We must return the error print when the lock count of cursors is properly implemented (Bug #12456)
Push the patch of Jan Lindstrom: better comments
ha_innodb.cc:
Partial fix for Bug #12263 : we let InnoDB always to perform a rollback on the trx object if MySQL closes a connection; but we do print a warning to the .err log if an InnoDB transaction was active; we may remove that print later, since the situation really is not a bug; MySQL just is not aware that some cursor operation started an InnoDB transaction
cursors for InnoDB. The idea of the patch is that if MySQL requests
a consistent read view, we open one when open a cursor, set is as the
active view to a transaction when fetch from the cursor, and close
together with cursor close. This patch is associated to bugs #11813,
#11832, and #11833. Contains after review fixes.
Do not test the value of err if the lock operation was skipped because innodb_logs_unsafe_for_binlog was TRUE; though this did not cause any bugs visible to the user, because err is inited to DB_SUCCESS at the start of the function row_search_for_mysql()
Gluh's SESSION/GLOBAL for @variables fix in sql_yacc.yy and
Bar's well_formed_len() changes in ndb code
did not make it and should be re-applied manually
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
Fix Bug #9526 in 5.0: MySQL ENUM and SET columns are internally actually unsigned integer types; we must take care that old tables still treat ENUM and SET (incorrectly) as a character string, while new created tables treat it correctly as an unsigned integer
Fix a crash in a simple search with a key: the dtype->len of a true VARCHAR is the payload maximum len in bytes: it does not include the 2 bytes MySQL uses to store the string length
ha_innodb.cc:
Fix a crash in true VARCHARs in test-innodb: we passed a wrong pointer to the column conversion in an UPDATE
rowid_order_innodb.result, ps_3innodb.result, innodb.result, endspace.result:
Edit InnoDB test results to reflect the arrival of true VARCHARs
Fix bug #8677: if one used LOCK TABLES, created an InnoDB temp table, and did a multi-table update where a MyISAM table was the update table and the temp table was a read table, then InnoDB aserted in row0sel.c because n_mysql_tables_in_use was 0. Also, we remove the assertion altogether and just print an error to the .err log if this important consistency check fails. Then it is up to the user to read the .err log and notice the problem if there still are errors in MySQL's table locking.