Skip to content

Commit

Permalink
Implement PS-269 (Initial Percona Server 8.0.11 tree)
Browse files Browse the repository at this point in the history
Source tree changes

- Remove include/my_global.h from .gitignore - it should be visible,
  especially when merging from 5.7 (where it's present) to 8.0 (where
  it's not). This partially fixes bug
  https://bugs.mysql.com/bug.php?id=91834 (Cleanup .gitignore,
  e.g. include/my_global.h)

- Remove storage/innobase/.clang-format due to upstream reformatting

CMake / preprocessor symbol changes

- Make CMake option WITH_SYSTEM_LIBS configure -DWITH_READLINE=system
  instead of -DWITH_EDITLINE=system

- Remove WITH_SSL CMake settings from build scripts, leaving the
  implicit default of -DWITH_SSL=system, because the alternative
  -DWITH_SSL=wolfssl requires more work and is broken by upstream in
  8.0.11.

- Use MYSQL_ADD_EXECUTABLE instead of ADD_EXECUTABLE in CMake scripts.

- Remove HAVE_REPLICATION from diff to match upstream [14].

- Remove WITH_EMBEDDED_SERVER, EMBEDDED_LIBRARY,
  NO_EMBEDDED_ACCESS_CHECKS, mysql-test/include/not_embedded.inc
  mentions due to upstream [15], [16], [24] etc.

- Remove WITH_PARTITION_STORAGE_ENGINE due to upstream [32].

- Replace MYSQL_CLIENT preprocessor macro uses with !MYSQL_SERVER due
  to [22].

- Add sql/binlog_crypt_data.cc and sql/event_crypt.cc as mysqlbinlog
  source files in CMake, to replace the former practice of including
  them from source files.

- Remove setting C++98/03 and C++11 detection from CMake due to
  upstream converting to C++11 in WL#8896. This includes removing
  cmake/check_stdcxx11.cmake and its uses from TokuDB / MyRocks.

- Make CMake define __STDC_WANT_LIB_EXT1__=1 on macOS to get
  memset_s.

- Define LOG_COMPONENT_TAG for various plugins and unit tests, to
  accomodate WL#11150 [19].

- Remove uses of UNIV_NONINL due to [35], consequently fold
  buf0dblwr.ic to buf0dblwr.h.

- Revmove UNIV_DEBUG_THREAD_CREATION due to WL#9359 [36]

Compilation changes

- Fix now-enabled-by-default unused parameter warnings, by removing
  the unused parameters, or by marking them unused.

C to C++ conversion

- Convert mysys/system_key.c to C++ mysys/system_key.cc to match
  upstream [1].

- Convert storage/heap/hp_record.c and storage/heap/hp_dspace.c to C++
  hp_record.cc and hp_dspace.cc respectively to match upstream
  [2].

- Mechanical renames, changes, and partial conversions, incomplete
  list:
  - my_bool/FALSE/TRUE/Sys_var_mybool uses to
    bool/false/true/Sys_var_bool due to upstream my_bool removal at
    [6].
  - #define to [static] const constexpr
  - Declare local variables at first use
  - Pointer arguments to const reference ones, where applicable
  - Convert typedef struct declaration to plain struct, removed
    redundant struct tags.
  - NULL/0 to nullptr
  - compile_time_assert to static_assert
  - various ad-hoc macros to std::min
  - various integer types/0/1 to bool/false/true where applicable

- Convert mysqldump.cc patches to C++11, remove uses of HASH, make
  key_type_t an enum class instead of enum. At the same time replace
  uses of LIST with std::list and std::forward_list, although this was
  not strictly required.

- Remove C_MODE_START/C_MODE_END and extern "C" blocks from C++-only
  headers.

C++03 to C++11 conversion

- Replace HASH with std::unordered_map in many patches, because
  upstream removed HASH in series of commits for "25997748".

- Mechanical renames and changes, incomplete list:
  - ut_snprintf uses to snprintf due to upstream removal of the former
    at [12].
  - my_snprintf to snprintf due to C++11 guaranteeing the presence of
    the latter.
  - Applied noexcept to matching functions and methods.
  - Applied final to matching classes.
  - boost::movelib::unique_ptr to std::unique_ptr.
  - insert to emplace for standard containers, where applicable
  - converted some of std::map uses to std::unordered_map, if ordering
    is not required
  - std::auto_ptr to std::unique_ptr
  - Assignments in constructors and constructor initializer lists to
    default member initializers.
  - UNIV_THREAD_LOCAL to thread_local

- Replaced uses of compiler builtins with std::atomic for atomic
  variables.

User statistics

- Due to HASH replacement with modern C++ collections, cleanup
  userstat to store objects directly instead of heap-allocated
  pointers to them. For this, add constructors to TABLE_STATS and
  INDEX_STATS to replace init_user_stats and init_thread_stats
  functions.

Binlog encryption

- Adjust binlog encryption patches for MYSQL_BIN_LOG "append" to
  "write" rename in cass methods.

Parser

- Put Percona tokens at the end of the token list due to upstream
  attempt to ensure token digest value stability ([17], [18]).

- Because of upstream bottom-up parser refactoring for CREATE TABLE
  [23], which includes column attributes, rewrite TokuDB clustered
  index and InnoDB compression dictionary support:
  - add apply_zip_dict method to PT_column_attr_base class;
  - add zip_dict_name arg to the constructor and m_zip_dict_name field
    to PT_column_format_column_attr class, implement apply_zip_dict;
  - add m_zip_dict field to PT_field_def_base, get its value in
    contextualize_attrs method, and pass it to Alter_info instance in
    PT_column_def::contextualize and
    PT_alter_table_change_column::contextualize
  - rename PT_unique_key_column_attr to
    PT_unique_combo_clustering_key_column_attr, make it handle both
    UNIQUE and CLUSTERING
  - move zip_dict_name from LEX to HA_CREATE_INFO in line with the
    upstream LEX reduction in parser refactoring.
  - Typedef new alter tablespace option
    PT_alter_tablespace_option_encryption for general tablespace
    encryption.

Performance Schema

- Adjust PFS object declarations for the new volatility and
  documentation fields, account for PSI_FLAG_GLOBAL rename to
  PSI_FLAG_SINGLETON.

- Move server PSF memory key declarations to sql/psi_memory_key.h and
  sql/psi_memory_key.cc

- Adjust inline_mysql_unix_connect PFS instrumentation in
  include/mysql/psi/mysql_file.h to modern PFS instrumentation pattern
  which was introduced back in [3] because the old one stopped
  compiling in 8.0. While at that, switch from HAVE_PSI_INTERFACE to
  HAVE_PSI_FILE_INTERFACE.

Audit log plugin

- Converted the plugin to C++.

- Made a lot of declarations in audit_log.cc static and/or const.

- Converted hash tables in filter.cc to
  collation_unordered_set<std::string>. At the same time convert the
  hash table value struct creator/initialization functions to
  constructors.

Backup locks

- Remove everything associated with LOCK BINLOG FOR BACKUP / UNLOCK
  BINLOG due to upstream performance_schema.log_status table.

- Refer to Oracle backup lock as "instance backup lock" and Percona
  backup lock as "table backup lock" to try to reduce confusion
  between the two.

Expanded fast index creation

- Change the type of delayed_key_list container in Alter_info from
  List to Mem_root_array.

Threadpool

- Re-implement TP_STATISTICS::num_worker_threads,
  pool_timer_t::current_microtime and next_timeout_check using C++11
  atomics.

- Convert Worker_thread_context struct to class with
  constructor/destructor instead of save/restore methods, to be used
  as RAII.

New data dictionary

- Percona features that need to store information in the new data
  dictionary (CLUSTERED keys for TokuDB; compression dictionary
  information for InnoDB have not been re-implemented for the new DD
  yet). For now the legacy implementation is disabled, to be removed
  together with the new implementation, except for the reading bits,
  because they are needed for upgrades from 5.7. Specifically, leave
  SYSTEM_TABLE_NAME patch in, dict_process_sys_zip_dict function

Changed page tracking

- Move fil_name_process patch not to cause any tablespace in
  filesystem changes when called by redo log tracking to
  fil_tablespace_redo_delete and fil_tablespace_redo_create.

- Introduce apply arg for fil_tablespace_redo_encryption for redo log
  parsing mode only.

- log_get_tracked_lsn and log_set_tracked_lsn have been remvoed after
  the tracked LSN conversion to C++11 atomic variable.

- Fold log_check_tracking_margin to
  log0write.cc:log_write_write_buffer.

- Move redo log signalling from log_io_complete_checkpoint to
  log0chkp.cc:log_checkpoint.

- Drop log_group_read_log_seg release_mutex arg (which would have been
  moved to recv_read_log_seg) because of log_sys->mutex removal.

- innobase_logs_empty_and_mark_at_shutdown patches moved to
  srv_log_shutdown.

- Due to os_file_dir_t and associated function removals in [13],
  rewrite their users in log0online.cc to use MY_DIR and my_dir from
  mysys.

- Remove log_group_t mentions from log0online.cc

- Add handling for MLOG_COMP_PAGE_CREATE_SDI, MLOG_PAGE_CREATE_SDI,
  and MLOG_TABLE_DYNAMIC_META MTR types.

- Adjust redo log reading code for log_group_read_log_seg rename to
  recv_read_log_seg, convert the latter from static to public
  function.

- Refactor out redo log tracker-waiting code in fil0fil.cc to a new
  private static method Fil_system::wait_for_changed_page_tracker.

Other changes due to upstream

- Remove YaSSL-related source code (mysys_ssl/yassl.cpp, HAVE_YASSL
  check, build-binary.sh --with-yassl option)

- Replace my_global.h includes with the needed smaller ones
  (my_inttypes.h, mysql/service_mysql_alloc.h, my_macros.h) due to
  upstream patch series "Bug #24710065: SPLIT MY_GLOBAL.H", and move
  my_global.h patches to appropriate places: s6_addr32 define to
  violite.h.

- Remove THD::thr_create_utime uses and replace
  THD::update_server_status calls with THD::update_slow_query_status
  due to [30].

- Remove Sql_alloc uses due to [26].

- Adjust for class Key rename to Key_spec with declaration moved to
  sql/key_spec.h in [4].

- Remove NORMAL_PART_NAME uses because of [25].

- Break up the dependency between sql_class.h and handler.h by moving
  opt_log_slow_admin_statements and opt_log_slow_sp_statements from
  mysqld.h/mysqld.cc to log.h/log.cc, and including log.h instead of
  mysqld.h (which then includes handler.h) in sql_class.h. Also move
  struct fragmentation_stats_t declaration to system_variables.h from
  sql_thd_internal_api.h, put a forward declaration there, and do not
  include the latter header from the former. This is done due to [21].

- Remove THD::KILL_BAD_DATA uses due to [28].

- Remove THR_THD uses due to [29].

- Convert uses of dict_table_is_temporary to
  dict_table_t::is_temporary() due to [7].

- Remove TABLE_SHARE::uniques uses from sql_base.cc
  Table_Node::Table_Node due to upstream removal at [27]. It is not
  clear whether the resulting code is correct though.

- Replace uses of SRV_LOG_SPACE_FIRST_ID with
  dict_sys_t::log_space_first_id due to [8] and the n
  dict_sys_t::s_log_space_first_id due to [9].

- Move srv_parallel_doublewrite_path initialisation to
  innobase_init_params to reflect InnoDB startup refactoring

- Adjust btr_copy_externally_stored_field callers to call
  lob::btr_copy_externally_stored_field (WL#9141, [34]), and pass
  index definition to it (WL#8960, [33]).

- Move dict_index_get_nth_col_pos patches to dict_index_t::get_col_pos
  because of [11].

- Adjust get-space-by-space-id code for fil_system mutex removal,
  sharding, and fil_node_complete_io -> complete_io rename, introduced
  in WL#8619 [10].

- Remove innodb_use_global_flush_log_at_trx_commit and commit
  innodb_flush_log_at_trx_commit back to global variable, and remove
  associated srv_use_global_flush_log_at_trx_commit source code
  variable and thd_flush_log_at_trx_commit function

- Replace struct st_mysql_sys_var occurences with SYS_VAR due to [20].

- Adjust warn_or_info class for InnoDB logging changes at [5], which
  remove the actual logging from logger::~logger, pass diagnostics
  level to its constructor, and conditionally disable actual logging
  using UNIV_NO_ERR_MSGS preprocessor define.

- Removed /*=...==*/ comments and replace /**...**//**\n with /** in
  the InnoDB patch according to [37].

- Replace reserved_system_space_name with dict_sys_t::sys_space_name
  because of [8], and then to dict_sys_t::s_sys_space_name because of
  [9].

Misc cleanups

- Split assert(condition1 && condition2) to assert(condition1);
  assert(condition2);

- Create type aliases for all the added function pointers in the
  handlerton interface.

- Remove hash table size information leftovers that should have been
  removed in the 5.7 porting branch

- Replace some of the ulint uses with space_id_t where applicable

- Remove our #define SRV_MAX_N_PURGE_THREADS in favor of upstream
  MAX_PURGE_THREADS.

- Remove remnants of innodb_flush_method = ALL_O_DIRECT: defines
  DEFAULT_SRV_LOG_WRITE_AHEAD_SIZE and MAX_SRV_LOG_WRITE_AHEAD_SIZE,
  xb_simulate_all_o_direct_write_failure,
  xb_simulate_all_o_direct_read_failure debug points.

- Introduce flush_changed_page_bitmaps_t and
  purge_changed_page_bitmaps_t types for the corresponding handlerton
  methods.

- Remove .is_percona_server_bzr

- Replace README.MySQL contents with upstream README

- Update man pages from mysql-8.0.11.tar.gz

Testsuite

These are partial changes only, as there was no goal to run the
testsuite at this stage.

- Remove uses of have_dynamic_loading.inc, have_symlink.inc,
  have_innodb.inc, have_perfschema.inc include files due to [31].

TokuDB, MyRocks, PAM authentication

These three plugins are not handled in this merge yet.

[1]:

commit c7a720b
Author: Jon Olav Hauglid <[email protected]>
Date:   Thu Sep 24 12:46:44 2015 +0100

    Bug#21881278: SWITCH MYSYS LIBRARY FROM C TO C++

    This patch switches all mysys/ files from .c to .cc.
    By doing this we get stricter compile checks (e.g. type checks)
    and it makes it possible to use C++ features for future
    bug fixes and extensions inside mysys.

[2]:

commit 4133e44
Author: Steinar H. Gunderson <[email protected]>
Date:   Thu Sep 7 15:18:39 2017 +0200

    Bug #26781567: REMOVE C LEGACY [noclose]

    Convert the remaining C files to C++, except for external source code (e.g. memcached)
    and a few .c files that are there to verify that our client library still builds from
    C code.

    The only real exception is libservices/, where ODR violations (services are defined
    as structs in some files and as void * in others) mean that linking with C++
    linkage would break linking on Windows.

    Change-Id: I61f6a281ffcd5c0fca9f4b9976aeb580dd1b0b65

[3]:

commit bd8c99e
Author: Marc Alff <[email protected]>
Date:   Fri Jul 1 10:46:20 2011 +0200

    Bug#12346211 PERF IMPACT OF PERFORMANCE-SCHEMA WITH DISABLED INSTRUMENTS/CONSUMERS

    Performance improvement #1: instrumentation interface.

    In the instrumentation interface in include/mysql/psi/psi.h,
    implemented the following changes.

    1) Removal of "if (PSI_server != NULL)".

    Instead of having PSI_server == NULL when the performance schema is disabled,
    a dummy implementation of the instrumentation interface is provided in mysys/psi_noop.cc.

    Replacing a test by calling an empty function is similar for the disabled code path.
    For the instrumented code path (the performance schema is enabled), removing this test
    completely improves performances.

    2) Push down of "if (that->m_psi != NULL)".

    Testing if an object is instrumented has been pushed down to the implementation
    of the instrumentation interface.
    In case of psi_noop.cc, this test is not needed, which improves performances for the
    disabled case.

    3) Removal of 1 "if (locker != NULL)" test.

    Before the fix, the coding pattern was:

    locker= ...
    if (locker != NULL)
      PSI_server->start_event()
    <instrumented code>
    if (locker != NULL)
      PSI_server->end_event()

    After the fix, the coding pattern is:

    locker= ...
    if (locker != NULL)
    {
      PSI_server->start_event()
      <instrumented code>
      PSI_server->end_event()
    }
    else
    {
      <instrumented code>
    }

    This saves an extra if() in both the instrumented and non instrumented code path.

    4) Packing of helper structures.

    Unused attributes such as m_src_file and m_src_line have been removed.
    Attributes have been reordered to:
    - avoid holes caused by padding
    - put attributes used very frequently first

    5) Use PSI_CALL()

    Calls to the performance schema implementation have been changed from:
      PSI_server->function();
    to
      PSI_CALL(function)();

    This is cosmetic only, and can help later to make static calls to pfs_function()
    instead of using the PSI_server pointer.

[4]:

commit 3f3c259
Author: Tor Didriksen <[email protected]>
Date:   Thu Mar 26 16:56:31 2015 +0100

    Bug#20756282 MOVE CLASS KEY AND FOREIGN_KEY OUT OF SQL_CLASS.H

    Move Key_part_spec, Key_spec (new name for Key) and
    Foreign_key_spec (new name for Foreign_key) to new files key_spec.h/cc

[5]:

commit 29e3723
Author: Sunny Bains <[email protected]>
Date:   Fri Feb 16 14:30:31 2018 +1100

    WL#11009: Logging services: log writers: add error ID to traditional error log (InnoDB changes)

    Add a unique ID to all log InnoDB messages.
    Remove InnoDB: prefix from the pattern matching in the tests.

    RB#18486 Reviewed by: Ingo, Annamalai and Praveen Hulakund.

[6]:

commit 6c174bd
Author: Steinar H. Gunderson <[email protected]>
Date:   Tue Feb 21 13:39:24 2017 +0100

    Bug #25597667: REMOVE MY_BOOL

    Replace my_bool with bool everywhere.

    Change-Id: Ibfe9f9b4a05d8ee82d09ffdc4f1f038ec4555b89

[7]:

commit 2238b41
Author: El<C5><BC>bieta Babij <[email protected]>
Date:   Tue Jul 5 12:22:26 2016 +0200

    Bug#23748128 - Add some accessor methods to dict_table_t.

    dict_table_t::get_n_user_cols(): Get the number of user-specified columns, possibly including a hidden FTS_DOC_ID column.
    dict_table_t::get_n_sys_cols(): Get the number of internal system columns.
    dict_table_t::get_n_cols(): Get the number of all columns.
    dict_table_t::get_col(): Get a column.
    dict_table_t::get_col_name(): Get a column name.
    dict_table_t::get_sys_col(): Get an internal system column.

[8]:

commit cd7649d
Author: Allen Lai <[email protected]>
Date:   Thu Apr 13 10:59:58 2017 +0800

    wl#9525 InnoDB_New_DD: update InnoDB specific metadata into new DD for  DDL
    wl#9534 InnoDB_New_DD: Instantiate InnoDB in-memory metadata with  newDD objects
    wl#9530 InnoDB_New_DD: FTS index support for newDD
    wl#9531 InnoDB_New_DD: Enable table encryption and transparent  compression
    wl#9532 InnoDB_New_DD: InnoDB_New_DD: Move data dictionary tables to a  single tablespace
    wl#9559 InnoDB_New_DD: Support in-place ALTER PARTITION
    wl#9537 InnoDB_New_DD: Support InnoDB table import/export for new DD
    wl#9357<C2><A0>InnoDB: Upgrade steps for new data dictionary
    wl#9570<C2><A0>Extend SHOW statements to list hidden  columns and index information
    wl#9461<C2><A0>Upgrade for Innodb Internal Dictionary Migration

    This is the InnoDB side of work to support an unified metadata system between MySQL server and
    Storage Engines. It removes the InnoDB dependency on InnoDB system tables, that is, all InnoDB
    metadata are now read from server objects, instead of reading from InnoDB system tables.

    In these wls, we replaced dict_table_open_* (on_id/on_name) with their newDD counterpart.
    It replaced metadata instantiation (dict_load_table etc.) with newDD counterpart too.
    And also, we migrated all related features, like partition, encryption, compression and
    import/export etc. Upgrade from mysql-5.7 is supported as well.

[9]:

3452648
Author:     Jimmy Yang <[email protected]>
AuthorDate: Thu Aug 17 00:34:24 2017 +0200
Commit:     Jimmy Yang <[email protected]>
CommitDate: Thu Aug 17 00:46:42 2017 +0200

Parent:     f8076b3 Bug#25727892: Refactor Item::const_item() as a non-virtual function
Merged:     5.5 5.6 mysql-5.7.7
Containing: 8.0 mysql-8.0.11-percona-patches mysql-8.0.3-percona-patches mysql-8.0.4-percona-patches (1 more)
Follows:    mysql-8.0.2 (1261)
Precedes:   mysql-8.0.3 (144)

InnoDB NewDD worklogs(WL#9535 and WL#9536) to support Atomic DDL and
completely remove old InnoDB system tables:

    1. WL#9535: InnoDB_New_DD: Remove InnoDB System Table and modify the
    view of their I_S counterparts

    This worklog obsoletes all InnoDB System tables, which are no longer
    used and could only be accessed by upgrade. All metadata is now
    persisted and read from DD system tables in "mysql tablespace"
    instead of "old" InnoDB System Tables.

    All corresponding information_schema.innodb_sys_* tables are replaced
    by new internal system views.
    These new views have the name similar to the names of old system tables,
    just removing the 'SYS_' from the middle of the names.

    2. WL#9536: InnoDB_New_DD: Support crash-safe DDL

    This worklog starts to support crash-safe DDL for InnoDB. DDLs like
    CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ALTER TABLE,
    CREATE TABLESPACE and DROP TABLESPACE are covered by this worklog.
    DDLs operations including DD system table updates and corresponding
    file changes(create, delete, rename etc.) are atomic.

    Physical data files would be synchronized with the transaction for DDL,
    thus there should be no physical data files for temporary tables or FTS
    auxiliary tables, etc. left after recovery.

[10]:

commit cf63b24
Author: Sunny Bains <[email protected]>
Date:   Fri Dec 8 12:10:42 2017 +1100

    WL#8619 - InnoDB: Provide offline database portability without ISL files

    Summary of changes.

    1. Introduce --innodb-directories := "dir1;...;dirN". This is renamed
       from --innodb-scan-directories which was introduced in WL#9499.
       Currently this is not dynamic.
    2. Revert to 5.6 behaviour where we scan directories and find .ibd files.
       If you move tablespaces to a new location, add the path to
       innodb-data-directories so that InnoDB can "discover" the files on
       startup.
    3. Tablespaces can only be created under known directories. This
       eliminates the need for .isl files.
    4. Upgrade redo log format, not backward compatible
    5. Change redo log type IDs
    6. Code cleanup
    7. Shard the fil system data structures for performance
    8. Remove WL#9499 files that were used to track open tablespaces.

    RB#16842 Approved by: Jimmy and Kevin.

[11]:

commit b3ba94c
Author: El<C5><BC>bieta Babij <[email protected]>
Date:   Tue Jul 26 15:00:04 2016 +0200

    Bug #24361023 - Add accessors to indexes.
          dict_index_t::add_field(): Replaces dict_mem_index_add_field().
          dict_index_t::get_field(): Replaces dict_index_get_nth_field().
          dict_index_t::get_col(): Replaces dict_index_get_nth_col().
          dict_index_t::get_col_no(): Replaces dict_index_get_nth_col_no().
          dict_index_t::get_col_pos(): Replaces dict_index_get_nth_col_pos()
       and dict_index_get_nth_col_or_prefix_pos().
          dict_index_t::get_sys_col_pos(): Replaces dict_index_get_sys_col_pos().

    RB#13487
    Reviewed by Kevin Lewis

[12]:

commit 98bba73
Author: El<C5><BC>bieta Babij <[email protected]>
Date:   Mon May 23 10:21:20 2016 +0200

    Bug #23329353 - Replace ut_snprint with the C++11 snprintf function.

[13]:

commit 31350e8
Author: Gopal Shankar <[email protected]>
Date:   Tue Nov 3 13:27:06 2015 +0530

    WL#6378 New data dictionary (umbrella).
    (...)

[14]:

commit f98b7bc
Author: Jon Olav Hauglid <[email protected]>
Date:   Wed Jan 18 10:39:10 2017 +0100

    Bug#25413703: REMOVE #IFDEF HAVE_REPLICATION

    After the removal of embedded server, the HAVE_REPLICATION
    ifdef is always true and can therefore be removed.

[15]:

commit 18c6270
Author: Tor Didriksen <[email protected]>
Date:   Tue Nov 8 09:55:35 2016 +0100

    WL#9816 Do not build/package/test embedded server

    - Remove/Cleanup all cmake related code pertaining to embedded server
    - Remove/Cleanup embedded server from RMP and Debian packages
    - Remove embedded tests from our mtr test collections
    - Remove all source code in the libmysqld directory
    - Remove embedded code from mysql-test-run

    Change-Id: Ib2432e50043f060f1da64328815cdb9d53981de4

[16]:

commit 0a68d5d
Author: Jon Olav Hauglid <[email protected]>
Date:   Mon Jan 16 12:35:47 2017 +0100

    Bug#25304844: REMOVE EMBEDDED_LIBRARY #IFDEF

    Remove dead code related to embedded server.

    Part 5: Remove EMBEDDED_LIBRARY ifdef from client/
    and storage/

    This patch also removes the --server-arg option from 'mysql'.
    This option was embedded server specific and undocumented.
    --server-arg and --server-file are, for the same reason,
    removed from 'mysqltest'.

[17]:

commit db3fd68
Author: Gleb Shchepa <[email protected]>
Date:   Thu Dec 7 16:21:28 2017 +0400

    WL#8989: Create an internal API for the MySQL parser to enumerate reserved and non-reserved words

    Part I. Grammar preparation.

    * Replace the existent type tag <symbol> with <keyword> for a better
      readability.

    * Add the new type tag <keyword> to currently untyped terminal and
      non-terminal symbols.

    Part II. Create a simple compile-time program for transforming
             sql_yacc.yy into a .h file that contains an array of
             reserved and non-reserved words.

    * Find %token declarations with the <keyword> type tag by a regexp.

    * Separate %type declarations are ignored for the simplicity.

    Part III. Introduce a new system view: INFORMATION_SCHEMA.keywords.

    * Hardcode the statical list of keywords and reserved words into a view
      on top of a long JSON_TABLE(...) expression.

    * Use a trick in the .test file to trace changes in keywords: notify the
      developer to update the target I_S version in the mysqld binary where
      necessary -- this will force DD to refresh I_S view declarations on
      the next run.

[18]:

commit a2f3a60
Author: Marc Alff <[email protected]>
Date:   Thu Mar 10 10:10:25 2016 +0100

    Bug#22906606 IMPROVE DIGEST STABILITY

    Before this fix, adding new tokens in the parser
    caused query digests to change.

    The root cause was that tokens are typically added in the middle of the
    list, causing renumbering of tokens.

    With this fix, the process is now changed and documented:
    new tokens should be added at the end of the list.

    The tool gen_lex_token, used during the build, is improved to enforce this
    process.

[19]:

commit f9d1c83
Author: Tatiana Azundris Nuernberg <[email protected]>
Date:   Sat Mar 3 13:31:37 2018 +0000

    WL#11150: Add <component> to error log messages by default

    Adds another key/value pair to log events. The new field
    "subsystem" will contain one of the values "InnoDB" (for
    errors thrown in the InnoDB storage engine proper), "Repl"
    (for those thrown by the replication subsystem), or "Server"
    (otherwise).

    This value is also added to the traditional log. This field
    will appear  between '[' <error_number> ']' and
    '[' <error_text> ']'.

[20]:

commit 545b168
Author: Steinar H. Gunderson <[email protected]>
Date:   Wed Sep 13 12:57:13 2017 +0200

    Bug #26781567: REMOVE C LEGACY

    Replace the final typedefs to st_* and *_st structs.

    Note in particular that st_mysql_show_var was called sometimes SHOW_VAR
    and sometimes STATUS_VAR (by way of duplicated forward-declaring typedefs).
    This patch changes it so that it's universally SHOW_VAR, which seems to
    match better with the original type name.

    Change-Id: Ide483ceac31284d909c42adb46496308dd4d4f85

[21]:

commit f58cb36
Author: Steinar H. Gunderson <[email protected]>
Date:   Tue Oct 10 14:54:53 2017 +0200

    Bug #26927386: REDUCE WEIGHT OF SQL_CLASS.H [noclose]

    Remove field.h, handler.h and sql_profile.h from sql_class.h, and add a simple
    test to make sure they don't get back.

    Takes sql_class.h down from approx 1.0 to 0.85 seconds (GCC 7.2.0, -O2 -g).

    Change-Id: I72618c977c7af330d1215899971e2f9e49ab7b88

[22]:

commit be029db
Author: Jon Olav Hauglid <[email protected]>
Date:   Thu Jan 19 15:14:58 2017 +0100

    Bug#25428042: REPLACE MYSQL_CLIENT IFDEF WITH !MYSQL_SERVER

    Replace the MYSQL_CLIENT #ifdef with !MYSQL_SERVER to
    simplify conditional compilation.

    Also remove unnecessary usage of MYSQL_SERVER
    and move setting of MYSQL_SERVER from C++ to CMake.

[23]:

commit f5c32ea
Author: Gleb Shchepa <[email protected]>
Date:   Thu Jul 14 21:48:55 2016 +0400

    WL#8067: True bottom-up server parser: refactoring of the CREATE TABLE statement
    WL#8434: True bottom-up server parser: refactoring of partitioning-related stuff
    WL#8435: True bottom-up server parser: cleanup and refactoring column definition stuff
    WL#8433: Separate DD commands from regular SQL queries in the parser grammar
    WL#7840: Allow parsing a single expression

[24]:

commit ed007c8
Author: Jon Olav Hauglid <[email protected]>
Date:   Thu Dec 22 11:42:43 2016 +0100

    Bug#25304844: REMOVE EMBEDDED_LIBRARY #IFDEF

    Remove dead code related to embedded server.

    Part 3: Remove NO_EMBEDDED_ACCESS_CHECKS ifdef

[25]:

commit 11d6946
Author: Dmitry Lenev <[email protected]>
Date:   Fri Apr 21 09:52:09 2017 +0300

    Removed old partitioning DDL implementation which is no longer in use.

    After WL#8971 "Deprecate and remove partition engine" and WL#9559
    "InnoDB_New_DD: Support in-place ALTER PARTITION" code implementing
    "fast" partitioning DDL (fast_alter_partition_table() and related
    functions) became unused.

    This patch removes this dead code (including DDL_LOG implementation
    used by it) as a follow-up to the above WLs.

[26]:

commit 5fecdfa
Author: Steinar H. Gunderson <[email protected]>
Date:   Thu Sep 21 14:40:20 2017 +0200

    Bug #26030132: REMOVE SQL_ALLOC

    Finally remove Sql_alloc, now that 8.0 has been branched off. This is a no-op
    change for all existing code; there is no code that does new Foo() inheriting
    from Sql_alloc, since that overload doesn't exist, and similarly no code that
    deletes such objects, since operator delete is private.

    After this, it is possible to write such code, and it will do the obvious thing
    (allocate on the regular heap, and destroy similarly). As usual, code that wants
    to allocate on a MEM_ROOT must say so explicitly by use of overloaded new.

    Change-Id: I2e98b39daa06d6dfd8b8c5b1d45a85b1ddc02b3b

[27]:

commit 4880f97
Author: Guilhem Bichot <[email protected]>
Date:   Tue Nov 29 15:46:27 2016 +0100

    WL#883 non-recursive CTE
    WL#3634 recursive CTE
    (...)

[28]:

commit 597a259
Author: Jon Olav Hauglid <[email protected]>
Date:   Tue Oct 6 14:04:03 2015 +0100

    Bug#21944866: REFACTORING: REMOVE KILL_BAD_DATA

    Remove KILL_BAD_DATA from the THD::killed_state enum.
    KILL_BAD_DATA was only set by the connection itself when
    a warning was upgraded to error by STRICT mode. It therefore
    had nothing to do with the connection being killed by
    other connections (e.g. KILL QUERY / KILL CONNECTION).

    This is a refactoring with no changes in behavior.

[29]:

commit 2bf852b
Author: Steinar H. Gunderson <[email protected]>
Date:   Wed Apr 12 12:26:14 2017 +0200

    Bug #25909342: USE C++11 THREAD-LOCAL STORAGE FOR CURRENT_THD

    Our current implementation of current_thd uses mysys' my_thread_* API, which
    maps onto pthreads (at least for Linux/UNIX). C++11 supports native TLS,
    which means we just need two simple MOV instructions to do a TLS fetch
    instead of a full shared library call; the interface is also much simpler.
    We probably don't have a lot of performance gain, since we don't pick out
    current_thd all that often, but it's a nice cleanup to do nevertheless.

    There are still some uses of the my_thread_* API, particularly in PFS;
    cleaning this up is for a later patch.

    Change-Id: Ia16e0c1ccfa52af815882bcddd1eb3be80f77c61

[30]:

commit 162e016
Author: Jon Olav Hauglid <[email protected]>
Date:   Tue Mar 15 14:32:39 2016 +0100

    Bug#22948828: REFACTOR USAGE OF MY_MICRO_TIME()

    Remove redundant calls to my_micro_time() to simplify code
    and reduce the usage of gettimeofdat(). Especially focused
    on code for handling new connections.

    sql/conn_handler/connection_handler_one_thread.cc
    - Removed my_micro_time() call. THD::start_utime has just been
      set by THD::THD() => THD::init(). THD::thr_create_utime is
      only needed by connection_handler_per_thread.cc

    sql/conn_handler/connection_handler_per_thread.cc
    - Removed my_micro_time() call. THD::start_utime has just been
      set by THD::THD() => THD::init(). Remove THD::thr_create_utime,
      we can use THD::start_utime instead.

    sql/event_queue.cc
    - Replaced usage of THD::set_current_time() with THD::set_time().
      THD::set_time() does the same as long as THD::user_time is NULL
      which it is for events. Allows the removal of THD::set_current_time()

    sql/events.cc
    - Removed THD::set_time() call. THD::set_time() has just been
      called by THD::THD() => THD::init().

    sql/log.cc
    - Removed default argument value for make_iso8601_timestamp()
      for clarity.
    - Reduced critical section of LOCK_logger.
    - Call my_micro_time() directly instead of the unnecessary
      THD::current_utime() wrapper.

    sql/log_event.cc
    - Use the existing THD::query_start() function instead of accessing
      THD::start_time directly.
    - Renamed THD::update_server_status() to THD::check_slow_query()
      since the old name was somewhat misleading.

    sql/sql_class.h
    - Removed THD::thr_create_utime, no longer needed.
    - Removed redundant inline keyword, added const where possible.
    - Removed THD::query_start_usec(), not used.
    - Removed THD::query_start_timeval(), no longer needed.
    - Removed THD::set_current_time(), no longer needed.
    - Removed THD::is_valid_time(), code moved to sql_parse.cc
    - Renamed THD::update_server_status() to THD::check_slow_query()
      since the old name was somewhat misleading.

    sql/sql_connect.cc
    - Use THD::start_utime instead of removed THD::thd_create_utime
      (had the same value)
    - Removed call to THD::set_time(). Called by THD::init_for_queries()
      right afterwards anyway.

    sql/sql_thd_internal_api.cc
    - Removed THD::set_time() call. THD::set_time() has just been
      called by THD::THD() => THD::init().
    - Removed call to my_micro_time(). Already done by THD::set_time().

[31]

commit 485545b
Author: Mohit Joshi <[email protected]>
Date:   Tue Jan 17 11:56:43 2017 +0530

    Bug#25166686::REMOVE ALL THE REDUNDANT .INC FILES FROM MTR

    Description:
    It is noticed that there are a lot of redundant inc files which
    are not being used by any of the MTR tests. Also, there are several
    inc files which are included in the test but are not needed
    anymore.

    Fix:

    Below inc files are not being used by any test and hence removed:

    1.  include/check_key_reads.inc
    2.  include/check_key_req.inc
    3.  include/commandline_option_test.inc
    4.  include/config_file_option_test.inc
    5.  include/explain.inc
    6.  include/finish_option_test.inc
    7.  include/have_binlog_checksum_off.inc
    8.  include/have_dynamic_loading.inc
    9.  include/have_shm.inc
    10. include/init_option_test.inc
    11. include/not_blackhole.inc
    12. include/show_partition_checksums.inc
    13. include/show_partition_contents.inc
    14. include/test_outfile.inc

    Below are a few inc files which are used in MTR tests but are no more needed.
    Hence these inc files along with their references from all MTR tests have been
    removed.

    1. have_symlink.inc
    2. have_perfschema.inc
    3. have_innodb.inc

    Note: include/not_valgrind_server.inc is not being used by any MTR test but
    still not removed as this was introduced as part of Bug#22447330

    Reviewed by:
    Parveez Baig <[email protected]>
    Deepa Dixit <[email protected]>

[32]

commit a0d0cab
Author: Sivert Sorumgard <[email protected]>
Date:   Thu Jun 30 16:00:31 2016 +0200

    WL#8971: Deprecate and remove partitioning storage engine

    This worklog implements the following main changes:

    1. Modify cmake files, do not build partitioning engine.
    2. Remove files implementing the partitioning engine.
    3. Remove some mtr tests using non-native partitioning.
    4. Rewrite some mtr tests to use native partitioning.
       Various adjustments necessary, e.g. regarding EXPLAIN
       output.
    5. Introduce error handling at the SQL layer to fail
       if using partitioning related DDL statements for
       engines not supporting it natively.
    6. Remove reference to the DB_TYPE_PARTITIONING_DB
       internally, but keep the enum entry to avoid
       disturbing other values.
    7. Add an mtr test testing the error handling.
    8. Add an mtr test to check for regressions in support
       for partitioning in ndb.
    9. Copy comments from storage/partition/ha_partition.*
       to sql/handler.*, include/my_base.h etc.

[33]

commit eda9201
Author: Annamalai Gurusami <[email protected]>
Date:   Thu Apr 28 12:29:00 2016 +0530

    WL#9141 InnoDB: Refactor uncompressed BLOB code to facilitate partial
    fetch/update
    (...)

[34]

commit eda9201
Author: Annamalai Gurusami <[email protected]>
Date:   Thu Apr 28 12:29:00 2016 +0530

    WL#9141 InnoDB: Refactor uncompressed BLOB code to facilitate partial
    fetch/update
    (...)

[35]

commit 2eec7f3
Author: Marko M<C3><A4>kel<C3><A4> <[email protected]>
Date:   Fri Apr 22 10:50:45 2016 +0200

    Bug#23150562 REMOVE UNIV_MUST_NOT_INLINE AND UNIV_NONINL

    Problem:
    InnoDB used to support a compilation mode that allowed to choose
    whether the function definitions in .ic files are to be inlined or not.
    This stopped making sense when InnoDB moved to C++ in MySQL 5.6
    (and ha_innodb.cc started to #include .ic files), and more so in
    MySQL 5.7 when inline methods and functions were introduced
    in .h files.

    Solution:
    Remove all references to UNIV_NONINL and UNIV_MUST_NOT_INLINE from
    all files, assuming that the symbols are never defined.
    Remove the files fut0fut.cc and ut0byte.cc which only mattered when
    UNIV_NONINL was defined.

    RB: 12470
    Reviewed-by: Jimmy Yang <[email protected]>

[36]:

commit 644aafd
Author: Sunny Bains <[email protected]>
Date:   Tue May 24 19:02:55 2016 +0530

    WL#9359 - Code cleanup

[37]:

commit 59b560e
Author: Sunny Bains <[email protected]>
Date:   Tue Feb 6 22:00:10 2018 +1100

    Bug#27496251 REMOVE /*====*/ AND CHANGE /****/ /***/ TO /** .... */
  • Loading branch information
laurynas-biveinis committed Aug 8, 2018
2 parents 4f1d7cf + 333b450 commit 4ad1d0c
Show file tree
Hide file tree
Showing 5,042 changed files with 2,412,203 additions and 12,936 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
*.sbr
*.so
*.so.*
*.spec
*.user
*.vcproj
*.vcproj.cmake
Expand Down Expand Up @@ -564,7 +563,6 @@ include/abi_check
include/check_abi
include/link_sources
include/my_config.h
include/my_global.h
include/mysql_h.ic
include/mysql_version.h
include/mysqld_ername.h
Expand Down Expand Up @@ -2716,6 +2714,9 @@ storage/perfschema/pfs_lex_token.h
storage/perfschema/gen_pfs_lex_token
sql/share/bulgarian
storage/ndb/test/dox
/GPATH
/GRTAGS
/GTAGS
sql/lex_token.h
sql/gen_lex_token
internal/plugin/thread_pool/src/thread_pool_config.h
Expand Down
15 changes: 15 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[submodule "PerconaFT"]
path = storage/tokudb/PerconaFT
url = https://github.com/percona/PerconaFT.git
[submodule "Percona-TokuBackup"]
path = plugin/tokudb-backup-plugin/Percona-TokuBackup
url = https://github.com/percona/Percona-TokuBackup.git
[submodule "storage/rocksdb/rocksdb"]
path = storage/rocksdb/rocksdb
url = https://github.com/facebook/rocksdb.git
[submodule "storage/rocksdb/third_party/lz4"]
path = storage/rocksdb/third_party/lz4
url = https://github.com/lz4/lz4
[submodule "storage/rocksdb/third_party/zstd"]
path = storage/rocksdb/third_party/zstd
url = https://github.com/facebook/zstd
286 changes: 286 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
# Ubuntu 14.04
dist: trusty
sudo: required
language: cpp

cache:
ccache: true
timeout: 600
directories:
- $TRAVIS_BUILD_DIR/deps # cache Boost libraries

env:
global:
- PARENT_BRANCH=8.0
- CCACHE_DIR=$HOME/.ccache
- CCACHE_COMPRESS=1
- CCACHE_COMPRESSLEVEL=9
- CCACHE_MAXSIZE=500Mi
- CCACHE_CPP2=1

matrix:
include:
# Common
- env: COMMAND=clang-test
script:
- wget https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py
- chmod a+x clang-format-diff.py
- git diff -U0 --no-color HEAD^1 | ./clang-format-diff.py -style=file -p1 >_GIT_DIFF
- '[ ! -s _GIT_DIFF ] && { echo The last git commit is clang-formatted; travis_terminate 0; } || { cat _GIT_DIFF; travis_terminate 1; }'


# Configurations for developers' forks and after merging a pull request for percona/percona-server
# 1
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: BUILD=Debug
compiler: clang
os: osx
osx_image: xcode9.3
# 2
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=6.0 BUILD=RelWithDebInfo
compiler: clang
# 3
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=5.0 BUILD=Debug
compiler: clang
# 4
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=4.0 BUILD=Debug
compiler: clang
# 5
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=8 BUILD=Debug
compiler: gcc
# 6
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=7 BUILD=Debug
compiler: gcc
# 7
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=6 BUILD=Debug
compiler: gcc
# 8
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=5 BUILD=Debug
compiler: gcc
# 9
- if: repo != percona/percona-server OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=4.8 BUILD=Debug
compiler: gcc


# Configurations for a pull request and after merging for percona/percona-server
# 1
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: BUILD=RelWithDebInfo
compiler: clang
os: osx
osx_image: xcode9.3
# 2
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=6.0 BUILD=Debug
compiler: clang
# 3
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=5.0 BUILD=RelWithDebInfo
compiler: clang
# 4
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=4.0 BUILD=RelWithDebInfo
compiler: clang
# 5
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=8 BUILD=RelWithDebInfo
compiler: gcc
# 6
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=7 BUILD=RelWithDebInfo
compiler: gcc
# 7
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=6 BUILD=RelWithDebInfo
compiler: gcc
# 8
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=5 BUILD=RelWithDebInfo
compiler: gcc
# 9
- if: branch =~ fullci OR repo = percona/percona-server AND type IN (push, pull_request, cron)
env: VERSION=4.8 BUILD=RelWithDebInfo
compiler: gcc


# Configurations to be run after merging a pull request for percona/percona-server
# 1
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=6.0 BUILD=RelWithDebInfo INVERTED=ON
compiler: clang
# 2
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=5.0 BUILD=RelWithDebInfo INVERTED=ON
compiler: clang
# 3
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=4.0 BUILD=RelWithDebInfo INVERTED=ON
compiler: clang
# 4
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=8 BUILD=RelWithDebInfo INVERTED=ON
compiler: gcc
# 5
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=7 BUILD=RelWithDebInfo INVERTED=ON
compiler: gcc
# 6
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=6 BUILD=RelWithDebInfo INVERTED=ON
compiler: gcc
# 7
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=5 BUILD=RelWithDebInfo INVERTED=ON
compiler: gcc
#8
- if: branch =~ extraci OR repo = percona/percona-server AND type IN (push, cron)
env: VERSION=4.8 BUILD=RelWithDebInfo INVERTED=ON
compiler: gcc


script:
- JOB_NUMBER=$(echo $TRAVIS_JOB_NUMBER | sed -e 's:[0-9][0-9]*\.\(.*\):\1:');
echo --- JOB_NUMBER=$JOB_NUMBER TRAVIS_COMMIT=$TRAVIS_COMMIT TRAVIS_COMMIT_RANGE=$TRAVIS_COMMIT_RANGE TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG TRAVIS_BRANCH=$TRAVIS_BRANCH TRAVIS_EVENT_TYPE=$TRAVIS_EVENT_TYPE TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH

- echo --- Perform all Travis jobs or only jobs that are included in ENV_VAR_JOB_NUMBERS list if it is defined;
JOB_NUMBERS="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24";
if [[ "$ENV_VAR_JOB_NUMBERS" != "" ]]; then
JOB_NUMBERS=$ENV_VAR_JOB_NUMBERS;
fi;
JOB_ARRAY=(${JOB_NUMBERS// / });
if [[ ! " ${JOB_ARRAY[@]} " =~ " ${JOB_NUMBER} " ]]; then
echo --- Finishing as job ${JOB_NUMBER} is not on a list = $JOB_NUMBERS;
travis_terminate 0;
fi;

# For the trunk use TRAVIS_COMMIT_RANGE but "Auto cancel branch builds" has to be turned off at https://travis-ci.org/percona/percona-server/settings
# For pull requests and feature branches replace TRAVIS_COMMIT_RANGE with the range from the root to the tip of the branch
- if [[ "$TRAVIS_EVENT_TYPE" == "pull_request" ]] || [[ "$TRAVIS_REPO_SLUG" != "percona/percona-server" ]]; then
if [[ "$TRAVIS_EVENT_TYPE" == "pull_request" ]]; then TRAVIS_COMMIT=$TRAVIS_COMMIT^2; fi;
git fetch https://github.com/percona/percona-server.git $PARENT_BRANCH:master_repo_$PARENT_BRANCH;
PARENT_COMMIT=$(git rev-list --first-parent --topo-order $TRAVIS_COMMIT ^master_repo_$PARENT_BRANCH | tail -1);
TRAVIS_COMMIT_RANGE=$PARENT_COMMIT^..$TRAVIS_COMMIT;
fi;
if MODIFIED_FILES=$(git diff --name-only $TRAVIS_COMMIT_RANGE 2>/dev/null); then
echo -e "--- Modified files in $TRAVIS_COMMIT_RANGE:\n$MODIFIED_FILES";
if ! echo "$MODIFIED_FILES" | grep -qvE '^(doc|build-ps|mysql-test|packaging|policy|scripts|support-files)/'; then
echo "--- There are no code changes, stopping build process.";
travis_terminate 0;
else
echo "--- Code changes were found";
fi;
else
echo "--- Can't prepare MODIFIED_FILES for $TRAVIS_COMMIT_RANGE";
fi;

- echo --- Configure required LLVM and Ubuntu Toolchain repositories;
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CC" == "clang" ]]; then
PACKAGES="llvm-$VERSION-dev $PACKAGES";
curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -;
echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-$VERSION main" | sudo tee -a /etc/apt/sources.list > /dev/null;
sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test";
fi;
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CC" == "gcc" ]]; then
sudo -E apt-add-repository -y "ppa:jonathonf/gcc";
fi;
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
sudo -E apt-add-repository -y "ppa:jonathonf/mysql";
fi;

- echo --- Update list of packages and download dependencies;
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
CC=$CC-$VERSION;
CXX=$CXX-$VERSION;
sudo -E apt-get -yq update >> ~/apt-get-update.log 2>&1;
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install $CXX $PACKAGES cmake cmake-curses-gui bison libncurses5-dev libaio-dev libssl-dev libevent-dev libmecab-dev libprotobuf-dev protobuf-compiler liblz4-dev libnuma-dev || travis_terminate 1;
sudo ln -s $(which ccache) /usr/lib/ccache/$CC;
sudo ln -s $(which ccache) /usr/lib/ccache/$CXX || echo;
else
brew update;
brew install ccache protobuf;
brew link ccache;
export PATH="/usr/local/opt/ccache/libexec:$PATH";
fi

- mkdir bin; cd bin;
- $CC -v
- $CXX -v
- ccache --version
- ccache --print-config;
ccache --zero-stats;

- echo --- Set cmake parameters;
CMAKE_OPT="
-DCMAKE_BUILD_TYPE=$BUILD
-DBUILD_CONFIG=mysql_release
-DFEATURE_SET=community
-DENABLE_DOWNLOADS=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=../deps
-DWITH_KEYRING_VAULT=ON
-DWITH_PAM=ON
";
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
CMAKE_OPT+="
-DMYSQL_MAINTAINER_MODE=ON
-DWITH_MECAB=system
";
if [[ "$INVERTED" == "ON" ]]; then
CMAKE_OPT+=" -DWITH_NUMA=OFF";
else
CMAKE_OPT+=" -DWITH_NUMA=ON";
fi;
`# disable RocksDB for gcc-8 until MyRocks is warning-free`;
if [[ "$CC" == "gcc-8" ]]; then NOT_GCC_8=0; else NOT_GCC_8=1; fi;
if [[ "$TRAVIS_REPO_SLUG" == "percona/percona-server" ]]; then
CMAKE_OPT+=" -DWITH_TOKUDB=ON -DWITH_ROCKSDB=$NOT_GCC_8";
else
`# disable TokuDB or RocksDB as developers' forks must fit in the 50 min time limit`;
if [[ "$BUILD" == "Debug" ]] && [[ "$CC" == "clang-$VERSION" ]]; then
CMAKE_OPT+=" -DWITH_TOKUDB=OFF -DWITH_ROCKSDB=$NOT_GCC_8";
else
CMAKE_OPT+=" -DWITH_TOKUDB=ON -DWITH_ROCKSDB=OFF";
fi;
fi;
else
CMAKE_OPT+="
-DMYSQL_MAINTAINER_MODE=OFF
-DWITH_PROTOBUF=system
-DWITH_TOKUDB=OFF
-DWITH_ROCKSDB=OFF
";
fi;
if [[ "$INVERTED" == "ON" ]]; then
CMAKE_OPT+="
-DWITH_EDITLINE=bundled
-DWITH_LIBEVENT=system
-DWITH_LZ4=system
-DWITH_PROTOBUF=system
-DWITH_SSL=system
-DWITH_ZLIB=bundled
-DWITH_ARCHIVE_STORAGE_ENGINE=OFF
-DWITH_BLACKHOLE_STORAGE_ENGINE=OFF
-DWITH_EXAMPLE_STORAGE_ENGINE=ON
-DWITH_FEDERATED_STORAGE_ENGINE=OFF
-DWITHOUT_PARTITION_STORAGE_ENGINE=ON
-DWITHOUT_PERFSCHEMA_STORAGE_ENGINE=ON
";
fi;
- echo --- Perform Debug or RelWithDebInfo compilation;
echo --- CMAKE_OPT=\"$CMAKE_OPT\";
echo --- ENV_VAR_CMAKE_OPT=\"$ENV_VAR_CMAKE_OPT\";
cmake ..
$CMAKE_OPT
$ENV_VAR_CMAKE_OPT
- make -j2 || travis_terminate 1
- ccache --show-stats
Loading

0 comments on commit 4ad1d0c

Please sign in to comment.