1. 20 Sep, 2022 2 commits
  2. 19 Sep, 2022 8 commits
  3. 15 Sep, 2022 1 commit
  4. 14 Sep, 2022 9 commits
    • Sergei Golubchik's avatar
      MDEV-22647 Assertion `!check_audit_mask(mysql_global_audit_mask, event_class_mask)' · beffef9f
      Sergei Golubchik authored
      
      check_audit_mask(mysql_global_audit_mask, event_class_mask) is tested in
      mysql_audit_general_log() and then assert in mysql_audit_acquire_plugins()
      verifies that the condition still holds.
      But this code path is not protected by LOCK_audit_mask, so
      mysql_global_audit_mask can change its value between the if() and the
      assert. That is, the assert is invalid and will fire if the
      audit plugin is unloaded concurrently with mysql_audit_general_log().
      
      Nothing bad will happen in this case though, we'll just do a useless
      loop over all remaining installed audit plugins.
      
      That is, the fix is simply to remove the assert.
      beffef9f
    • Anel Husakovic's avatar
      Add missing comment and remove unnecessary initialization · b7928f75
      Anel Husakovic authored
      - Commit c8948b0d introduced `get_one_variable()` - updating missing argument.
      - Remove caller setting of empty string in `rpl_filter`, since underlying functions will do the same
        (commit 9584cbe7 introduced).
      
      Reviewed by: <brandon.nesterenko@mariadb.com>
      b7928f75
    • Vicențiu Ciorbaru's avatar
      MDEV-29509 execute granted indirectly (via roles) doesn't always work · 16b2bb90
      Vicențiu Ciorbaru authored
      The issue manifests due to a bug in mysql_routine_grant. This was a side
      effect of e46eea86 which fixed the problem of not giving appropriate error
      message (ER_NONEXISTING_PROC_GRANT) when a routine grant existed due to role
      inheritance.
      
      When granting a routine privilege, it is possible to have a GRANT_NAME
      entry already created from an inherited role, but with it's init_privs
      set to 0.
      
      In this case we must not create a *new* grant entry, but we must edit
      this grant entry to set its init_privs.
      
      Note that this case was already covered by MDEV-29458, however due to a
      forgotten "flush privileges;" the actual code path never got hit.
      Remove the flush privilege command as it was never intended to be there
      in the first place.
      16b2bb90
    • Vicențiu Ciorbaru's avatar
      5ad8cd93
    • Vicențiu Ciorbaru's avatar
      MDEV-29458: Role grant commands do not propagate all grants · 7735ba76
      Vicențiu Ciorbaru authored
      There was an issue in updating in-memory role datastructures when
      propagating role grants.
      
      The issue is that changing a particular role's privilege (on any
      privilege level, global, database, etc.)
      was done such that it overwrote the entire set of bits for that
      particular level of privileges.
      
      For example:
      grant select on *.* to r1 -> sets the access bits to r1 to select,
      regardless of what bits were present for role r1 (inherited from any
      other roles).
      
      Before this fix, the rights of role r1 were propagated to any roles r1
      was granted to, however the propagated rights did *not* include the
      complete rights r1 inherited from its own grants.
      
      For example:
        grant r2 to r1;
        grant select on *.* to r2;
        grant insert on *.* to r1; # This command completely disregards the
                                   # select privilege from r2.
      
      In order to correct this, ensure that before rights are propagated
      onwards, that the current's role rights have been updated from its
      grants.
      
      Additionally, the patch exposed a flaw in the DROP ROLE code.
      When deleting a role we removed all its previous grants, but what
      remained was the actual links of roles granted to the dropped role.
      Having these links present when propagating grants meant that we would
      have leftover ACL_xxx entries.
      
      Ensure that the links are removed before propagating grants.
      7735ba76
    • Vicențiu Ciorbaru's avatar
      MDEV-29465: Inherited columns privs for roles wrongly set mysql.tables_priv column · 145932a5
      Vicențiu Ciorbaru authored
      There was a bug in the ACL internal data structures GRANT_TABLE and
      GRANT_COLUMN. The semantics are: GRANT_TABLE::init_cols and
      GRANT_COLUMN::init_privs represent the bits that correspond to the
      privilege bits stored in the physical tables. The other struct members
      GRANT_TABLE::cols and GRANT_COLUMN::privs represent the actual access
      bits, as they may be modified through role grants.
      
      The error in logic was mixing the two fields and thus we ended up
      storing the logical access bits in the physical tables, instead of the
      physical (init_xxx) bits.
      
      This caused subsequent DBUG_ASSERT failures when dropping the involved
      roles.
      145932a5
    • Marko Mäkelä's avatar
      MDEV-18589 Assertion on info.page_size failed in xb_delta_open_matching_space · 3e3cfa89
      Marko Mäkelä authored
      xb_read_delta_metadata(): For ROW_FORMAT=COMPRESSED tables, initialize
      the info.zip_size with the physical page size and let info.page_size
      remain the logical page size, like xb_delta_open_matching_space()
      expects it to be ever since
      commit 0a1c3477 (MDEV-18493).
      3e3cfa89
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-29479 I_S.INNODB_SYS_TABLESPACES doesn't have temporary tablespace information · d7aefc0f
      Thirunarayanan Balathandayuthapani authored
      - innodb_sys_tablespaces view in information schema displays temporary
      tablespace information too.
      d7aefc0f
    • Alexander Barkov's avatar
      A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collation · 289105e2
      Alexander Barkov authored
      Recording test results according to MDEV-29446 changes:
      
        mysql-test/suite/galera/r/MDEV-25494.result
        mysql-test/suite/galera/r/galera_ctas.result
        mysql-test/suite/galera/r/galera_schema.result
        mysql-test/suite/galera_3nodes/r/galera_wsrep_schema.result
        mysql-test/suite/galera_sr/r/galera_sr_create_drop.result
      289105e2
  5. 13 Sep, 2022 6 commits
  6. 12 Sep, 2022 2 commits
  7. 08 Sep, 2022 1 commit
  8. 07 Sep, 2022 3 commits
    • Tuukka Pasanen's avatar
      MDEV-28605: Change wrong plugin config installation location (#2160) · 04899d6d
      Tuukka Pasanen authored
      Preset include directory for configuration files below MariaDB 10.5 is
      /etc/mysql/conf.d
      
      Change installation location wrong plugin installation location from
      /etc/mysql/mariadb.d to default include directory /etc/mysql/conf.d.
      Change makes gssapi-server, oqgraph, rocksdb and tokudb plugins
      loading work after installation
      
      NOTE TO MERGERS: This commit should be upstream to MariaDB 10.4 only!
      Merging to MariaDB 10.5 and above leads to major problems.
      04899d6d
    • Vladislav Vaintroub's avatar
      MDEV-18353 - minor cleanup · 9a8faeea
      Vladislav Vaintroub authored
      Do not repeat yourself.
      
      Instead of having the same DBUG_EXECUTE_IF code in threadpool and
      thread-per-connection, add this code to setup_connection_thread_globals()
      which is executed in all scheduling modes.
      9a8faeea
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · c7ba2377
      Marko Mäkelä authored
      c7ba2377
  9. 06 Sep, 2022 1 commit
  10. 03 Sep, 2022 2 commits
    • Andrei's avatar
      MDEV-28827 Minor unsafe statement warning message improvement · f501f815
      Andrei authored
      The replication unsafe warning's pattern gets corrected in the
      punctuation part.
      f501f815
    • Brandon Nesterenko's avatar
      MDEV-28530: Revoking privileges from a non-existing user on a master breaks... · 47812017
      Brandon Nesterenko authored
      MDEV-28530: Revoking privileges from a non-existing user on a master breaks replication on the slave in the presence of replication filters
      
      Problem:
      ========
      Replication can break while applying a query log event if its
      respective command errors on the primary, but is ignored by the
      replication filter within Grant_tables on the replica. The bug
      reported by MDEV-28530 shows this with REVOKE ALL PRIVILEGES using a
      non-existent user. The primary will binlog the REVOKE command with
      an error code, and the replica will think the command executed with
      success because the replication filter will ignore the command while
      accessing the Grant_tables classes. When the replica performs an
      error check, it sees the difference between the error codes, and
      replication breaks.
      
      Solution:
      ========
      If the replication filter check done by Grant_tables logic ignores
      the tables, reset thd->slave_expected_error to 0 so that
      Query_log_event::do_apply_event() can be made aware that the
      underlying query was ignored when it compares errors.
      
      Note that this bug also effects DROP USER if not all users exist
      in the provided list, and the patch fixes and tests this case.
      
      Reviewed By:
      ============
      andrei.elkin@mariadb.com
      47812017
  11. 01 Sep, 2022 1 commit
    • Nayuta Yanagisawa's avatar
      MDEV-27172 Prefix indices on Spider tables may lead to wrong query results · e4cffc92
      Nayuta Yanagisawa authored
      Spider converts HA_READ_KEY_EXACT to the equality (=) in the
      function spider_db_append_key_where_internal() but the conversion
      is not necessarily correct for tables with prefix indices.
      
      We fix the bug by converting HA_READ_KEY_EXACT to 'LIKE "foo%"' when
      a target key is a prefix key. The fix is partly inspired by FEDERATED.
      See ha_federated::create_where_from_key() for more details.
      e4cffc92
  12. 31 Aug, 2022 4 commits