mariadb/mysql-test/suite/engines
Christian Gonzalez 4186fa72fb MDEV-28671 Enable var deprecation for mysqld help output
Currently there are mechanism to mark a system variable as
deprecated, but they are only used to print warning messages
when a deprecated variable is set.

Leverage the existing mechanisms in order to make the
deprecation information available at the --help output of mysqld by:

* Moving the deprecation information (i.e `deprecation_substitute`
  attribute) from the `sys_var` class into the `my_option` struct.
  As every `sys_var` contains its own `my_option` struct, the access
  to the deprecation information remains available to `sys_var`
  objects. `my_getotp` functions, which works directly with
  `my_option` structs, gain access to this information while building
  the --help output.

* For plugin variables, leverages the `PLUGIN_VAR_DEPRECATED` flag
  and set the `deprecation_substitute` attribute  accordingly when
  building the `my_option` objects.

* Change the `option_cmp` function to use the `deprecation_substitute`
  attribute instead of the name when sorting the options. This way
  deprecated options and the substitutes will be grouped together.

All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer
Amazon Web Services, Inc.
2024-05-27 12:39:02 +02:00
..
funcs MDEV-25829 Change default Unicode collation to uca1400_ai_ci 2024-05-24 15:50:05 +04:00
iuds MDEV-28671 Enable var deprecation for mysqld help output 2024-05-27 12:39:02 +02:00
rr_trx MDEV-32104 remove deprecated features 2023-09-30 14:43:12 +02:00
README Fixed that storage/funcs tests works with Aria 2019-05-11 13:52:31 +03:00

This directory includes a set of three test suites aimed as testing
functionality in an engine independent way, that is - the tests should
work identically against different engines.

If you are an engine writer and wants to test if your engine is compatible with
other engines in MariaDB, you should instead of using this test suite use
the storage_engine test suite which is more suitable for that purpose.


The following suites are included:

1) 'funcs' suite
   -------------
   A collection of functional tests covering basic engine and server
   functionality that can be run against any engine.

   To run the test suite:
      cd INSTALL_DIR/mysql-test
      run: perl ./mysql-test-run.pl --suite=engines/funcs --mysqld=--default-storage-engine=<engine>

2) 'iuds' suite
   ------------
   Similar to the above focused on insert/update/delete operations of different data types.

   To run the test suite:
      cd INSTALL_DIR/mysql-test
      run: perl ./mysql-test-run.pl --suite=engines/iuds --mysqld=--default-storage-engine=<engine>

3) 'rr_trx' suite (transactional engines only)
   --------------
   A scenario of multiple client connections verifying transactions with repeatable read isolation level

   To run the test suite with innodb:
      cd INSTALL_DIR/mysql-test
      run: perl ./suite/engines/rr_trx/run_stress_tx_rr.pl --engine=<engine> [--duration=<nn>]
                                                          [--threads=<nn>] [--try] [--help] 

   This test is can be run against any transactional engine. However scripts need to be modified in order
   to support such engines (current scripts support only InnoDB).
   In order to add support for a new engine, you will need to modify scripts as follows:
   1) cd to INSTALL_DIR/mysql-test/suite/engines/rr_trx
   2) Modify the 'run_stress_rr.pl' file by adding an 'elsif' section for your engine and have it
      include specific values required to be passed as startup parameters to the MySQL server by
      specifying them using "--mysqld" options (see InnoDB example).
   3) Copy the 'init_innodb.txt' file to 'init_<engine>.txt file and change its content to be "init_<engine>".
   4) In the 't' directory copy the "init_innodb.test" file to "init_<engine>.test" and change the value of
      the '$engine' variable to <engine>.
   5) In the 'r' directory copy "the init_innodb.result" file to "init_<engine>.result" and change references
      to 'InnoDB' to <engine>.


Known Issues
------------
1) The following tests in the 'iuds' suite:
     - delete_decimal
     - insert_decimal 
     - update_decimal
   will return a 'Warning 1264 - Out of range value...' warning if run in a 32-bit environment.
   Add the '--force' option to prevent the test run from aborting.

2) The following tests in the 'funcs' suite will fail when run against the innodb_plugin:
   - crash_manycolumns_string (bug 50495) 
   - ix_unique_lob (bug 52056, masked by an 'Out of memory error' on some 32-bit platforms)
   - ix_unique_string_length (bug 52056, masked by an 'Out of memory error' on some 32-bit platforms)
   Add the '--force' option to prevent the test run from aborting.

3) Some of the rpl_xxx tests in the 'funcs' suite require a specific
   binlog_format setting and will be skipped otherwise.
 
4) Some of the rpl_xxx tests in the 'funcs' suite will report a
   'Statement unsafe for replication' warning when run against a
   server configured to use statement based replication.