Commit graph

19 commits

Author SHA1 Message Date
Marko Mäkelä
d752a97ebb Merge 10.1 to 10.2 2019-10-25 17:33:39 +03:00
Thirunarayanan Balathandayuthapani
a41d429765 MDEV-20621 FULLTEXT INDEX activity causes InnoDB hang
- fts_optimize_thread() uses dict_table_t object instead of table id.
So that it doesn't acquire dict_sys->mutex. It leads to remove the
hang of dict_sys->mutex between fts_optimize_thread() and other threads.

- in_queue to indicate whether the table is in fts_optimize_queue. It
is protected by fts_optimize_wq->mutex to avoid any race condition.

- fts_optimize_init() adds the fts table to the fts_optimize_wq
2019-10-25 16:27:41 +03:00
Marko Mäkelä
b6ac67389d Merge 10.1 into 10.2 2019-07-25 12:14:27 +03:00
Marko Mäkelä
e764d5bc01 Correct the type of a parameter 2019-07-24 21:21:54 +03:00
Marko Mäkelä
26a14ee130 Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
Vicențiu Ciorbaru
c0ac0b8860 Update FSF address 2019-05-11 19:25:02 +03:00
Jan Lindström
f65f40bb35 Merge remote-tracking branch 'origin/10.1' into 10.2 2019-02-28 13:08:11 +02:00
Eugene Kosov
28cb041754 MDEV-18662 ib_wqueue_t has a data race
ib_wqueue_is_empty(): protect ib_list_is_empty() call

Closes #1202
2019-02-21 12:23:47 +02:00
Marko Mäkelä
3c47ed4849 Merge 10.0 into 10.1 2017-02-20 14:02:40 +02:00
Marko Mäkelä
13493078e9 MDEV-11802 innodb.innodb_bug14676111 fails
The function trx_purge_stop() was calling os_event_reset(purge_sys->event)
before calling rw_lock_x_lock(&purge_sys->latch). The os_event_set()
call in srv_purge_coordinator_suspend() is protected by that X-latch.

It would seem a good idea to consistently protect both os_event_set()
and os_event_reset() calls with a common mutex or rw-lock in those
cases where os_event_set() and os_event_reset() are used
like condition variables, tied to changes of shared state.

For each os_event_t, we try to document the mutex or rw-lock that is
being used. For some events, frequent calls to os_event_set() seem to
try to avoid hangs. Some events are never waited for infinitely, only
timed waits, and os_event_set() is used for early termination of these
waits.

os_aio_simulated_put_read_threads_to_sleep(): Define as a null macro
on other systems than Windows. TODO: remove this altogether and disable
innodb_use_native_aio on Windows.

os_aio_segment_wait_events[]: Initialize only if innodb_use_native_aio=0.
2017-02-20 12:20:52 +02:00
Jan Lindström
fec844aca8 Merge InnoDB 5.7 from mysql-5.7.14.
Contains also:
       MDEV-10549 mysqld: sql/handler.cc:2692: int handler::ha_index_first(uchar*): Assertion `table_share->tmp_table != NO_TMP_TABLE || m_lock_type != 2' failed. (branch bb-10.2-jan)
       Unlike MySQL, InnoDB still uses THR_LOCK in MariaDB

       MDEV-10548 Some of the debug sync waits do not work with InnoDB 5.7 (branch bb-10.2-jan)
       enable tests that were fixed in MDEV-10549

       MDEV-10548 Some of the debug sync waits do not work with InnoDB 5.7 (branch bb-10.2-jan)
       fix main.innodb_mysql_sync - re-enable online alter for partitioned innodb tables
2016-09-08 15:49:03 +03:00
Jan Lindström
2e814d4702 Merge InnoDB 5.7 from mysql-5.7.9.
Contains also

MDEV-10547: Test multi_update_innodb fails with InnoDB 5.7

	The failure happened because 5.7 has changed the signature of
	the bool handler::primary_key_is_clustered() const
	virtual function ("const" was added). InnoDB was using the old
	signature which caused the function not to be used.

MDEV-10550: Parallel replication lock waits/deadlock handling does not work with InnoDB 5.7

	Fixed mutexing problem on lock_trx_handle_wait. Note that
	rpl_parallel and rpl_optimistic_parallel tests still
	fail.

MDEV-10156 : Group commit tests fail on 10.2 InnoDB (branch bb-10.2-jan)
  Reason: incorrect merge

MDEV-10550: Parallel replication can't sync with master in InnoDB 5.7 (branch bb-10.2-jan)
  Reason: incorrect merge
2016-09-02 13:22:28 +03:00
Jan Lindström
c88a0d48c6 Temporal fix for flush thread hang.
Added option to disable multi-threaded flush with innodb_use_mtflush = 0
option, by default multi-threaded flush is used.

Updated innochecksum tool, still it does not support new checksums.
2014-02-28 08:53:09 +02:00
Jan Lindström
24235e99d8 Fixed memory leak on queue nodes by using local memory heap on normal
execution and global memory heap on shutdown.

Added a funcition to get work items from queue without waiting and
additional info when there is no work to do for a extended periods.
2014-02-25 13:15:55 +02:00
Michael Widenius
068c61978e Temporary commit of 10.0-merge 2013-03-26 00:03:13 +02:00
Michael Widenius
1d0f70c2f8 Temporary commit of merge of MariaDB 10.0-base and MySQL 5.6 2012-08-01 17:27:34 +03:00
Guilhem Bichot
7ceb29ff17 Renamed storage/innodb_plugin to storage/innobase, so that 1) it's the same
layout as we always had in trees containing only the builtin
2) win\configure.js WITH_INNOBASE_STORAGE_ENGINE still works.

storage/innobase/CMakeLists.txt:
  fix to new directory name (and like 5.1)
storage/innobase/Makefile.am:
  fix to new directory name (and like 5.1)
storage/innobase/handler/ha_innodb.cc:
  fix to new directory name (and like 5.1)
storage/innobase/plug.in:
  fix to new directory name (and like 5.1)
2009-08-07 12:16:00 +02:00
Guilhem Bichot
b57e4dbd88 Creation of mysql-trunk = {summit + "Innodb plugin replacing the builtin"}:
bzr branch mysql-5.1-performance-version mysql-trunk # Summit
cd mysql-trunk
bzr merge mysql-5.1-innodb_plugin # which is 5.1 + Innodb plugin 
bzr rm innobase # remove the builtin
Next step: build, test fixes.
2009-08-04 13:25:19 +02:00
unknown
2dca2a1a5d Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
 Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
 Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
 Also:
 * Remove remnants of the obsolete concept of memoryfixing tables and indexes.
 * Remove unused dict_table_LRU_trim().
 * Remove unused 'trx' parameter from dict_table_get_on_id_low(),
   dict_table_get(), dict_table_get_and_increment_handle_count().
 * Add a normal linked list implementation.
 * Add a work queue implementation.
 * Add 'level' parameter to mutex_create() and rw_lock_create().
   Remove mutex_set_level() and rw_lock_set_level().
 * Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
 * Add support for bound ids in InnoDB's parser.
 * Define UNIV_BTR_DEBUG for enabling consistency checks of
   FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
   pages of B-tree indexes.
   btr_validate_level(): Check the validity of the doubly linked
   list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
 * Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
   ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
   distinguishing names of tables from other identifiers.
   New: innobase_convert_from_table_id(), innobase_convert_from_id(),
        innobase_convert_from_filename(), innobase_get_charset.
   dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
   dict_skip_word(), dict_create_foreign_constraints_low(): Add
   parameter 'cs' so that isspace() can be replaced with my_isspace(),
   whose operation depends on the connection character set.
   dict_scan_id(): Convert identifier to UTF-8.
   dict_str_starts_with_keyword(): New extern function, to replace
   dict_accept() in row_search_for_mysql().
   mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
   ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
   statement to InnoDB in the connection character set and let InnoDB
   convert the identifier to UTF-8.
 * Add max_row_size to dict_table_t.
 * btr0cur.c
   btr_copy_externally_stored_field(): Only set the 'offset' variable
   when needed.
 * buf0buf.c
   buf_page_io_complete(): Write to the error log if the page number or
   the space id o the disk do not match those in memory. Also write to
   the error log if a page was read from the doublewrite buffer. The
   doublewrite buffer should be only read by the lower-level function
   fil_io() at database startup.
 * dict0dict.c
   dict_scan_table_name(): Remove fallback to differently encoded name
   when the table is not found. The encoding is handled at a higher level.
 * ha_innodb.cc
   Increment statistic counter in ha_innobase::index_prev() (bug 19542).
   Add innobase_convert_string wrapper function and a new file
   ha_prototypes.h.
   innobase_print_identifier(): Remove TODO comment before calling
   get_quote_char_for_identifier(). That function apparently assumes
   the identifier to be encoded in UTF-8.
 * ibuf0ibuf.c|h
   ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
   only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
   UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
   The function is only being called #ifdef UNIV_IBUF_DEBUG.
 * innodb.result
   Adjust the results for changes in the foreign key error messages.
 * mem0mem.c|h
   New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
 * os0file.c
   Check the page trailers also after writing to disk. This improves
   chances of diagnosing bug 18886.
   os_file_check_page_trailers(): New function for checking that the
   two copies of the LSN stamped on the page match.
   os_aio_simulated_handle(): Call os_file_check_page_trailers()
   before and after os_file_write().
 * row0mysql.c
   Move trx_commit_for_mysql(trx) calls before calls to
   row_mysql_unlock_data_dictionary(trx) (bug 19727).
 * row0sel.c
   row_fetch_print(): Handle SQL NULL values without crashing.
   row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
   when handling an externally stored column.
   Fetch externally stored fields when using InnoDB's internal SQL
   parser.
   Optimize BLOB selects by using prebuilt->blob_heap directly instead
   of first reading BLOB data to a temporary heap and then copying it
   to prebuilt->blob_heap.
 * srv0srv.c
   srv_master_thread(): Remove unreachable code.
 * srv0start.c
   srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
   'g' as abbreviations of megabyte and gigabyte (bug 19609).
   srv_parse_megabytes(): New fuction.
 * ut0dbg.c|h
   Implement InnoDB assertions (ut_a and ut_error) with abort() when
   the code is compiled with GCC 3 or later on other platforms than
   Windows or Netware. Also disable the variable ut_dbg_stop_threads
   and the function ut_dbg_stop_thread() i this case, unless
   UNIV_SYC_DEBUG is defined. This should allow the compiler to
   generate more compact code for assertions.
 * ut0list.c|h
   Add ib_list_create_heap().


mysql-test/r/innodb.result:
  Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
  Copy the comment from the beginning of the file
   to the end because MySQL developers continue
   adding test cases to this file.
sql/ha_innodb.cc:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
  Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
  Applied innodb-5.1-ss594 snapshot.
2006-06-01 10:34:04 +04:00