Commit graph

9443 commits

Author SHA1 Message Date
Olivier Bertrand
c1d1dc25dd - Modif avglen calculation and add AVG_ROW_LENGTH option to test
This is to get same test results on Linux and Windows
modified:
  storage/connect/mysql-test/connect/r/part_file.result
  storage/connect/mysql-test/connect/r/part_table.result
  storage/connect/mysql-test/connect/t/part_file.test
  storage/connect/mysql-test/connect/t/part_table.test
  storage/connect/tabdos.cpp
2014-07-22 19:45:25 +02:00
Jan Lindström
a1e41e3258 MDEV-6470: Restrict number of error messages about persistent statictic tables not found
If mysql.innodb_table_stats or mysql.innodb_index_stats is not found or has
unexpected structure output that error only once and no other error for
every table trying to use them. If they do exists, then print fetch or
recalculation errors only once / table or index.
2014-07-22 19:31:45 +03:00
Olivier Bertrand
decc23cbc2 - Fix bugs in handling of remote index when updating and deleting
modified:
  storage/connect/ha_connect.cc
  storage/connect/tabdos.cpp
  storage/connect/tabfmt.cpp
  storage/connect/tabmysql.cpp

- add AVG_REC_LENGTH option to avoid result mismatch between
  Windows and Linux
modified:
  storage/connect/mysql-test/connect/r/part_file.result
  storage/connect/mysql-test/connect/r/part_table.result
  storage/connect/mysql-test/connect/t/part_file.test
2014-07-22 15:51:21 +02:00
Jan Lindström
ef67c3a239 MDEV-6443: Server crashed with assertaion failure in file ha_innodb.cc
line 8473

In case InnoDB index is not found, print the MySQL and InnoDB index
name we were trying to find and all MySQL and InnoDB index names there
is for this table.
2014-07-22 13:17:16 +03:00
Jan Lindström
fe3859cc9d MDEV-6443: Server crashed with assertaion failure in file
ha_innodb.cc line 8473

If index is not found from InnoDB make sure we print what we
were trying to find and all mysql and InnoDB index names there
is for this table.
2014-07-22 13:08:32 +03:00
Jan Lindström
0bb0230e3a MDEV-6426: Maria DB crashes randomly on creating indexes
Improve OS error messages on Windows.
2014-07-22 10:10:56 +03:00
Olivier Bertrand
26e4b69ffd - FIX errors and some gcc warnings
modified:
  storage/connect/array.cpp
  storage/connect/array.h
  storage/connect/blkfil.cpp
  storage/connect/blkfil.h
  storage/connect/filter.cpp
  storage/connect/filter.h
  storage/connect/ha_connect.cc
  storage/connect/tabdos.cpp
  
- FIX problems of DIR table on LINUX:
  The order of the result is not the same than the one on Windows
  An error occurs when no file match the pattern
  Also the row numbers may also be different (not fixed yet)
modified:
  storage/connect/mysql-test/connect/r/part_file.result
  storage/connect/mysql-test/connect/r/part_table.result
  storage/connect/mysql-test/connect/t/part_file.test
2014-07-20 20:39:17 +02:00
Olivier Bertrand
4b2092ebea This is a new version of the CONNECT storage engine. It was developed in
a sub-branch of this one and merged by pushing all the changes from it.
This version adds the following to CONNECT:

- MRR support (similar to the MyISAM one)
- Block, Remote and dynamic indexing
- Partitioning support (using the PARTITION engine)

Here is a list of the commited changes made in the sub-branch:
========================================================================

------------------------------------------------------------
revno: 4009
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Thu 2014-07-17 18:13:51 +0200
message:
  This commit brings many changes, in particular two important ones:
  1) Support of partitioning by connect. A table can be partitioned
     by files, this is an enhanced MULTIPLE table. It can be also
     partitioned by sub-tables like TBL and this enables table sharding.
  2) Handling a CONNECT bug that causes in some cases extraneous rows
     to remain in the table after an UPDATE or DELETE when the command
     uses indexing (for not fixed file tables). Until a real fix is
     done, CONNECT tries to ignore indexing and if it cannot do it
     abort the command with an error message.

  - Add tests on partitioning
  added:
    storage/connect/mysql-test/connect/r/part_file.result
    storage/connect/mysql-test/connect/r/part_table.result
    storage/connect/mysql-test/connect/t/part_file.test
    storage/connect/mysql-test/connect/t/part_table.test

  - Temporary fix
  modified:
    sql/sql_partition.cc

  - Add partition support
  modified:
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h
    storage/connect/reldef.cpp
    storage/connect/reldef.h
    storage/connect/tabdos.cpp

  - Add functions ha_connect::IsUnique and ha_connect::CheckColumnList
  modified:
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h

  - Prevent updating a partition table column that is part of
    the partition function (outward tables only)
  modified:
    storage/connect/ha_connect.cc

  - Support INSERT/UPDATE/DELETE for PROXY tables
  modified:
    storage/connect/tabutil.cpp

  - Handle the bug on updating rows via indexing. Waiting for a real fix,
    Don't use indexing when possible else raise an error and abort.
  modified:
    storage/connect/ha_connect.cc

  - dbuserp->UseTemp set to TMP_AUTO
  modified:
    storage/connect/connect.cc

  - Add members nox, abort and only
  modified:
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h

  - Add arguments nox and abort to CntCloseTable
  modified:
    storage/connect/connect.cc
    storage/connect/connect.h
    storage/connect/filamap.cpp
    storage/connect/filamap.h
    storage/connect/filamdbf.cpp
    storage/connect/filamdbf.h
    storage/connect/filamfix.cpp
    storage/connect/filamfix.h
    storage/connect/filamtxt.cpp
    storage/connect/filamtxt.h
    storage/connect/filamvct.cpp
    storage/connect/filamvct.h
    storage/connect/filamzip.cpp
    storage/connect/filamzip.h
    storage/connect/ha_connect.cc

  - Add arguments abort to CloseTableFile and RenameTempFile
  modified:
    storage/connect/filamap.cpp
    storage/connect/filamap.h
    storage/connect/filamdbf.cpp
    storage/connect/filamdbf.h
    storage/connect/filamfix.cpp
    storage/connect/filamfix.h
    storage/connect/filamtxt.cpp
    storage/connect/filamtxt.h
    storage/connect/filamvct.cpp
    storage/connect/filamvct.h
    storage/connect/filamzip.cpp
    storage/connect/filamzip.h
    storage/connect/tabdos.cpp
    storage/connect/tabdos.h
    storage/connect/tabvct.cpp
    storage/connect/xtable.h

  - Fix info->records when file does not exists
  modified:
    storage/connect/connect.cc

  - Close XML table when opened for info
  modified:
    storage/connect/connect.cc

  - Add function VCTFAM::GetFileLength
  modified:
    storage/connect/filamvct.cpp
    storage/connect/filamvct.h

  - Column option DISTRIB -> ENUM
  modified:
    storage/connect/ha_connect.cc

  - Options connect, query_string and partname allways available
  modified:
    storage/connect/ha_connect.cc

  - Add function MYSQLC::GetTableSize
  modified:
    storage/connect/myconn.cpp
    storage/connect/myconn.h

  - Add new special columns (PARTNAME, FNAME, FPATH, FTYPE and FDISK)
  modified:
    storage/connect/colblk.cpp
    storage/connect/colblk.h
    storage/connect/plgdbsem.h
    storage/connect/table.cpp

  - Add function ExtractFromPath
  modified:
    storage/connect/colblk.cpp
    storage/connect/plgdbsem.h
    storage/connect/plgdbutl.cpp

  - Enhance Cardinality for some table types
  modified:
    storage/connect/tabdos.cpp
    storage/connect/tabmysql.cpp
    storage/connect/tabmysql.h
    storage/connect/tabodbc.cpp
    storage/connect/tabodbc.h
    storage/connect/tabsys.cpp
    storage/connect/tabsys.h
    storage/connect/xindex.cpp
    storage/connect/xindex.h
    storage/connect/xtable.h

  - Add test on special column
  modified:
    storage/connect/tabfmt.cpp

  - Add new files (added for block indexing)
  modified:
    storage/connect/CMakeLists.txt
------------------------------------------------------------
revno: 4007 [merge]
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Sat 2014-05-31 12:31:26 +0200
message:
  - Begin adding support of partition tables
  modified:
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h
    storage/connect/reldef.cpp

  - Add INSERT/UPDATE support to PROXY tables
  modified:
    storage/connect/tabutil.cpp
    storage/connect/tabutil.h

  - Take care of SPECIAL columns
  modified:
    storage/connect/filamdbf.cpp
    storage/connect/reldef.h
    storage/connect/tabfmt.cpp

  -Typo and misc
  modified:
    storage/connect/odbconn.cpp
    storage/connect/tabfix.cpp
    storage/connect/xindex.cpp
------------------------------------------------------------
revno: 4006
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Sat 2014-05-10 12:21:08 +0200
message:
  - FIX some MAP and XMAP errors (such as mapped indexes not closed)
    Do not put version in XML files header
    Remove HTON_NO_PARTITION for testing
    Fix a wrong return (instead of DBUG_RETURN) in index_init
    Plus a few typos
  modified:
    storage/connect/connect.cc
    storage/connect/filter.cpp
    storage/connect/ha_connect.cc
    storage/connect/maputil.cpp
    storage/connect/mysql-test/connect/r/alter_xml.result
    storage/connect/mysql-test/connect/r/xml.result
    storage/connect/table.cpp
    storage/connect/tabxml.cpp
    storage/connect/xindex.cpp
    storage/connect/xindex.h
    storage/connect/xtable.h
------------------------------------------------------------
revno: 4005
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Fri 2014-05-02 15:55:45 +0200
message:
  - Adding fetched columns to Dynamic index key (unique only)
    Fix two bugs concerning added KXYCOL's:
    1 - Not set during reading
    2 - Val_K not set in FastFind
  modified:
    storage/connect/connect.cc
    storage/connect/filamtxt.h
    storage/connect/tabdos.cpp
    storage/connect/tabfix.cpp
    storage/connect/table.cpp
    storage/connect/valblk.h
    storage/connect/xindex.cpp
    storage/connect/xindex.h
    storage/connect/xtable.h
------------------------------------------------------------
revno: 4003
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Wed 2014-04-30 10:48:29 +0200
message:
  - Implementation of adding selected columns to dynamic indexes.
  modified:
    storage/connect/connect.cc
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h
    storage/connect/tabdos.cpp
    storage/connect/tabdos.h
    storage/connect/tabvct.cpp
    storage/connect/tabvct.h
    storage/connect/xindex.cpp
    storage/connect/xindex.h
------------------------------------------------------------
revno: 4001
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Sat 2014-04-26 00:17:26 +0200
message:
  - Implement dynamic indexing
  modified:
    storage/connect/connect.cc
    storage/connect/filter.cpp
    storage/connect/filter.h
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h
    storage/connect/tabdos.cpp
    storage/connect/tabdos.h
    storage/connect/table.cpp
    storage/connect/xindex.cpp
    storage/connect/xindex.h
    storage/connect/xtable.h
------------------------------------------------------------
revno: 3995
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Sun 2014-03-23 18:49:19 +0100
message:
  - Work in progress
  modified:
    storage/connect/filter.h
    storage/connect/ha_connect.cc
    storage/connect/ha_connect.h
    storage/connect/mysql-test/connect/r/alter.result
    storage/connect/mysql-test/connect/r/xml.result
------------------------------------------------------------
revno: 3991
committer: Olivier Bertrand <bertrandop@gmail.com>
branch nick: 10.0-connect
timestamp: Mon 2014-03-10 18:59:36 +0100
message:
  - Adding files needed for block indexing
  added:
    storage/connect/array.cpp
    storage/connect/array.h
    storage/connect/blkfil.cpp
    storage/connect/blkfil.h
    storage/connect/filter.cpp
    storage/connect/filter.h
========================================================================
This commit of the main branch adds:

- A change needed to have the engine function check_if_supported_inplace_alter
  called for partition tables (was done manually in the sub-branch) by adding
  the preparser define: PARTITION_SUPPORTS_INPLACE_ALTER
modified:
  sql/CMakeLists.txt

- A fix concerning the FileExists function. It was needed to force the function
  table_flags to return the same flags for all partitions. This is tested by
  the partition engine and raises an error if flags are not equal.
  The way file name, table name and connection string are retrieved has been
  modified to cope with it.
modified:
  storage/connect/ha_connect.cc
  storage/connect/ha_connect.h
  storage/connect/reldef.cpp

- A few typos, such as the version string.
modified:
  storage/connect/ha_connect.cc

- Updating some test result files because some warnings are no more raised.
modified:
  storage/connect/mysql-test/connect/r/occur.result
  storage/connect/mysql-test/connect/r/part_file.result
  storage/connect/mysql-test/connect/r/pivot.result
2014-07-20 12:31:42 +02:00
Michael Widenius
f0f2072d1f Fixed problem with very slow shutdown when using 100,000 MyISAM tables with delay_key_write
Reason for the problem was that the hash of changed files in the key cache was too small (was 128). Fixed by making the hash size larger and changeable.

- Introduced key-cache-file-hash-size (default 512) for MyISAM and aria_pagecache_file_hash_size (default 512) for Aria.
- Added new status variable "Feature_delay_key_write" which counts number of tables opened that are using delay_key_write


mysql-test/r/features.result:
  Added test of Feature_delay_key_write
mysql-test/r/key_cache.result:
  Updated tests as the number of blocks has changed
mysql-test/r/mysqld--help.result:
  Updated result
mysql-test/suite/maria/maria3.result:
  Updated result
mysql-test/suite/sys_vars/r/key_cache_file_hash_size_basic.result:
  Test new variable
mysql-test/suite/sys_vars/t/aria_pagecache_file_hash_size_basic.test:
  Test new variable
mysql-test/suite/sys_vars/t/key_cache_file_hash_size_basic.test:
  Test new variable
mysql-test/t/features.test:
  Added test of Feature_delay_key_write
mysql-test/t/key_cache.test:
  Updated tests as the number of blocks has changed
mysys/mf_keycache.c:
  Made CHANGED_BLOCKS_HASH dynamic
sql/handler.cc:
  Updated call to init_key_cache()
sql/mysqld.cc:
  Added "Feature_delay_key_write"
  Added support for key-cache-file-hash-size
sql/mysqld.h:
  Added support for key-cache-file-hash-size
sql/sql_class.h:
  Added feature_files_opened_with_delayed_keys
sql/sys_vars.cc:
  Added key_cache_file_hash_size
storage/maria/ha_maria.cc:
  Added pagecache_file_hash_size
  Added counting of files with delay_key_write
storage/maria/ma_checkpoint.c:
  Fixed compiler warning
storage/maria/ma_pagecache.c:
  Made PAGECACHE_CHANGED_BLOCKS_HASH into a variable
storage/maria/ma_pagecache.h:
  Made PAGECACHE_CHANGED_BLOCKS_HASH into a variable
storage/maria/ma_rt_test.c:
  Updated parameters for init_pagecache()
storage/maria/ma_test1.c:
  Updated parameters for init_pagecache()
storage/maria/ma_test2.c:
  Updated parameters for init_pagecache()
storage/maria/ma_test3.c:
  Updated parameters for init_pagecache()
storage/maria/maria_chk.c:
  Updated parameters for init_pagecache()
storage/maria/maria_ftdump.c:
  Updated parameters for init_pagecache()
storage/maria/maria_pack.c:
  Updated parameters for init_pagecache()
storage/maria/maria_read_log.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_pagecache_consist.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_pagecache_rwconsist.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_pagecache_rwconsist2.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_pagecache_single.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_noflush-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_nologs-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
  Updated parameters for init_pagecache()
storage/maria/unittest/ma_test_loghandler_purge-t.c:
  Updated parameters for init_pagecache()
storage/myisam/ha_myisam.cc:
  Added counting of files with delay_key_write
storage/myisam/mi_check.c:
  Updated call to init_key_cache()
storage/myisam/mi_test1.c:
  Updated call to init_key_cache()
storage/myisam/mi_test2.c:
  Updated call to init_key_cache()
storage/myisam/mi_test3.c:
  Updated call to init_key_cache()
storage/myisam/mi_test_all.sh:
  Fixed broken test
storage/myisam/myisam_ftdump.c:
  Updated call to init_key_cache()
storage/myisam/myisamchk.c:
  Updated call to init_key_cache()
storage/myisam/myisamlog.c:
  Updated call to init_key_cache()
2014-07-19 17:46:08 +03:00
Sergey Vojtovich
c0ebb3f388 MDEV-6450 - MariaDB crash on Power8 when built with advance tool
chain

InnoDB mutex_exit() function calls __sync_test_and_set() to release
the lock. According to manual this function is supposed to create
"acquire" memory barrier whereas in fact we need "release" memory
barrier at mutex_exit().

The problem isn't repeatable with gcc because it creates
"acquire-release" memory barrier for __sync_test_and_set().
ATC creates just "acquire" barrier.

Fixed by creating proper barrier at mutex_exit() by using
__sync_lock_release() instead of __sync_test_and_set().
2014-07-18 15:16:25 +04:00
Olivier Bertrand
6c8fbe61ea Commit merged files.
- Fix result length mismatch because an error message was modified.
modified:
  storage/connect/mysql-test/connect/r/alter.result
2014-07-17 19:28:28 +02:00
Olivier Bertrand
1904284361 This commit brings many changes, in particular two important ones:
1) Support of partitioning by connect. A table can be partitioned
   by files, this is an enhanced MULTIPLE table. It can be also
   partitioned by sub-tables like TBL and this enables table sharding.
2) Handling a CONNECT bug that causes in some cases extraneous rows
   to remain in the table after an UPDATE or DELETE when the command
   uses indexing (for not fixed file tables). Until a real fix is
   done, CONNECT tries to ignore indexing and if it cannot do it
   abort the command with an error message.

- Add tests on partitioning
added:
  storage/connect/mysql-test/connect/r/part_file.result
  storage/connect/mysql-test/connect/r/part_table.result
  storage/connect/mysql-test/connect/t/part_file.test
  storage/connect/mysql-test/connect/t/part_table.test

- Temporary fix
modified:
  sql/sql_partition.cc

- Add partition support
modified:
  storage/connect/ha_connect.cc
  storage/connect/ha_connect.h
  storage/connect/reldef.cpp
  storage/connect/reldef.h
  storage/connect/tabdos.cpp

- Add functions ha_connect::IsUnique and ha_connect::CheckColumnList
modified:
  storage/connect/ha_connect.cc
  storage/connect/ha_connect.h

- Prevent updating a partition table column that is part of
  the partition function (outward tables only)
modified:
  storage/connect/ha_connect.cc

- Support INSERT/UPDATE/DELETE for PROXY tables
modified:
  storage/connect/tabutil.cpp

- Handle the bug on updating rows via indexing. Waiting for a real fix,
  Don't use indexing when possible else raise an error and abort.
modified:
  storage/connect/ha_connect.cc

- dbuserp->UseTemp set to TMP_AUTO
modified:
  storage/connect/connect.cc

- Add members nox, abort and only
modified:
  storage/connect/ha_connect.cc
  storage/connect/ha_connect.h

- Add arguments nox and abort to CntCloseTable
modified:
  storage/connect/connect.cc
  storage/connect/connect.h
  storage/connect/filamap.cpp
  storage/connect/filamap.h
  storage/connect/filamdbf.cpp
  storage/connect/filamdbf.h
  storage/connect/filamfix.cpp
  storage/connect/filamfix.h
  storage/connect/filamtxt.cpp
  storage/connect/filamtxt.h
  storage/connect/filamvct.cpp
  storage/connect/filamvct.h
  storage/connect/filamzip.cpp
  storage/connect/filamzip.h
  storage/connect/ha_connect.cc

- Add arguments abort to CloseTableFile and RenameTempFile
modified:
  storage/connect/filamap.cpp
  storage/connect/filamap.h
  storage/connect/filamdbf.cpp
  storage/connect/filamdbf.h
  storage/connect/filamfix.cpp
  storage/connect/filamfix.h
  storage/connect/filamtxt.cpp
  storage/connect/filamtxt.h
  storage/connect/filamvct.cpp
  storage/connect/filamvct.h
  storage/connect/filamzip.cpp
  storage/connect/filamzip.h
  storage/connect/tabdos.cpp
  storage/connect/tabdos.h
  storage/connect/tabvct.cpp
  storage/connect/xtable.h

- Fix info->records when file does not exists
modified:
  storage/connect/connect.cc

- Close XML table when opened for info
modified:
  storage/connect/connect.cc

- Add function VCTFAM::GetFileLength
modified:
  storage/connect/filamvct.cpp
  storage/connect/filamvct.h

- Column option DISTRIB -> ENUM
modified:
  storage/connect/ha_connect.cc

- Options connect, query_string and partname allways available
modified:
  storage/connect/ha_connect.cc

- Add function MYSQLC::GetTableSize
modified:
  storage/connect/myconn.cpp
  storage/connect/myconn.h

- Add new special columns (PARTNAME, FNAME, FPATH, FTYPE and FDISK)
modified:
  storage/connect/colblk.cpp
  storage/connect/colblk.h
  storage/connect/plgdbsem.h
  storage/connect/table.cpp

- Add function ExtractFromPath
modified:
  storage/connect/colblk.cpp
  storage/connect/plgdbsem.h
  storage/connect/plgdbutl.cpp

- Enhance Cardinality for some table types
modified:
  storage/connect/tabdos.cpp
  storage/connect/tabmysql.cpp
  storage/connect/tabmysql.h
  storage/connect/tabodbc.cpp
  storage/connect/tabodbc.h
  storage/connect/tabsys.cpp
  storage/connect/tabsys.h
  storage/connect/xindex.cpp
  storage/connect/xindex.h
  storage/connect/xtable.h

- Add test on special column
modified:
  storage/connect/tabfmt.cpp

- Add new files (added for block indexing)
modified:
  storage/connect/CMakeLists.txt
2014-07-17 18:13:51 +02:00
Kristian Nielsen
501c56ef1e MDEV-5262, MDEV-5914, MDEV-5941, MDEV-6020: Deadlocks during parallel replication causing replication to fail.
Merge the patches into MariaDB 10.0 main.

With this patch, parallel replication will now automatically retry a
transaction that fails due to deadlock or other temporary error, same as
single-threaded replication.

We catch deadlocks with InnoDB transactions due to enforced commit order. If
T1 must commit before T2 in parallel replication and T1 ends up waiting for T2
inside InnoDB, we kill T2 and retry it later to resolve the deadlock
automatically.
2014-07-11 12:06:47 +02:00
Kristian Nielsen
5b75891b7b Fix compile failure in non-debug build. 2014-07-10 14:24:53 +02:00
Sergey Vojtovich
afbb2e2901 Coding style fixes: remove trailing spaces. 2014-07-10 12:44:20 +04:00
Kristian Nielsen
45f6262f54 MDEV-5262, MDEV-5914, MDEV-5941, MDEV-6020: Deadlocks during parallel replication causing replication to fail.
After-review changes. Fix InnoDB coding style issues.
2014-07-09 13:02:52 +02:00
Kristian Nielsen
92577cc0eb MDEV-5262, MDEV-5914, MDEV-5941, MDEV-6020: Deadlocks during parallel replication causing replication to fail.
Fix small (but nasty) typo.
2014-07-08 14:54:53 +02:00
Kristian Nielsen
98fc5b3af8 MDEV-5262, MDEV-5914, MDEV-5941, MDEV-6020: Deadlocks during parallel replication causing replication to fail.
After-review changes.

For this patch in 10.0, we do not introduce a new public storage engine API,
we just fix the InnoDB/XtraDB issues. In 10.1, we will make a better public
API that can be used for all storage engines (MDEV-6429).

Eliminate the background thread that did deadlock kills asynchroneously.
Instead, we ensure that the InnoDB/XtraDB code can handle doing the kill from
inside the deadlock detection code (when thd_report_wait_for() needs to kill a
later thread to resolve a deadlock).

(We preserve the part of the original patch that introduces dedicated mutex
and condition for the slave init thread, to remove the abuse of
LOCK_thread_count for start/stop synchronisation of the slave init thread).
2014-07-08 12:54:47 +02:00
Arun Kuruvila
76d3e3bccb Bug#18463911 : SERVER CRASHES ON CREATING A TEMP TABLE WITH
CERTAIN MAX_HEAP_TABLE_SIZE VALUES

Followup patch to fix failure on Window machine.
2014-06-26 10:08:55 +05:30
Jan Lindström
e005734058 MDEV-6424: Mariadb server crashes with assertion failure in file ha_innodb.cc
Analysis: For some reason table stats for a table pointed from a index 
is not initialized. Added additional warning output on this situation
and table stats initialization. This is better than asserting.
2014-07-08 21:05:18 +03:00
Sergei Golubchik
086a81986b MDEV-5867 ALTER TABLE t1 ENGINE=InnoDB keeps bad options when t1 ENGINE is CONNECT
Comment out unknown options in SHOW CREATE TABLE unless IGNORE_BAD_TABLE_OPTIONS is used
2014-07-08 19:39:27 +02:00
Jan Lindström
648fb98eb6 MDEV-6348: mariadb crash signal 11
Analysis: sync array output function, should make sure that all
used pointers are valid before using them.

Merge revision 4225 from lp:maria/5.5.
2014-07-08 18:51:34 +03:00
Jan Lindström
d2098b964d MDEV-6318: MariaDB with XtraDB uses times more of IO events
than with InnoDB plugin

Fix: os0file.h in XtraDB had OS_AIO_N_PENDING_IOS_PER_THREAD 256
when on InnoDB it is OS_AIO_N_PENDING_IOS_PER_THREAD 32. Changed
XtraDB also to use 32.
2014-07-04 08:09:27 +03:00
Jan Lindström
43c851435f MDEV-6288: Innodb causes server crash after disk full,
then can't ALTER TABLE any more.

Fix for InnoDB storage engine.
2014-07-04 06:31:48 +03:00
Jan Lindström
6bd2f900b2 MDEV-6288: Innodb causes server crash after disk full, then can't
ALTER TABLE any more.
2014-07-03 14:55:03 +03:00
Arun Kuruvila
1177d3402d Bug #18463911 : SERVER CRASHES ON CREATING A TEMP TABLE
WITH CERTAIN MAX_HEAP_TABLE_SIZE VALUES

Description:
When the  system variable 'max_heap_table_size'
is set to 20GB, the server crashes on creation of a
temporary tables or tables using MEMORY storage engine.

Analysis:
The variable 'max_record' determines the amount heap
allocated for the records of the table. This value
is determined using the 'max_heap_table_size' variable.
'records_in_block' in turn uses the max_records to
determine the number of records per block.

When the 'max_heap_table_size' is set to 20GB, then
the 'records_in_block' is calculated to a value of
2^28.

The size of the block determined by multiplying the
'records_in_block' and 'recbuffer' results in overflow
and hence the value becomes zero. As a result, zero bytes
of the heap is allocated for the table. This will
result in a server crash when the table is accessed.

Fix:
The variables 'records_in_block' and 'recbuffer' are
typecasted to 'unsigned long' while calculating the
size of the block.
2014-06-25 11:42:41 +05:30
Gopal Shankar
119984db0c Bug#18776592 INNODB: FAILING ASSERTION: PRIMARY_KEY_NO == -1 ||
PRIMARY_KEY_NO == 0 

This bug is a backport of the following revision of 5.6 source tree:
# committer: Gopal Shankar <gopal.shankar@oracle.com>
# branch nick: priKey56
# timestamp: Wed 2013-05-29 11:11:46 +0530
# message:
#   Bug#16368875 INNODB: FAILING ASSERTION:
2014-06-25 09:50:17 +05:30
Olivier Bertrand
43752dbf49 - Fix a bug of MYSQL table type. When (REMOTE) indexed, local indexing was
wrongly used for UPDATE and DELETE.
modified:
  storage/connect/ha_connect.cc
  storage/connect/tabmysql.cpp
2014-06-21 16:02:50 +02:00
Jan Lindström
ebf3437810 MDEV-5673: Crash while parallel dropping multiple tables under heavy load
Improve long semaphore wait output to include all semaphore waits
and try to find out if there is a sequence of waiters.
2014-07-23 09:04:59 +03:00
Jan Lindström
67eb6f33a9 MDEV-5670: Assertion failure in file buf0lru.c line 2355
Add more status information if repeatable.
2014-07-22 22:08:06 +03:00
unknown
71a596b90c Makes innodb/xtradb compilable in 5.5 2014-07-15 12:37:34 +03:00
Jan Lindström
970163d0be MDEV-6348: mariadb crash signal 11
Analysis: sync array output function, should make sure that all 
used pointers are valid before using them.
2014-07-08 17:21:13 +03:00
Jan Lindström
8d8c456dbb MDEV-5621: Server random crash on ALTER TABLE
This is not a real fix, instead try to gather additional information
at the point when dictionary content is not what we expect it to be.
2014-07-04 12:25:32 +03:00
Jan Lindström
c922048368 MDEV-6191: row_search_for_mysql comment and code consistency about isolation level
and gap locks
2014-07-04 08:42:59 +03:00
Jan Lindström
838977e54d MDEV-6318: MariaDB with XtraDB uses times more of IO events
than with InnoDB plugin
  
  Fix: os0file.h in XtraDB had OS_AIO_N_PENDING_IOS_PER_THREAD 256
  when on InnoDB it is OS_AIO_N_PENDING_IOS_PER_THREAD 32. Changed
  XtraDB also to use 32.
2014-07-04 08:16:45 +03:00
Jan Lindström
6cc5e00586 MDEV-6225: Idle replication slave keeps crashing.
Analysis: Based on crashed the buffer pool instance identifier is
  not correct on block to be freed. Add LRU list mutex holding
  on functions calling free and add additional safety checks.
2014-06-30 14:06:28 +03:00
Sergei Golubchik
315a4efb91 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751805 typo fixed
use ascii 'x' not utf8 '×' for hex numbers
2014-06-16 22:11:54 +02:00
Olivier Bertrand
70160c22f0 - Fix calculating the number of fields of CSV and FMT tables. Could be wrong
on UPDATE and INSERT if the table had special columns.
modified:
  storage/connect/tabfmt.cpp
2014-06-15 17:01:58 +02:00
Rich Prohaska
4a993fc93f #252 fix the MDEV-6324 fix 2014-06-13 14:43:36 -04:00
Rich Prohaska
eb00a1221e #250 reset thd proc info in end_bulk_insert to fix invalid proc info pointer inside of a deleted ha_tokudb object 2014-06-13 12:06:05 -04:00
Rich Prohaska
f16b3122ab #252 fix MDEV-6324 uninit var in discover3 2014-06-10 18:55:57 -04:00
Sergei Golubchik
55b010233a promote server_audit and sequence plugins to stable 2014-06-13 13:25:32 +02:00
unknown
bd4153a8c2 MDEV-5262, MDEV-5914, MDEV-5941, MDEV-6020: Deadlocks during parallel
replication causing replication to fail.

Remove the temporary fix for MDEV-5914, which used READ COMMITTED for parallel
replication worker threads. Replace it with a better, more selective solution.

The issue is with certain edge cases of InnoDB gap locks, for example between
INSERT and ranged DELETE. It is possible for the gap lock set by the DELETE to
block the INSERT, if the DELETE runs first, while the record lock set by
INSERT does not block the DELETE, if the INSERT runs first. This can cause a
conflict between the two in parallel replication on the slave even though they
ran without conflicts on the master.

With this patch, InnoDB will ask the server layer about the two involved
transactions before blocking on a gap lock. If the server layer tells InnoDB
that the transactions are already fixed wrt. commit order, as they are in
parallel replication, InnoDB will ignore the gap lock and allow the two
transactions to proceed in parallel, avoiding the conflict.

Improve the fix for MDEV-6020. When InnoDB itself detects a deadlock, it now
asks the server layer for any preferences about which transaction to roll
back. In case of parallel replication with two transactions T1 and T2 fixed to
commit T1 before T2, the server layer will ask InnoDB to roll back T2 as the
deadlock victim, not T1. This helps in some cases to avoid excessive deadlock
rollback, as T2 will in any case need to wait for T1 to complete before it can
itself commit.

Also some misc. fixes found during development and testing:

 - Remove thd_rpl_is_parallel(), it is not used or needed.

 - Use KILL_CONNECTION instead of KILL_QUERY when a parallel replication
   worker thread is killed to resolve a deadlock with fixed commit
   ordering. There are some cases, eg. in sql/sql_parse.cc, where a KILL_QUERY
   can be ignored if the query otherwise completed successfully, and this
   could cause the deadlock kill to be lost, so that the deadlock was not
   correctly resolved.

 - Fix random test failure due to missing wait_for_binlog_checkpoint.inc.

 - Make sure that deadlock or other temporary errors during parallel
   replication are not printed to the the error log; there were some places
   around the replication code with extra error logging. These conditions can
   occur occasionally and are handled automatically without breaking
   replication, so they should not pollute the error log.

 - Fix handling of rgi->gtid_sub_id. We need to be able to access this also at
   the end of a transaction, to be able to detect and resolve deadlocks due to
   commit ordering. But this value was also used as a flag to mark whether
   record_gtid() had been called, by being set to zero, losing the value. Now,
   introduce a separate flag rgi->gtid_pending, so rgi->gtid_sub_id remains
   valid for the entire duration of the transaction.

 - Fix one place where the code to handle ignored errors called reset_killed()
   unconditionally, even if no error was caught that should be ignored. This
   could cause loss of a deadlock kill signal, breaking deadlock detection and
   resolution.

 - Fix a couple of missing mysql_reset_thd_for_next_command(). This could
   cause a prior error condition to remain for the next event executed,
   causing assertions about errors already being set and possibly giving
   incorrect error handling for following event executions.

 - Fix code that cleared thd->rgi_slave in the parallel replication worker
   threads after each event execution; this caused the deadlock detection and
   handling code to not be able to correctly process the associated
   transactions as belonging to replication worker threads.

 - Remove useless error code in slave_background_kill_request().

 - Fix bug where wfc->wakeup_error was not cleared at
   wait_for_commit::unregister_wait_for_prior_commit(). This could cause the
   error condition to wrongly propagate to a later wait_for_prior_commit(),
   causing spurious ER_PRIOR_COMMIT_FAILED errors.

 - Do not put the binlog background thread into the processlist. It causes
   too many result differences in mtr, but also it probably is not useful
   for users to pollute the process list with a system thread that does not
   really perform any user-visible tasks...
2014-06-10 10:13:15 +02:00
Annamalai Gurusami
b5299f3559 Bug #18806829 OPENING INNODB TABLES WITH MANY FOREIGN KEY REFERENCES IS
SLOW/CRASHES SEMAPHORE

Problem:

There are 2 lakh tables - fk_000001, fk_000002 ... fk_200000.  All of them
are related to the same parent_table through a foreign key constraint.
When the parent_table is loaded into the dictionary cache, all the child table
will also be loaded.  This is taking lot of time.  Since this operation happens
when the dictionary latch is taken, the scenario leads to "long semaphore wait"
situation and the server gets killed.

Analysis:

A simple performance analysis showed that the slowness is because of the
dict_foreign_find() function.  It does a linear search on two linked list
table->foreign_list and table->referenced_list, looking for a particular
foreign key object based on foreign->id as the key.  This is called two
times for each foreign key object.

Solution:

Introduce a rb tree in table->foreign_rbt and table->referenced_rbt, which
are some sort of index on table->foreign_list and table->referenced_list
respectively, using foreign->id as the key.  These rbt structures will be
solely used by dict_foreign_find().  

rb#5599 approved by Vasil
2014-06-10 09:35:50 +05:30
Sergei Golubchik
dc9b2a95bf MDEV-6249 mark P_S STABLE and disable it by default 2014-06-09 20:00:23 +02:00
Sergey Vojtovich
0aef90d65e Merge spider fixes. 2014-06-09 22:11:24 +04:00
Kentoku SHIBA
69a7022d59 fix wrong result for Spider test 2014-06-10 02:50:33 +09:00
Kentoku SHIBA
de4441619c fix for Spider build error by abort_loop on windows 2014-06-10 02:25:58 +09:00
Sergei Golubchik
094b01d4f5 10.0-connect 2014-06-09 18:00:53 +02:00
Sergei Golubchik
e6a2d95ac9 MDEV-6320 - disable spider.spider_fixes 2014-06-09 16:36:27 +02:00