1. 03 Jun, 2020 1 commit
  2. 02 Jun, 2020 4 commits
  3. 01 Jun, 2020 7 commits
  4. 31 May, 2020 1 commit
  5. 30 May, 2020 2 commits
  6. 29 May, 2020 16 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · e9aaa10c
      Marko Mäkelä authored
      e9aaa10c
    • Sergey Vojtovich's avatar
      Attempt fixing mroonga gcc 8 build failure · 49854811
      Sergey Vojtovich authored
      Part of MDEV-19061 - table_share used for reading statistical tables is
                           not protected
      49854811
    • Sergey Vojtovich's avatar
      Thread safe histograms loading · c2798784
      Sergey Vojtovich authored
      Previously multiple threads were allowed to load histograms concurrently.
      There were no known problems caused by this. But given amount of data
      races in this code, it'd happen sooner or later.
      
      To avoid scalability bottleneck, histograms loading is protected by
      per-TABLE_SHARE atomic variable.
      
      Whenever histograms were loaded by preceding statement (hot-path), a
      scalable load-acquire check is performed.
      
      Whenever histograms have to be loaded anew, mutual exclusion for loaders
      is established by atomic variable. If histograms are being loaded
      concurrently, statement waits until load is completed.
      
      - Table_statistics::total_hist_size moved to TABLE_STATISTICS_CB: only
        meaningful within TABLE_SHARE (not used for collected stats).
      - TABLE_STATISTICS_CB::histograms_can_be_read and
        TABLE_STATISTICS_CB::histograms_are_read are replaced with a tri state
        atomic variable.
      - Simplified away alloc_histograms_for_table_share().
      
      Note: there's still likely a data race if a thread attempts accessing
      histograms data after it failed to load it (because of concurrent load).
      It was there previously and goes out of the scope of this effort. One way
      of fixing it could be reviving TABLE::histograms_are_read and adding
      appropriate checks whenever it is needed.
      
      Part of MDEV-19061 - table_share used for reading statistical tables is
                           not protected
      c2798784
    • Sergey Vojtovich's avatar
      Thread safe statistics loading · 609a0d3d
      Sergey Vojtovich authored
      Previously multiple threads were allowed to load statistics concurrently.
      There were no known problems caused by this. But given amount of data
      races in this code, it'd happen sooner or later.
      
      To avoid scalability bottleneck, statistics loading is protected by
      per-TABLE_SHARE atomic variable.
      
      Whenever statistics were loaded by preceding statement (hot-path), a
      scalable load-acquire check is performed.
      
      Whenever statistics have to be loaded anew, mutual exclusion for loaders
      is established by atomic variable. If statistics are being loaded
      concurrently, statement waits until load is completed.
      
      TABLE_STATISTICS_CB::stats_can_be_read and
      TABLE_STATISTICS_CB::stats_is_read are replaced with a tri state atomic
      variable.
      
      Part of MDEV-19061 - table_share used for reading statistical tables is
                           not protected
      609a0d3d
    • Sergey Vojtovich's avatar
      Simplified away statistics_for_tables_is_needed() · 1055a7f4
      Sergey Vojtovich authored
      Removed redundant loops, integrated logics into the caller instead.
      Unified condition in read_statistics_for_tables(), less
      "table_share != NULL" checks, no more potential "table_share == NULL"
      dereferencing.
      
      Part of MDEV-19061 - table_share used for reading statistical tables is
                           not protected
      1055a7f4
    • Aleksey Midenkov's avatar
      MDEV-22283 Server crashes in key_copy or unexpected error 156 · 4783494a
      Aleksey Midenkov authored
      (The table already existed in the storage engine)
      
      Wrong algorithm of closing partitions on error doesn't close last
      partition.
      4783494a
    • Kentoku SHIBA's avatar
    • Kentoku SHIBA's avatar
    • Alexander Barkov's avatar
      MDEV-22744 *SAN: sql/item_xmlfunc.cc:791:43: runtime error: downcast of... · a2932e86
      Alexander Barkov authored
      MDEV-22744 *SAN: sql/item_xmlfunc.cc:791:43: runtime error: downcast of address ... which does not point to an object of type 'Item_func' note: object is of type 'Item_bool' (on optimized builds)
      
      In Item_nodeset_func_predicate::val_nodeset, args[1] is not necessarily
      an Item_func descendant. It can be Item_bool.
      
      Removing a wrong cast. It was not really needed anyway.
      a2932e86
    • Julius Goryavsky's avatar
      d74e3a56
    • Vladislav Vaintroub's avatar
    • Vladislav Vaintroub's avatar
      MDEV-22743 Windows 10 MSI installer : port in use is not determined · b00cd3e4
      Vladislav Vaintroub authored
      when checking for free port, use the same logic (IPv6 socket address
      / dual socket), like the server would.
      
      Previous solution for testing whether port is free was trying to bind
      IPv4 socket on INADDR_ANY.
      
      This not work now on some reason, that attempt succeeds, even if there is
      an existing IPv6-dual socket listening on 0.0.0.0:3306
      b00cd3e4
    • Vladislav Vaintroub's avatar
      MSI installer : Use CAQuietExec64 on Win64 , not CAQuietExec · ff72f369
      Vladislav Vaintroub authored
      It works, but irritates people who look into the log and see
      traces of 32bit custom action server.
      ff72f369
    • Vladislav Vaintroub's avatar
      Remove unused WiX source file · e2d7da49
      Vladislav Vaintroub authored
      e2d7da49
    • Marko Mäkelä's avatar
      MDEV-22456 after-merge fix: Avoid functional change to rw_lock_s_unlock() · 2fbf7514
      Marko Mäkelä authored
      In the merge 9e6e4355 we replaced
      direct use of std::atomic with a wrapper class, so that
      dict_index_t::lock will support the default assignment operator.
      
      As part of that change, one occurrence of std::memory_order_release
      was accidentally replaced with std::memory_order_relaxed.
      
      Thanks to Sergey Vojtovich for noticing this.
      2fbf7514
    • Aleksey Midenkov's avatar
      MDEV-16937 Strict SQL with system versioned tables causes issues (10.4) · 57f7b486
      Aleksey Midenkov authored
      Respect system fields in NO_ZERO_DATE mode.
      
      This is the subject for refactoring in MDEV-19597
      
      Conflict resolution from 7d5223310789f967106d86ce193ef31b315ecff0
      57f7b486
  7. 28 May, 2020 7 commits
    • Aleksey Midenkov's avatar
      MDEV-16937 Strict SQL with system versioned tables causes issues · 19da9a51
      Aleksey Midenkov authored
      Respect system fields in NO_ZERO_DATE mode.
      
      This is the subject for refactoring in MDEV-19597
      19da9a51
    • Aleksey Midenkov's avatar
      MDEV-22413 Server hangs upon UPDATE on a view reading from versioned partitioned table · dd9773b7
      Aleksey Midenkov authored
      UPDATE gets access to history records because versioning conditions
      are not set for VIEW. This leads to endless loop of inserting history
      records when clustered index is rebuilt and ha_rnd_next() returns
      newly inserted history record.
      
      Return back original behavior of failing on write-locked table in
      historical query.
      
      35b679b9 assumed that SELECT_LEX::lock_type influences anything, but
      actually at this point table is already locked. Original bug report
      was tempesta-tech/mariadb#102
      dd9773b7
    • Anel Husakovic's avatar
      fix pre-definition for embedded server for find_user_or_anon() · a1b3bebe
      Anel Husakovic authored
      Pre-definitions are allowed for non-embedded.
      Failur catched with:
      ```
      cmake ../../10.1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=g++-9
      -DCMAKE_C_COMPILER=gcc-9 -DWITH_EMBEDDED_SERVER=ON -DCMAKE_BUILD_TYPE=Debug
      -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,PERFSCHEMA,SPIDER,SPHINX}=N
      -DMYSQL_MAINTAINER_MODE=ON -DNOT_FOR_DISTRIBUTION=ON
      ```
      Alternative fix would be
      ```
      --- a/sql/sql_acl.cc
      +++ b/sql/sql_acl.cc
      @@ -201,8 +201,10 @@ LEX_STRING current_user= { C_STRING_WITH_LEN("*current_user") };
       LEX_STRING current_role= { C_STRING_WITH_LEN("*current_role") };
       LEX_STRING current_user_and_current_role= { C_STRING_WITH_LEN("*current_user_and_current_role") };
      
      +#ifndef EMBEDDED_LIBRARY
       class ACL_USER;
       static ACL_USER *find_user_or_anon(const char *host, const char *user, const char *ip);
      +#endif
      ```
      a1b3bebe
    • Aleksey Midenkov's avatar
      MDEV-18794 append_drop_column() small refactoring · 3e9b96b6
      Aleksey Midenkov authored
      Bogus if() logic inside the func.
      3e9b96b6
    • Aleksey Midenkov's avatar
      MDEV-18794 Assertion `!m_innodb' failed in ha_partition::cmp_ref upon SELECT from partitioned table · dac1280a
      Aleksey Midenkov authored
      System versioning assertion fix. Since DROP SYSTEM VERSIONING does not
      change list of dropped keys we should handle a special case.
      
      Caused by MDEV-19751. This fix deprecates MDEV-17091.
      dac1280a
    • Anel Husakovic's avatar
      MDEV-22312: Bad error message for SET DEFAULT ROLE when user account is not granted the role · 957cb7b7
      Anel Husakovic authored
      - `SET DEFAULT ROLE xxx [FOR yyy]` should say:
        "User yyy has not been granted a role xxx" if:
          - The current user (not the user `yyy` in the FOR clause) can see the
          role xxx. It can see the role if:
            * role exists in `mysql.roles_mappings` (traverse the graph),
            * If the current user has read access on `mysql.user` table - in
          that case, it can see all roles, granted or not.
          - Otherwise it should be "Invalid role specification".
      
      In other words, it should not be possible to use `SET DEFAULT ROLE` to discover whether a specific role exist or not.
      957cb7b7
    • Monty's avatar
      278facee
  8. 27 May, 2020 2 commits