Commit graph

5 commits

Author SHA1 Message Date
Marko Mäkelä
5ef1224434 MDEV-20804 Speed up main.index_merge_innodb
The test main.index_merge_innodb is taking very much time,
especially on later versions (10.2 and 10.3).

Some of this could be attributed to the use of INSERT...SELECT,
which is time-consumingly creating explicit record locks in InnoDB
for the locking read in the SELECT part.

In 10.3 and later, some slowness can be attributed to MDEV-12288,
which makes the InnoDB purge thread spend time to reset transaction
identifiers in the inserted records. If we prevent purge from
running before all tables are dropped, the test seems to be
10% faster on an unoptimized debug build on 10.5. (A proper fix
would be to implement MDEV-515 and stop writing row-level undo log
records for inserts into an empty table or partition.)

At the same time, it should not hurt to make main.index_merge_myisam
to use the sequence engine. Not only could it be a little faster,
but the test would be slightly more readable.
2019-10-11 12:29:12 +03:00
Monty
71a2e6a3c6 index_merge_innodb did sometimes give wrong results
Fixed by adding more rows to a table

Other things:
- Speed up index_merge tests 20% by adding begin/commit around loops that
  generated rows.
2019-04-04 08:58:48 +03:00
Sergey Petrunya
fb6183a80b MDEV-5244: Make extended_keys=ON by default in 10.0
- Change the default flag value to ON.
- Update the testcases to be run extended_keys=ON:
  = trivial test result updates
  = If extended_keys setting makes a difference for a testcase, run the testcase 
    with extended_keys=off. There were only a few such cases
- Update to vcol_select_innodb looks like a worse plan but it will be gone in 10.0.
2014-02-25 01:18:13 +04:00
Sergey Glukhov
31a38c0fc5 Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
Subselect executes twice, at JOIN::optimize stage
and at JOIN::execute stage. At optimize stage
Innodb prebuilt struct which is used for the
retrieval of column values is initialized in.
ha_innobase::index_read(), prebuilt->sql_stat_start is true.
After QUICK_ROR_INTERSECT_SELECT finished his job it
restores read_set/write_set bitmaps with initial values
and deactivates one of the handlers used by
QUICK_ROR_INTERSECT_SELECT in JOIN::cleanup
(it's the case when we reuse original handler as one of
 handlers required by QUICK_ROR_INTERSECT_SELECT object).
On second subselect execution inactive handler is activated
in  QUICK_RANGE_SELECT::reset, file->ha_index_init().
In ha_index_init Innodb prebuilt struct is reinitialized
with inappropriate read_set/write_set bitmaps. Further
reinitialization in ha_innobase::index_read() does not
happen as prebuilt->sql_stat_start is false.
It leads to partial retrieval of required field values
and we get a mix of field values from different records
in the record buffer.
The fix is to reset
read_set/write_set bitmaps as these values
are required for proper intialization of
internal InnoDB struct which is used for
the retrieval of column values
(see build_template(), ha_innodb.cc)


mysql-test/include/index_merge_ror_cpk.inc:
  test case
mysql-test/r/index_merge_innodb.result:
  test case
mysql-test/r/index_merge_myisam.result:
  test case
sql/opt_range.cc:
  if ROR merge scan is used we need to reset
  read_set/write_set bitmaps as these values
  are required for proper intialization of
  internal InnoDB struct which is used for
  the retrieval of column values
  (see build_template(), ha_innodb.cc)
2010-09-16 16:13:53 +04:00
unknown
808237b083 This changeset belongs to
WL#3397 Refactoring storage engine test cases (for falcon)
    It contains also fixes according to code review.
    Contents: Testcases which were in history dedicated to InnoDB or MyISAM only.
    Modifications:
    1. Shift the main testing code into include/<testing field>.inc
       Introduce $variables which can be used to omit tests for features which are not supported by
       certain storage engines.
    2. The storage engine to be tested is assigned within the toplevel script (t/<whatever>_<engine>.test)
       via variable $engine_type and the the main testing code is sourced from 
       include/<testing field>.inc
    3. Some toplevel testscripts have to be renamed to
       - avoid immediate or future namespace clashes
       - show via filename which storage engine is tested
    4. Minor code cleanup like remove trailing spaces, some additional comments ....


mysql-test/t/unsafe_binlog_innodb-master.opt:
  Rename: mysql-test/t/innodb_unsafe_binlog-master.opt -> mysql-test/t/unsafe_binlog_innodb-master.opt
mysql-test/r/read_many_rows_innodb.result:
  Rename: mysql-test/r/innodb-big.result -> mysql-test/r/read_many_rows_innodb.result
mysql-test/t/cache_innodb-master.opt:
  Rename: mysql-test/t/innodb_cache-master.opt -> mysql-test/t/cache_innodb-master.opt
mysql-test/t/concurrent_innodb-master.opt:
  Rename: mysql-test/t/innodb_concurrent-master.opt -> mysql-test/t/concurrent_innodb-master.opt
BitKeeper/deleted/.del-index_merge.result:
  Delete: mysql-test/r/index_merge.result
BitKeeper/deleted/.del-index_merge_innodb.result:
  Delete: mysql-test/r/index_merge_innodb.result
BitKeeper/deleted/.del-index_merge_innodb2.result:
  Delete: mysql-test/r/index_merge_innodb2.result
BitKeeper/deleted/.del-index_merge_ror.result:
  Delete: mysql-test/r/index_merge_ror.result
BitKeeper/deleted/.del-index_merge_ror_cpk.result:
  Delete: mysql-test/r/index_merge_ror_cpk.result
mysql-test/r/index_merge_innodb.result:
  BitKeeper file /home/matthias/Arbeit/mysql-5.1-engines/src-1/mysql-test/r/index_merge_innodb.result
mysql-test/t/index_merge_innodb.test:
  BitKeeper file /home/matthias/Arbeit/mysql-5.1-engines/src-1/mysql-test/t/index_merge_innodb.test
mysql-test/t/index_merge_myisam.test:
  BitKeeper file /home/matthias/Arbeit/mysql-5.1-engines/src-1/mysql-test/t/index_merge_myisam.test
mysql-test/include/concurrent.inc:
  1. This file contains now the main testing code of the former t/innodb_concurrent.test.
  2. It is now sourced by t/concurrent_innodb.test.
mysql-test/include/deadlock.inc:
  1. This file contains now the main testing code of the former t/innodb-deadlock.test
  2. It is now sourced by t/deadlock_innodb.test.
mysql-test/include/handler.inc:
  1. This file contains now the main testing code of the former t/innodb_handler.test + t/handler.test.
  2. It is now sourced by t/handler_myisam.test and t/handler_innodb.test.
mysql-test/include/index_merge1.inc:
  1. This file contains now the main testing code of the former t/index_merge.test.
  2. It is now sourced by t/index_merge_myisam.test.
mysql-test/include/index_merge2.inc:
  1. This file contains now the main code of t/index_merge_innodb.test.
  2. It is sourced by t/index_merge_myisam.test and t/index_merge_innodb.test.
mysql-test/include/index_merge_2sweeps.inc:
  1. This file contains now the main code of the former t/index_merge_innodb2.test.
  2. It is sourced by t/index_merge_myisam.test and t/index_merge_innodb.test.
mysql-test/include/index_merge_ror.inc:
  1. This file contains now the main code of the former t/index_merge_ror.test.
  2. It is sourced by t/index_merge_myisam.test.
mysql-test/include/index_merge_ror_cpk.inc:
  1. This file contains now the main testing code of the former t/index_merge_ror_cpk.test.
  2. It is now sourced by t/index_merge_myisam.test and t/index_merge_innodb.test.
mysql-test/include/mix1.inc:
  1. This file contains now the main testing code of the t/innodb_mysql.test
  2. The name mix1.inc was used because the test contains subtests for different fields.
  3. It is sourced by t/innodb_mysql.test.
  4. Fixes:
      - Assign $other_engine_type instead of hardcoded MyISAM.
      - improve comment
      - remove redundant subtest
      - analyze table t4 instead of wrong table t1
      - remove not needed "eval set storage_engine = $engine_type;"
mysql-test/include/mix2.inc:
  1. This file is a copy of the main testing code of the t/innodb.test
     A copy has to be used, because t/innodb.test is to be maintained by INNOBASE only.
  2. The name mix2.inc was used because the test contains subtests for different fields.
  3. It is sourced by t/mix2_myisam.test.
  4. Fixes:
      - improved comment
      - additional "eval SET SESSION STORAGE_ENGINE = $other_engine_type;" at beginning of tests
      - assign $other_engine_type instead of hardcoded MyISAM or HEAP
      - assign $other_engine_type where it is needed to preserve test logics
      - correct logical bugs
      - improve(extend) "checksum table" test
mysql-test/include/query_cache.inc:
  1. This file contains now the main testing code of the former t/innodb_cache.test.
  2. It is now sourced by t/cache_innodb.test
mysql-test/include/read_many_rows.inc:
  1. This file contains now the main testing code of the former t/innodb_big.test.
  2. It is now sourced by t/read_many_rows_innodb.test.
mysql-test/include/rowid_order.inc:
  1. This file contains now the main testing code of t/rowid_order_innodb.test.
  2. It is now sourced by t/rowid_order_innodb.test.
mysql-test/include/unsafe_binlog.inc:
  1. This file contains now the main testing code of the former t/innodb_unsafe_binlog.test.
  2. It is now sourced by t/unsafe_binlog_innodb.test.
mysql-test/r/cache_innodb.result:
  Updated result
mysql-test/r/concurrent_innodb.result:
  Updated result
mysql-test/r/deadlock_innodb.result:
  Updated result
mysql-test/r/handler_innodb.result:
  Updated result
mysql-test/r/handler_myisam.result:
  Updated result
mysql-test/r/index_merge_myisam.result:
  Updated result
mysql-test/r/innodb_mysql.result:
  Updated result
mysql-test/r/mix2_myisam.result:
  Updated result
mysql-test/r/rowid_order_innodb.result:
  Updated result
mysql-test/r/unsafe_binlog_innodb.result:
  Updated result
mysql-test/t/cache_innodb.test:
  1. Renaming of t/innodb_cache.test to t/cache_innodb.test
  2. Main code is now sourced from include/query_cache.inc.
mysql-test/t/concurrent_innodb.test:
  1. Renaming of t/innodb_concurrent.test to t/concurrent_innodb.test
  2. Main code is now sourced from include/concurrent.inc.
     Attention: This test fails even in the old version. (BUG#21579).
                --> added to t/disabled.def
mysql-test/t/deadlock_innodb.test:
  1. Renaming of t/innodb_deadlock.test to t/deadlock_innodb.test
  2. Main code is now sourced from include/deadlock.inc.
mysql-test/t/disabled.def:
  Add the test concurrent_innodb because of 
  BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences
mysql-test/t/handler_innodb.test:
  1. Renaming of t/innodb_handler.test to t/handler_innodb.test
  2. Main code is now sourced from include/handler.inc.
     include/handler.inc = united code of former t/handler.test and t/innodb_handler.test
mysql-test/t/handler_myisam.test:
  1. Renaming of t/handler.test to t/handler_myisam.test
  2. Main code is now sourced from include/handler.inc.
     include/handler.inc = united code of former t/handler.test and t/handler_innodb.test.
mysql-test/t/innodb_mysql.test:
  1. Main code is now sourced from include/mix1.inc.
  2. Test was not renamed because t/innodb.test refers to it.
mysql-test/t/mix2_myisam.test:
  New test: MyISAM variant of mix2 ( = t/innodb.test)
mysql-test/t/read_many_rows_innodb.test:
  1. Renaming of t/innodb_big.test to t/read_many_rows_innodb.test
  2. Main code is now sourced from include/read_many_rows.inc.
mysql-test/t/rowid_order_innodb.test:
  Main code is now sourced from t/rowid_order.inc.
mysql-test/t/unsafe_binlog_innodb.test:
  1. Renaming of t/innodb_unsafe_binlog.test to t/unsafe_binlog_innodb.test
  2. Main code is now sourced from include/unsafe_binlog.inc.
2006-08-16 14:58:49 +02:00
Renamed from mysql-test/t/index_merge_ror_cpk.test (Browse further)