errors when reading a log record which has a 0-length header
(like LOGREC_REDO_DROP_TABLE).
storage/maria/ma_loghandler.c:
Functions reading record's header now don't use 0 to indicate error,
as some valid records have a 0-length header (like REDO_DROP_TABLE).
Instead, negative values are used for EOF and error.
storage/maria/ma_loghandler.h:
functions to read record's header now return an int
(either the length of this header (>=0) or some negative values
for EOF or error).
storage/maria/ma_recovery.c:
update to the new log handler's behaviour. Note the @todo.
storage/maria/maria_read_log.c:
inform when program failed
storage/maria/unittest/ma_test_loghandler-t.c:
update to new log handler's API
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
update to new log handler's API
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
update to new log handler's API
in the pagecache: fixing wrong assertion and a test case.
maria.test and ps_maria.test still fail.
mysql-test/r/maria.result:
result update
mysql-test/t/maria.test:
added test for incorrect assert on page's type
storage/maria/ma_pagecache.c:
It is allowed to change unknown type to any legal type of page in the
pagecache.
into dev3-63.(none):/home/zhl/mysql/mysql-5.1/bug23354
storage/ndb/src/common/debugger/EventLogger.cpp:
Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
Auto merged
into weblab.(none):/home/marcsql/TREE/mysql-5.1-25422-d
client/mysqldump.c:
Auto merged
mysql-test/r/log_state.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sp.cc:
Auto merged
maria.test and ps_maria.test still fail.
mysys/mf_keycache.c:
split string annoys some compilers
storage/maria/ha_maria.cc:
fix for compiler warnings
storage/maria/ma_test1.c:
porting Serg's fix for BUG#30094 to Maria
storage/maria/ma_test2.c:
porting Serg's fix for BUG#30094 to Maria
storage/maria/ma_test3.c:
porting Serg's fix for BUG#30094 to Maria
storage/maria/ma_test_recovery:
don't print ma_test1's messages if no problem
updated to keypart_map api
storage/myisam/mi_test2.c:
Bug #30094 mi_test_all: assertion failure
updated to keypart_map api
prefix char keys are not supported anymore
Jul 7th). "maria.test" and "ps_maria.test" still fail;
"ma_test_all" starts failing (MyISAM has the same issue see BUG#30094).
include/maria.h:
merging MyISAM changes into Maria
mysys/mf_keycache.c:
mi_test_all showed "floating point exception", this was already
fixed in the latest 5.1, importing fix.
sql/item_xmlfunc.cc:
compiler warning (already fixed in latest 5.1)
storage/maria/ha_maria.cc:
merging MyISAM changes into Maria. See #ifdef ASK_MONTY.
storage/maria/ha_maria.h:
merging MyISAM changes into Maria
storage/maria/ma_cache.c:
merging MyISAM changes into Maria
storage/maria/ma_check.c:
merging MyISAM changes into Maria
storage/maria/ma_create.c:
merging MyISAM changes into Maria
storage/maria/ma_dynrec.c:
merging MyISAM changes into Maria
storage/maria/ma_extra.c:
merging MyISAM changes into Maria
storage/maria/ma_ft_boolean_search.c:
merging MyISAM changes into Maria
storage/maria/ma_ft_nlq_search.c:
merging MyISAM changes into Maria
storage/maria/ma_info.c:
merging MyISAM changes into Maria
storage/maria/ma_key.c:
merging MyISAM changes into Maria
storage/maria/ma_loghandler.c:
compiler warning (part->length is size_t)
storage/maria/ma_open.c:
merging MyISAM changes into Maria
storage/maria/ma_preload.c:
merging MyISAM changes into Maria
storage/maria/ma_range.c:
merging MyISAM changes into Maria
storage/maria/ma_rkey.c:
merging MyISAM changes into Maria
storage/maria/ma_rt_index.c:
merging MyISAM changes into Maria
storage/maria/ma_rt_key.c:
merging MyISAM changes into Maria
storage/maria/ma_rt_split.c:
merging MyISAM changes into Maria
storage/maria/ma_search.c:
merging MyISAM changes into Maria
storage/maria/ma_sort.c:
merging MyISAM changes into Maria
storage/maria/maria_def.h:
merging MyISAM changes into Maria
Bug#25422 (Hang with log tables)
Bug 17876 (Truncating mysql.slow_log in a SP after using cursor locks the
thread)
Bug 23044 (Warnings on flush of a log table)
Bug 29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
a deadlock)
Prior to this fix, the server would hang when performing concurrent
ALTER TABLE or TRUNCATE TABLE statements against the LOG TABLES,
which are mysql.general_log and mysql.slow_log.
The root cause traces to the following code:
in sql_base.cc, open_table()
if (table->in_use != thd)
{
/* wait_for_condition will unlock LOCK_open for us */
wait_for_condition(thd, &LOCK_open, &COND_refresh);
}
The problem with this code is that the current implementation of the
LOGGER creates 'fake' THD objects, like
- Log_to_csv_event_handler::general_log_thd
- Log_to_csv_event_handler::slow_log_thd
which are not associated to a real thread running in the server,
so that waiting for these non-existing threads to release table locks
cause the dead lock.
In general, the design of Log_to_csv_event_handler does not fit into the
general architecture of the server, so that the concept of general_log_thd
and slow_log_thd has to be abandoned:
- this implementation does not work with table locking
- it will not work with commands like SHOW PROCESSLIST
- having the log tables always opened does not integrate well with DDL
operations / FLUSH TABLES / SET GLOBAL READ_ONLY
With this patch, the fundamental design of the LOGGER has been changed to:
- always open and close a log table when writing a log
- remove totally the usage of fake THD objects
- clarify how locking of log tables is implemented in general.
See WL#3984 for details related to the new locking design.
Additional changes (misc bugs exposed and fixed):
1)
mysqldump which would ignore some tables in dump_all_tables_in_db(),
but forget to ignore the same in dump_all_views_in_db().
2)
mysqldump would also issue an empty "LOCK TABLE" command when all the tables
to lock are to be ignored (numrows == 0), instead of not issuing the query.
3)
Internal errors handlers could intercept errors but not warnings
(see sql_error.cc).
4)
Implementing a nested call to open tables, for the performance schema tables,
exposed an existing bug in remove_table_from_cache(), which would perform:
in_use->some_tables_deleted=1;
against another thread, without any consideration about thread locking.
This call inside remove_table_from_cache() was not required anyway,
since calling mysql_lock_abort() takes care of aborting -- cleanly -- threads
that might hold a lock on a table.
This line (in_use->some_tables_deleted=1) has been removed.
sql/handler.cc:
Moved logic for system / log tables in the SQL layer.
sql/handler.h:
Moved logic for system / log tables in the SQL layer.
sql/lock.cc:
Revised locking of log tables
sql/log.cc:
Major cleanup: changed how log tables are locked / written to.
sql/log.h:
Major cleanup: changed how log tables are locked / written to.
sql/mysql_priv.h:
performance schema helpers
sql/slave.cc:
open_ltable() lock flags
sql/sp.cc:
open_ltable() lock flags
sql/sql_acl.cc:
open_ltable() lock flags
sql/sql_class.h:
performance schema helpers
sql/sql_delete.cc:
log tables cleanup in TRUNCATE
sql/sql_error.cc:
Internal handlers can also intercept warnings
sql/sql_insert.cc:
open_ltable() lock flags
sql/sql_parse.cc:
performance schema helpers
sql/sql_plugin.cc:
open_ltable() lock flags
sql/sql_rename.cc:
log tables cleanup in RENAME
sql/sql_servers.cc:
open_ltable() lock flags
sql/sql_show.cc:
Move INFORMATION_SCHEMA_NAME to table.cc
sql/sql_table.cc:
log tables cleanup (admin operations, ALTER TABLE)
sql/sql_udf.cc:
open_ltable() lock flags
sql/table.cc:
Implemented TABLE_CATEGORY.
sql/share/errmsg.txt:
Changed the wording and name of ER_CANT_READ_LOCK_LOG_TABLE
sql/table.h:
Implemented TABLE_CATEGORY.
storage/csv/ha_tina.cc:
Moved logic for system / log tables in the SQL layer.
storage/csv/ha_tina.h:
Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.cc:
Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.h:
Moved logic for system / log tables in the SQL layer.
client/mysqldump.c:
Don't lock tables in the ignore list.
Don't issue empty LOCK TABLES queries.
sql/sql_base.cc:
log tables cleanup
performance schema helpers
mysql-test/r/ps.result:
Adjust test results
mysql-test/r/show_check.result:
Adjust test results
mysql-test/r/status.result:
Adjust test results
mysql-test/t/log_state.test:
Added tests for Bug#29129
mysql-test/t/ps.test:
Make the test output deterministic
mysql-test/t/show_check.test:
Make the test output deterministic
mysql-test/r/log_state.result:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
---
Adjust test results
mysql-test/r/log_tables.result:
cleanup for -ps-protocol
mysql-test/t/log_tables.test:
cleanup for -ps-protocol
sql/set_var.cc:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
---
log tables cleanup
found in pushbuild on sapsrv1. Some not fixed as not repeatable
on my machine (32/64 bit issue?).
Fixes for some test failures:
- "maria-connect" now passes;
- "maria": after fixing the obvious reasons for failures, the test
went further and hit a more complex issues: difference in the output
of EXPLAIN output; not fixed;
- "ps_maria" still crashes in assertion
mysqld: ha_maria.cc:1627: virtual int ha_maria::index_read(uchar*, const uchar*, uint, ha_rkey_function): Ass
ertion `inited == INDEX' failed, as already observable in pushbuild.
All this might just be due to an incomplete merge of MyISAM changes
into Maria when 5.1 was last merged to mysql-maria.
include/my_global.h:
temporary fix until next merge of 5.1; without this it does not build
mysql-test/r/maria-connect.result:
position changed
mysql-test/t/maria-connect.test:
If one wants to use the binlog it has to ask for it.
1582 is not used for dup entry error anymore (it was in older 5.1).
Size of first event in binlog was increased by 4 (when the new type
of event "gap" was added).
mysql-test/t/maria.test:
1582 not used anymore in this case
storage/maria/ha_maria.cc:
engine now has to say what binlogging it supports
storage/maria/ma_blockrec.c:
fix for compiler warnings ("comparison is always true" or "always
false")
storage/maria/ma_loghandler.c:
fix for compiler warnings (comparing char* to uchar*)
storage/maria/ma_packrec.c:
fix for compiler warning (fix simply merged from MyISAM)
storage/maria/ma_pagecache.c:
info_check_pin() was not used so gave a compiler warning.
storage/maria/ma_pagecache.h:
fixing typo from the last 5.1->maria merge.
storage/maria/ma_recovery.c:
my_free() has a void* argument, so why cast. byte->uchar.
storage/maria/ma_search.c:
fix for compiler warning (fix simply merged from MyISAM)
storage/maria/maria_read_log.c:
gptr->uchar*
storage/maria/trnman.c:
probable fix for warning found in pushbuild (but not on my machine):
storage/maria/trnman.c: 142
passing argument 6 of \u2018lf_hash_init\u2019 from incompatible pointer type
on sapsrv1.
sql/handler.cc:
Auto merged
storage/maria/ha_maria.cc:
Auto merged
storage/maria/ma_blockrec.c:
Auto merged
storage/maria/ma_close.c:
Auto merged
storage/maria/ma_create.c:
Auto merged
storage/maria/ma_loghandler.c:
Auto merged
storage/maria/ma_loghandler.h:
Auto merged
storage/maria/ma_test2.c:
Auto merged
storage/maria/maria_read_log.c:
will merge by hand
Unit test for recovery: runs ma_test1 and ma_test2 (both only with
INSERTs and DELETEs; UPDATEs disabled as not handled by recovery)
then moves the tables elswhere; recreates tables from the log, and
compares and fails if there is a difference. Passes now.
Most of maria_read_log.c moved to ma_recovery.c, as it will be re-used
for recovery-from-ha_maria.
Bugfixes of applying of REDO_INSERT, REDO_PURGE_ROW.
Applying of REDO_PURGE_BLOCKS, REDO_DELETE_ALL, REDO_DROP_TABLE,
UNDO_ROW_INSERT (in REDO phase only, i.e. just doing records++),
UNDO_ROW_DELETE, UNDO_ROW_PURGE.
Code cleanups.
Monty: please look for "QQ". Sanja: please look for "Sanja".
Future tasks: recovery of the bitmap (easy), recovery of the state
(make it idempotent), more REDOs (Monty to work on
REDO_UPDATE?), UNDO phase...
Pushing this cset as it looks safe, contains test and bugfixes which
will help Monty implement applying of REDO_UPDATE.
sql/handler.cc:
typo
storage/maria/Makefile.am:
Adding ma_test_recovery (which ma_test_all invokes, and which can
also be run alone). Most of maria_read_log.c moved to ma_recovery.c
storage/maria/ha_maria.cc:
comments
storage/maria/ma_bitmap.c:
fixing comments. 2 -> sizeof(maria_bitmap_marker).
Bitmap-related part of _ma_initialize_datafile() moves in bitmap module.
Now putting the "bm" signature when creating the first bitmap page
(it used to happen only at next open, but that
caused an annoying difference when testing Recovery if the original
run didn't open the table, and it looks more
logical like this: it goes to disk only with its signature correct);
see the "QQ" comment towards the _ma_initialize_data_file() call
in ma_create.c for more).
When reading a bitmap page, verify its signature (happens when normally
using the table or when CHECKing it; not when REPAIRing it).
storage/maria/ma_blockrec.c:
* no need to sync the data file if table is not transactional
* Comments, code cleanup (log-related data moved to log-related code
block, int5store->page_store).
* Store the table's short id into LOGREC_UNDO_ROW_PURGE, like we
do for other records (though this record will soon be replaced
with a CLR).
* If "page" is 1 it means the page which extends from byte
page*block_size+1 to (page+1)*block_size (byte number 1 being
the first byte of the file). The last byte of the file is
data_file_length (same convention).
A new page needs to be created if the last byte of the page is
beyond the last byte of the file, i.e.
(page+1)*block_size+1 > data_file_length, so we correct the test
(bug found when testing log applying for ma_test1 -M -T --skip-update).
* update the page's LSN when removing a row from it during
execution of a REDO_PURGE_ROW record (bug found when testing log
applying for ma_test1 -M -T --skip-update).
* applying of REDO_PURGE_BLOCKs (limited to a one-page range for now).
storage/maria/ma_blockrec.h:
new functions. maria_bitmap_marker does not need to be exported.
storage/maria/ma_close.c:
we can always flush the table's state when closing the last instance
of the table. And it is needed for maria_read_log (as it does
not use maria_lock_database()).
storage/maria/ma_control_file.c:
when in Recovery, some assertions should not be used.
storage/maria/ma_control_file.h:
double-inclusion safe
storage/maria/ma_create.c:
during recovery, don't log records. Comments.
Moving the creation of the first bitmap page to ma_bitmap.c
storage/maria/ma_delete_table.c:
during recovery, don't log records. Log the end-zero of the dropped
table's name, so that recovery can use the string in place without
extending it to fit an end zero.
storage/maria/ma_loghandler.c:
* inwrite_rec_hook also needs access to the MARIA_SHARE, like
prewrite_rec_hook. This will be needed to update
share->records_diff (in the upcoming patch "recovery of the state").
* LOG_DESC::record_ends_group changed to an enum.
* LOG_DESC for LOGREC_REDO_PURGE_BLOCKS and LOGREC_UNDO_ROW_PURGE
corrected
* Sanja please see the @todo LOG BUG
* avoiding DBUG_RETURN(func()) as it gives confusing debug traces.
storage/maria/ma_loghandler.h:
- log write hooks called while the log's lock is held (inwrite_rec_hook)
now need the MARIA_SHARE, like prewrite_rec_hook already had
- instead of a bool saying if this record's type ends groups or not,
we refine: it may not end a group, it may end a group, or it may
be a group in itself. Imagine that we had a physical write failure
to a table before we log the UNDO, we still end up in
external_lock(F_UNLCK) and then we log a COMMIT: we don't want
to consider this COMMIT as ending the group of REDOs (don't want
to execute those REDOs during Recovery), that's why we say "COMMIT
is a group in itself, it aborts any previous group". This also
gives one more sanity check in maria_read_log.
storage/maria/ma_recovery.c:
New Recovery code, replacing the old pseudocode.
Most of maria_read_log moved here.
Call-able from ha_maria, but not enabled yet.
Compared to the previous version of maria_read_log, some bugs have
been fixed, debugging output can go to stdout or a disk file (for now
it's useful for me, later it can be changed), execution of
REDO_DROP_TABLE, REDO_DELETE_ALL, REDO_PURGE_BLOCKS has been added. Duplicate code
has been factored into functions. We abort an unfinished group
of records if we see a record which is a group in itself (like COMMIT).
No need for maria_panic() after a bug (which caused tables to not
be closed) was fixed; if there is yet another bug I prefer to see it.
When opening a table for Recovery, set data_file_length
and key_file_length to their real physical value (these are the
easiest state members to restore :). Warn us if the last page
was truncated (but Recovery handles it).
MARIA_SHARE::state::state::records is now partly recovered (not
idempotent, but works if recreating tables from scracth).
When applying a REDO to a page, stamp it with the UNDO's LSN
(current_group_end_lsn), not with the REDO's LSN; it makes
the table more identical to the original table (easier to compare
the two tables in the end).
Big thing missing: some types of REDOs are not handled,
and the UNDO phase does not exist (missing functions to execute UNDOs
to actually rollback). So for now tests are only inserting/deleting
a few 100 rows, closing the table and seeing if the log is applied ok;
it works. UPDATE not handled.
storage/maria/ma_recovery.h:
new functions: ma_recover() for recovery from inside ha_maria;
_ma_apply_log() for maria_read_log (ma_recover() calls _ma_apply_log()).
Btw, we need to not use the word "recover" for REPAIR/maria_chk anymore.
storage/maria/ma_rename.c:
don't write log records during recovery
storage/maria/ma_test2.c:
- fail if maria_info() or other subtests find some wrong information
- new option -g to skip updates.
- init the translog before creating the table, so that log applying
can work.
- in "#if 0" you'll see some fixed bugs (will be removed).
storage/maria/ma_test_all.sh:
cleanup files. Test log applying.
storage/maria/maria_read_log.c:
most of the logic moves to ma_recovery.c to be shared between
maria_read_log and recovery-from-inside-mysqld.
See ma_recovery.c for additional changes made to the moved code.
storage/maria/ma_test_recovery:
unit test for Recovery. Tests insert and delete,
REDO_UPDATE not yet coded.
Script is called from ma_test_all. Can run standalone.
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/r/having.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/having.test:
Auto merged
sql/field.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/include/mix1.inc:
Merge with 5.0-opt.
mysql-test/r/create.result:
Merge with 5.0-opt.
mysql-test/r/innodb_mysql.result:
Merge with 5.0-opt.
mysql-test/r/type_enum.result:
Merge with 5.0-opt.
mysql-test/t/type_enum.test:
Merge with 5.0-opt.
sql/filesort.cc:
Merge with 5.0-opt.
sql/sql_base.cc:
Merge with 5.0-opt.
sql/table.cc:
Merge with 5.0-opt.
storage/innobase/handler/ha_innodb.cc:
Merge with 5.0-opt.
into xiphis.org:/anubis/antony/work/p2-bug25679.3.merge-5.1
mysql-test/r/federated.result:
Auto merged
mysql-test/t/federated.test:
Auto merged
storage/federated/ha_federated.h:
Auto merged
storage/federated/ha_federated.cc:
manual merge 5.0 to 5.1
Stopping mysql server could result in an entry in mysql error
file: "InnoDB: Error: MySQL is freeing a thd".
This happened because InnoDB assumes that the server will never
call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
failed.
Prior to this patch we haven't had strict definition whether
external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
fails.
This patch states that we never call external_lock(F_UNLCK) in case
external_lock(READ/WRITE) fails.
mysql-test/suite/binlog/t/disabled.def:
Re-enabled binlog_innodb and binlog_killed tests.
sql/ha_ndbcluster.cc:
Restore handler state in case external_lock() failed.
sql/ha_partition.cc:
Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
sql/lock.cc:
Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
storage/myisammrg/myrg_locking.c:
Restore handler state in case external_lock() failed.
for enabling threads. However, duplicate AC_PROG_* macros in the
innobase plug.in file were resetting $CC and causing link errors.
As AC_PROG_* macros are already used in the main configure.in file
there should be no need for them to be duplicated here too.
storage/innobase/plug.in:
Remove AC_PROG_* macros
Fixes:
- Bug #23710: crash_commit_before fails if innodb_file_per_table=1
- Bug #28254: innodb crash if shutdown during innodb_table_monitor is running
- Bug #28604: innodb_force_recovery restricts data dump
- Bug #29097: fsp_get_available_space_in_free_extents() is capped at 4TB
- Bug #29155: Innodb "Parallel recovery" is not prevented
storage/innobase/Makefile.am:
Apply snapshot innodb-51-ss1644
Revision r1632:
Add include/lock0priv.h to noinst_HEADERS in Makefile.am.
Revision r1636:
Move lock_get_type() from lock/lock0lock.c to include/lock0priv.ic:
* lock0lock.c: remove lock_get_type() and include include/lock0priv.ic
* lock0priv.h: include lock0priv.ic and add lock_get_type() prototype
* Makefile.am: add lock0priv.ic to noinst_HEADERS
* lock0priv.ic: introduce this new file containing the body of
lock_get_type()
This move is necessary in order to use lock_get_type() from other lock/
source files (it's going to be used in lock/lock0iter.c).
Approved by: Heikki
Revision r1638:
Introduce a lock queue iterator for easy (and opaque) traversing of lock
queues. Supports table and record lock queues via the same interface.
There is only "get previous" method because currently there is no need
for "get next" - it would be unused. Feel free to add one if needed.
Approved by: Heikki
storage/innobase/buf/buf0buf.c:
Apply snapshot innodb-51-ss1644
Revision r1624:
Fix change missed as part of Bug 15815. Use a function to check if a block
needs to be made younger.
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/buf/buf0lru.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/fsp/fsp0fsp.c:
Apply snapshot innodb-51-ss1644
Revision r1605:
Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
by typecasting the variables before multiplying them, so that the result of
the multiplication is of type "unsigned long long".
I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
use it without overwriting it with zeroes (by commenting the code that
overwrites :newraw files).
New type ullint is introduced with the sole purpose of shortening
"unsigned long long", please do not define it to something else than
"unsigned long long".
Approved by: Heikki
storage/innobase/handler/ha_innodb.cc:
Apply snapshot innodb-51-ss1644
Revision r1605:
Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
by typecasting the variables before multiplying them, so that the result of
the multiplication is of type "unsigned long long".
I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
use it without overwriting it with zeroes (by commenting the code that
overwrites :newraw files).
New type ullint is introduced with the sole purpose of shortening
"unsigned long long", please do not define it to something else than
"unsigned long long".
Approved by: Heikki
Revision r1573:
create_table_def(): Eliminate the inline function call to dict_table_is_comp()
that was introduced in r1571. Inlining is disabled in ha_innodb.cc.
Revision r1574:
innodb_check_for_record_too_big_error(): Divide the return value of
page_get_free_space_of_empty_noninline() by 2. Until r1571, that function
did not return the same value as page_get_free_space_of_empty().
Revision r1571:
Fix a severe bug that was introduced in r1422 when fixing Bug 21101.
When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
storage/innobase/include/buf0buf.ic:
Apply snapshot innodb-51-ss1644
Revision r1624:
Fix change missed as part of Bug 15815. Use a function to check if a block
needs to be made younger.
storage/innobase/include/fsp0fsp.h:
Apply snapshot innodb-51-ss1644
Revision r1605:
Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
by typecasting the variables before multiplying them, so that the result of
the multiplication is of type "unsigned long long".
I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
use it without overwriting it with zeroes (by commenting the code that
overwrites :newraw files).
New type ullint is introduced with the sole purpose of shortening
"unsigned long long", please do not define it to something else than
"unsigned long long".
Approved by: Heikki
storage/innobase/include/lock0lock.h:
Apply snapshot innodb-51-ss1644
Revision r1623:
Fix typo in comment.
Revision r1628:
lock_has_to_wait() is needed in the INFORMATION_SCHEMA implementation
in order to determine which lock is blocking which. Make it non-static
and put its definition in include/lock0lock.h.
Approved by: Heikki (via IM)
storage/innobase/include/mem0mem.ic:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/include/page0page.h:
Apply snapshot innodb-51-ss1644
Revision r1571:
Fix a severe bug that was introduced in r1422 when fixing Bug 21101.
When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
storage/innobase/include/row0mysql.h:
Apply snapshot innodb-51-ss1644
Revision r1571:
Fix a severe bug that was introduced in r1422 when fixing Bug 21101.
When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
storage/innobase/include/univ.i:
Apply snapshot innodb-51-ss1644
Revision r1605:
Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
by typecasting the variables before multiplying them, so that the result of
the multiplication is of type "unsigned long long".
I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
use it without overwriting it with zeroes (by commenting the code that
overwrites :newraw files).
New type ullint is introduced with the sole purpose of shortening
"unsigned long long", please do not define it to something else than
"unsigned long long".
Approved by: Heikki
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/lock/lock0lock.c:
Apply snapshot innodb-51-ss1644
Revision r1631:
Move lock_rec_find_set_bit() and lock_rec_get_prev() from
lock/lock0lock.c to include/lock0priv.h and make them non-static.
They will be used in lock/lock0iter.c.
Approved by: Heikki
Revision r1636:
Move lock_get_type() from lock/lock0lock.c to include/lock0priv.ic:
* lock0lock.c: remove lock_get_type() and include include/lock0priv.ic
* lock0priv.h: include lock0priv.ic and add lock_get_type() prototype
* Makefile.am: add lock0priv.ic to noinst_HEADERS
* lock0priv.ic: introduce this new file containing the body of
lock_get_type()
This move is necessary in order to use lock_get_type() from other lock/
source files (it's going to be used in lock/lock0iter.c).
Approved by: Heikki
Revision r1628:
lock_has_to_wait() is needed in the INFORMATION_SCHEMA implementation
in order to determine which lock is blocking which. Make it non-static
and put its definition in include/lock0lock.h.
Approved by: Heikki (via IM)
Revision r1629:
Add "const" qualifiers to lock_get_type() and lock_get_mode().
Approved by: Sunny
Revision r1626:
Move lock_*struct structures from lock/lock0lock.c to include/lock0priv.h.
This is needed in order to add more code to lock/ that uses members of
these structures (internal to the lock module) but in a separate file,
rather than lock0lock.c. lock0lock.c is a way too big already.
Approved by: Sunny
storage/innobase/log/log0recv.c:
Apply snapshot innodb-51-ss1644
Revision r1607:
Bug#23710
At InnoDB startup consider the case where log scan went beyond checkpoint_lsn as a crash and initiate crash recovery code path.
reviewed by: Heikki
storage/innobase/mem/mem0mem.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/mem/mem0pool.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/os/os0file.c:
Apply snapshot innodb-51-ss1644
Revision r1613:
Fix Bug#29155 by enabling file locking on FreeBSD.
It has been disabled because InnoDB has refused to start on
FreeBSD & LinuxThreads, but now it starts just fine.
Approved by: Heikki
storage/innobase/page/page0page.c:
Apply snapshot innodb-51-ss1644
Revision r1571:
Fix a severe bug that was introduced in r1422 when fixing Bug 21101.
When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
storage/innobase/rem/rem0rec.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/row/row0mysql.c:
Apply snapshot innodb-51-ss1644
Revision r1571:
Fix a severe bug that was introduced in r1422 when fixing Bug 21101.
When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
storage/innobase/sync/sync0rw.c:
Apply snapshot innodb-51-ss1644
Revision r1598:
Add some comments.
Approved by: Heikki (via IM)
storage/innobase/sync/sync0sync.c:
Apply snapshot innodb-51-ss1644
Revision r1598:
Add some comments.
Approved by: Heikki (via IM)
storage/innobase/trx/trx0sys.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
storage/innobase/trx/trx0trx.c:
Apply snapshot innodb-51-ss1644
Revision r1595:
trx_commit_for_mysql(): Avoid acquiring and releasing kernel_mutex when
trx->sess or trx_dummy_sess is non-NULL.
storage/innobase/ut/ut0mem.c:
Apply snapshot innodb-51-ss1644
Revision r1581:
Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip.
Now we don't take any mutexes when creating or dropping internal HEAP tables during SELECT.
Change buffer sizes to size_t to make keycache 64 bit safe on platforms where sizeof(ulong) != sizeof(size_t)
BitKeeper/etc/ignore:
added support-files/mysqld_multi.server
include/heap.h:
Added 'internal_table' to HP_CREATE_INFO
include/keycache.h:
Change buffer sizes to size_t to make keycache 64 bit safe
include/my_base.h:
Added HA_OPEN_INTERNAL_TABLE to mark temporary tables that should be deleted on close
mysys/mf_keycache.c:
Change buffer sizes to size_t to make keycache 64 bit safe
sql/sql_select.cc:
Added HA_OPEN_INTERNAL_TABLE to mark temporary tables that should be deleted on close
Removed not anymore needed call to delete_table()
storage/heap/ha_heap.cc:
Added support for internal temporary tables that should be deleted on close.
Internal tables now use dedicated open and close calls to avoid taking mutexes.
If heap_open() failes, now delete the newly created table. (This fixes a possible memory leak)
Remove never executed info() in create()
storage/heap/ha_heap.h:
Added slots needed to handle internal temporary tables
storage/heap/heapdef.h:
Protect against C++ inclusion
storage/heap/hp_close.c:
Don't call list_delete() for internal temporary tables (They are not in the list)
storage/heap/hp_create.c:
Added HP_SHARE ** element to heap_create() to store the SHARE of the newly created table.
For internal temporary tables: Don't take any mutex and don't put them into the open table list.
storage/heap/hp_open.c:
Split heap_open() into sub functions to be able to create internal temporary tables without putting them in the heap_share_list.
Add faster open() functions for when we already know the 'share'.
storage/heap/hp_test1.c:
Update call to heap_create()
Initialize all keyinfo members.
storage/heap/hp_test2.c:
Update call to heap_create()
into ramayana.hindu.god:/home/tsmith/m/bk/maint/jul24/51
mysql-test/r/innodb_mysql.result:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/include/mix1.inc:
Manual merge
into xiphis.org:/anubis/antony/work/p2-bug25714.1.merge-5.1
mysql-test/mysql-test-run.pl:
Auto merged
tests/Makefile.am:
Auto merged
storage/federated/ha_federated.cc:
manual merge from 5.0 to 5.1
"Disable transaction support in Federated storage engine"
Minimal patch to disable Federated's transactions until they can be fixed.
mysql-test/r/federated.result:
verify that transactions are disabled
mysql-test/t/disabled.def:
bug29875
disable federated_transactions test until Bug#29523 is resolved.
mysql-test/t/federated.test:
verify that transactions are disabled
storage/federated/ha_federated.cc:
bug29875
Disable support for transactions until fixed.
storage/federated/ha_federated.h:
bug29875
Disable support for transactions until fixed.
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/t/disabled.def:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
SCCS merged
tests/mysql_client_test.c:
SCCS merged
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
mysql-test/t/federated.test:
Auto merged
storage/federated/ha_federated.h:
Auto merged
mysql-test/r/federated.result:
manual merge
into zippy.cornsilk.net:/home/cmiller/work/mysql/bug26909/my51-bug26909
mysql-test/r/federated.result:
Auto merged
mysql-test/t/federated.test:
Auto merged
storage/federated/ha_federated.h:
manual merge
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
include/my_base.h:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
into magare.gmz:/home/kgeorge/mysql/work/merge-5.0-5.1-opt
mysql-test/r/type_time.result:
Auto merged
sql/field.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
BitKeeper/deleted/.del-index_merge.result:
Auto merged
mysql-test/include/index_merge1.inc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/opt_range.cc:
Auto merged
storage/heap/ha_heap.cc:
Auto merged
storage/heap/ha_heap.h:
Auto merged
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
mysql-test/suite/rpl_ndb/t/disabled.def:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
mysql-test/r/events_bugs.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
into chilla.local:/home/mydev/mysql-5.1-axmrg
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/suite/ndb/r/ndb_update.result:
Auto merged
mysql-test/suite/ndb/t/ndb_single_user.test:
Auto merged
mysql-test/suite/ndb/t/ndb_update.test:
Auto merged
mysql-test/suite/parts/r/rpl_partition.result:
Auto merged
mysql-test/suite/parts/t/rpl_partition.test:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.cc:
Auto merged
mysql-test/suite/rpl/r/rpl_sp.result:
Auto merged