If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
Change the sorting order of TEXT columns in InnoDB: pad with spaces at the end in comparisons; we MUST UPDATE the MySQL MANUAL to warn about the need to rebuild tables (also MyISAM) in certain cases in an upgrade to 5.0.3; TODO: study what complications the missing DATA_BINARY_TYPE flag in InnoDB < 4.0.14 causes: we would compare then also BLOBs with space padding, not just TEXT
Revert the change to the space padding of BLOB and TEXT in comparisons; we cannot change the sorting order, because that would make old tables to appear corrupt; better to change LIKE 'a%' processing in MySQL, so that the lower end of the search interval would be 'a', not 'a '
Fix that 'a' LIKE 'a%' was not true for an InnoDB BLOB or TEXT type column prefix index search: InnoDB assumed that the BLOB and TEXT should not be padded with space in comparisons; this bug is also in 4.1; it may have worked in 4.1 because MySQL may have asked there for strings >= 'a', while in 5.0 it asks for strings >= 'a '
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
Add a settable session variable innodb_support_xa; setting it to 0 can save up to 10 % of CPU time and 150 bytes of space in each undo log
trx0trx.h, trx0undo.c, trx0trx.c, trx0roll.c:
Enable XA if innodb_support_xa is not set to 0; make prepare to do log fsync's according to innodb_flush_log_at_trx_commit
instead of SYS_TABLES.MIX_LEN, because the latter was not
initialized to zero in old MySQL 3.23 releases. This will break
existing MySQL/InnoDB 5.0.3-bk databases for which
SHOW TABLE STATUS displays Row_format=Compact.
which is always false. In a very fast InnoDB shutdown, we just ensure that
no more transactions are running, flush InnoDB log, signal InnoDB threads to die,
and then return from InnoDB (from innobase_end()) without waiting for those threads
to actually die. I have tested on a 4CPU machine that even with --innodb_flush_log_at_trx_commit=0,
this optimized InnoDB very fast shutdown loses no committed transactions. Patch pre-approved by Heikki.
dict_load_table(): Remove the check for row_format=compact for now,
because the flag bit we used (high-order bit of mix_len)
has not been zero for at least two customers.