1. 07 Oct, 2019 1 commit
  2. 05 Oct, 2019 1 commit
  3. 04 Oct, 2019 5 commits
  4. 03 Oct, 2019 4 commits
  5. 02 Oct, 2019 2 commits
  6. 01 Oct, 2019 13 commits
  7. 30 Sep, 2019 8 commits
    • Robert Bindar's avatar
      MDEV-20647 Fix and enable SphinxSE tests · 576a5f09
      Robert Bindar authored
      576a5f09
    • Aleksey Midenkov's avatar
      SQL: override qualifier for Type_handler_int_result · 4cd79588
      Aleksey Midenkov authored
      Fixes -Winconsistent-missing-override in
      MDEV-16144 Default TIMESTAMP clause for SELECT from versioned
      4cd79588
    • Alexey Botchkov's avatar
      MDEV-19628 JSON with starting double quotes key is not valid. · 6c2724fc
      Alexey Botchkov authored
      Make the skip_key a bit faster.
      6c2724fc
    • Aleksey Midenkov's avatar
      SQL: followup misc rename on versioning · 19b5b177
      Aleksey Midenkov authored
      vers_sys_type_t -> vers_kind_t
      19b5b177
    • Aleksey Midenkov's avatar
      MDEV-16144 Default TIMESTAMP clause for SELECT from versioned · 58fdf5b2
      Aleksey Midenkov authored
      1. Removed TIMESTAMP/TRANSACTION unit auto-detection in favor of default TIMESTAMP.
      
      Reasons:
      
      1.1. rare practical use and doubtful advantage of such auto-detection;
      1.2. it conflicts with MDEV-16226 (TRX_ID-based versioned tables performance improvement).
      
      Needless check_unit membership removed.
      
      2. SQL: versioning type handling refactoring
      
      Vers_type_handler hierarchy stores versioning properties of type.
      
      virtual Type_handler::vers() accesses specialization of
      Vers_type_handler for specific type.
      
      virtual Vers_type_handler::kind() returns versioning kind
      (timestamp/trx_id).
      
      Removed Type_handler::Vers_history_point_check_unit() in favor of
      Type_handler::vers().
      
      Renames:
      
      require_timestamp() -> require_timestamp_error()
      require_trx_id() -> require_trx_id_error()
      
      EDIT by Alexander Barkov (@abarkov):
      
      check_sys_fields() moved to Vers_type_handler::check_sys_fields()
      58fdf5b2
    • Alexey Botchkov's avatar
      MDEV-19628 JSON with starting double quotes key is not valid. · 6ac2a355
      Alexey Botchkov authored
      First character of the key name is just skipped, so the escapement
      wasn't handled properly.
      6ac2a355
    • Marko Mäkelä's avatar
      Fix -Wunused for CMAKE_BUILD_TYPE=RelWithDebInfo · 46b78526
      Marko Mäkelä authored
      For release builds, do not declare unused variables.
      
      unpack_row(): Omit a debug-only variable from WSREP diagnostic message.
      
      create_wsrep_THD(): Fix -Wmaybe-uninitialized for the PSI_thread_key.
      46b78526
    • Sujatha's avatar
      MDEV-20645: Replication consistency is broken as workers miss the error... · 9b80f930
      Sujatha authored
      MDEV-20645: Replication consistency is broken as workers miss the error notification from an earlier failed group.
      
      Analysis:
      ========
      In general if there are three groups.
      1 - Inserts 32 which fails due to local entry '32' on slave.
      2 - Inserts 33
      3 - Inserts 34
      
      Each group considers itself as a waiter and it waits for prior group 'waitee'.
      This is done in 'register_wait_for_prior_event_group_commit'. If there is no
      other parallel group being scheduled then no waitee will be there.
      
      Let us assume 3 groups are being scheduled in parallel.
      
      3-> waits for 2-> waits for->1
      
      '1' upon completion it checks is there any registered subsequent waiter. If
      so it wakes up the subsequent waiter with its execution status. This execution
      status is stored in wakeup_error.
      
      If '1' failed then it sends corresponding wakeup_error to 2. Then '2' aborts
      and it propagates error to '3'.  So all further commits are aborted.  This
      mechanism works only when all transactions reach a stage where they are
      waiting for their prior commit to complete.
      
      In case of optimistic following scenario occurs.
      
      1,2,3 are scheduled in parallel.
      
      3 - Reaches group_commit_code waits for 2 to complete.
      1 - errors out sets stop_on_error_sub_id=1.
      
      When a group execution results in error its corresponding sub_id is set to
      'stop_on_error_sub_id'. Any new groups queued for execution will check if
      their sub_id is > stop_on_error_sub_id.  If it is true their execution will be
      skipped as prior group execution failed.  'skip_event_group=1' will be set.
      Since the execution of SQL thread is about to stop we just skip execution of
      all the following event groups.  We still do all the normal waiting and wakeup
      processing between the event groups as a simple way to ensure that everything
      is stopped and cleaned up correctly.
      
      Upon error '1' transaction checks for registered waiters. Since no one is
      there it simply goes away.
      
      2 - Starts the execution. It checks do I have a waitee.
      
      Since wait_commit_sub_id == entry->last_committed_sub_id no waitee is set.
      
      Secondly: 'entry->stop_on_error_sub_id' is set by '1'st execution.  Now
      'handle_parallel_thread' code checks if the current group 'sub_id' is greater
      than the 'sub_id' set within 'stop_on_error_sub_id'.
      
      Since the above is true 'skip_event_group=true' is set.  Simply call
      'wait_for_prior_commit' to wakeup all waiters.  Group '2' didn't had any
      waitee and its execution is skipped.  Hence its wakeup_error=0.It sends a
      positive wakeup signal to '3'. Which commits. This results in a missed
      transaction. i.e 33 is missed and 34 is committed.
      
      Fix:
      ===
      When a worker learns that an earlier transaction execution has failed, and it
      should not proceed for further execution, it should mark its own execution
      status as failed so that it alerts its followers to abort as well.
      9b80f930
  8. 29 Sep, 2019 1 commit
  9. 28 Sep, 2019 5 commits