1. 02 Apr, 2022 1 commit
  2. 01 Apr, 2022 2 commits
  3. 31 Mar, 2022 1 commit
    • Nayuta Yanagisawa's avatar
      MDEV-28005 Deprecate Spider plugin variables regarding UDFs · f78fdf08
      Nayuta Yanagisawa authored
      Configuring UDFs via plugin variables looks not a good idea.
      The more variables Spider has, the more complex it becomes.
      Further, I expect that only a few users use Spider UDFs.
      
      Deprecate the following plugin variables regarding Spider UDFs:
      
      * spider_udf_ds_bulk_insert_rows
      * spider_udf_ds_table_loop_mode
      * spider_udf_ds_use_real_table
      * spider_udf_ct_bulk_insert_interval
      * spider_udf_ct_bulk_insert_rows
      
      spider_udf_table_lock_mutex_count and spider_udf_table_mon_mutex_count
      are also for tweaking UDFs but they are already read-only. So,
      there is no need to deprecate them.
      f78fdf08
  4. 30 Mar, 2022 1 commit
  5. 29 Mar, 2022 12 commits
  6. 28 Mar, 2022 10 commits
    • mkaruza's avatar
      MDEV-25912 wsrep does not identify checksummed events correctly · 97f237e6
      mkaruza authored
      For GTID consistenty, GTID events was artificialy added before
      replication happned. This event should not contain CHECKSUM calculated.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      97f237e6
    • Vladislav Vaintroub's avatar
      MDEV-28178 Windows : sporadic ER_ERROR_ON_RENAME .. (errno: 13 "Permission denied") · 739002ee
      Vladislav Vaintroub authored
      On affected machine, the error happens sporadically in
      innodb.instant_alter_limit.
      
      Procmon shows SetRenameInformationFile failing with ERROR_ACCESS_DENIED.
      In this case, the destination file was previously opened rsp oplocked by
      Windows defender antivirus.
      
      The fix is to retry MoveFileEx on ERROR_ACCESS_DENIED.
      739002ee
    • Marko Mäkelä's avatar
      MDEV-27931: buf_page_is_corrupted() wrongly claims corruption · 303448bc
      Marko Mäkelä authored
      In commit 437da7bc (MDEV-19534),
      the default value of the global variable srv_checksum_algorithm
      in innochecksum was changed from SRV_CHECKSUM_ALGORITHM_INNODB
      to implied 0 (innodb_checksum_algorithm=crc32). As a result,
      the function buf_page_is_corrupted() would by default invoke
      buf_calc_page_crc32() in innochecksum, and crc32_inited would hold.
      
      This would cause "innochecksum" to fail on a particular page.
      
      The actual problem is older, introduced in 2011 in
      mysql/mysql-server@17e497bdb793bc6b8360aa1c626dcd8bb5cfad1b
      (MySQL 5.6.3). It should affect the validation of pages of old
      data files that were written with innodb_checksum_algorithm=innodb.
      When using innodb_checksum_algorithm=crc32 (the default setting
      since MariaDB Server 10.2), some valid pages would be rejected
      only because exactly one of the two checksum fields accidentally
      matches the innodb_checksum_algorithm=crc32 value.
      
      buf_page_is_corrupted(): Simplify the logic of non-strict
      checksum validation, by always invoking buf_calc_page_crc32().
      Remove a bogus condition that if only one of the checksum fields
      contains the value returned by buf_calc_page_crc32(), the page
      is corrupted.
      303448bc
    • Marko Mäkelä's avatar
      MDEV-28181 The innochecksum -w option was inadvertently removed · b2fa874e
      Marko Mäkelä authored
      In commit 7a4fbb55 (MDEV-25105)
      the innochecksum option --write (-w) was removed altogether.
      It should have been made a Boolean option, so that old data files
      may be converted to a format that is compatible with
      innodb_checksum_algorithm=strict_crc32 by executing the following:
      
      innochecksum -n -w ibdata* */*.ibd
      
      It would be better to use an older-version innochecksum
      for such a conversion, so that page checksums will be validated
      before updating the checksum.
      
      It never was possible for innochecksum to convert files to the
      innodb_checksum_algorithm=full_crc32 format that is the default
      for new InnoDB data files.
      b2fa874e
    • Marko Mäkelä's avatar
      MDEV-27234: Data dictionary recovery was not READ COMMITTED · 8f8ba758
      Marko Mäkelä authored
      This also fixes MDEV-20198: Instant ALTER TABLE is not crash safe
      
      InnoDB dictionary recovery wrongly used the READ UNCOMMITTED isolation
      level, causing some mismatch. For example, if a table was renamed or
      replaced in a transaction, according to READ UNCOMMITTED the table might
      not exist at all.
      
      We implement READ COMMITTED isolation level for accessing the dictionary
      tables SYS_TABLES, SYS_COLUMNS, SYS_INDEXES, SYS_FIELDS, SYS_VIRTUAL,
      SYS_FOREIGN, SYS_FOREIGN_COLS. For most of these tables, no secondary
      index exists. For the secondary indexes (on SYS_TABLES.ID,
      SYS_FOREIGN.FOR_NAME, SYS_FOREIGN.REF_NAME), we will always look up
      the primary key in the clustered index and check if the record actually
      is a committed version.
      
      dict_check_sys_tables(): Recover tablespaces also from delete-marked
      committed records, so that if a matching .ibd file exists, it will
      be removed by fil_delete_tablespace() when the committed delete-marked
      SYS_INDEXES record of the clustered index is purged
      in row_purge_remove_clust_if_poss_low().
      
      fil_ibd_open(): Change the Boolean parameter "validate" to a ternary
      one, to suppress error messages when the file might not exist.
      It is possible that a .ibd file was deleted and the server shut down
      before the SYS_INDEXES and SYS_TABLES records were purged. Hence, if
      dict_check_sys_tables() finds a committed delete-marked record,
      we must not complain if the tablespace file is not found.
      On Windows, we msut treat ERROR_PATH_NOT_FOUND (directory not found)
      in the same way as ERROR_FILE_NOT_FOUND. This fixes a few failures where
      a previous test successfully executed DROP DATABASE (and deleted all
      files and the directory), but a committed delete-marked SYS_TABLES
      record had not been purged before server restart.
      
      dict_getnext_system_low(): Do not filter out delete-marked records.
      
      dict_startscan_system(), dict_getnext_system(): Do filter out
      delete-marked records, for accessing the INFORMATION_SCHEMA tables.
      
      dict_sys_tables_rec_read(): Return the DB_TRX_ID of the committed
      version of the record. This is needed in dict_load_table_low().
      
      dict_load_foreign_cols(), dict_load_foreign(): Add a parameter for
      the current transaction identifier. In some DDL operations, the
      FOREIGN KEY constraints are being loaded from the data dictionary
      before the DDL transaction has been committed. For SYS_FOREIGN
      and SYS_FOREIGN_COLS, we must implement the special case of
      READ COMMITTED that the changes of the uncommitted current transaction
      are visible.
      
      dict_load_foreign(): Validate the table name. We could find a
      SYS_FOREIGN.ID via a committed delete-marked secondary index record
      that does not match the REF_NAME or FOR_NAME of the secondary index record.
      
      dict_load_index_low(): Optionally take the table as a parameter,
      so that table->def_trx_id can be updated in case of a
      committed delete-marked SYS_INDEXES record corresponding
      to DROP INDEX, but not corresponding to an index stub of ADD INDEX.
      
      dict_load_indexes(): Do not update table->def_trx_id
      in case of delete-marked records.
      
      rec_is_metadata(), rec_offs_make_valid(), rec_get_offsets_func(),
      row_build_low(): Relax some assertions. We may now have
      !index->is_instant() even if a metadata record is present in the index.
      Previously, the recovery of instant ADD/DROP COLUMN assumed
      that READ UNCOMMITTED of the data dictionary will be performed.
      Now, we will have a READ COMMITTED copy of the data dictionary
      cache, and a READ UNCOMMITTED copy of the metadata record.
      
      btr_page_reorganize_low(): Correctly update the FIL_PAGE_TYPE
      when rolling back an instant ADD/DROP COLUMN operation.
      
      row_rec_to_index_entry_impl(): Relax some assertions,
      and disallow accessing "extra" fields. This fixes the recovery
      of a crash during an instant ADD COLUMN after a successful
      instant DROP COLUMN, in the test innodb.instant_alter_crash.
      
      Tested by: Matthias Leich
      8f8ba758
    • Marko Mäkelä's avatar
      2ab94108
    • Marko Mäkelä's avatar
      Fix main.create_or_replace better · a6dbb6b2
      Marko Mäkelä authored
      InnoDB background statistics recalculation may acquire
      a metadata also on the table itself, not only on the tables
      that store the statistics.
      
      Hence, it is better to disable InnoDB persistent statistics altogether.
      This fixes up commit 9b8d9a1d.
      a6dbb6b2
    • Daniel Black's avatar
      deb: merge fix - remove debian/mariadb-plugin-columnstore.* · 2885fb0e
      Daniel Black authored
      Was accidently included in ec62f46a.
      
      The autobake-deb.sh populates these files when needed.
      2885fb0e
    • hongdongjian's avatar
      MDEV-28177: server_audit; Update the offset of dbName on the aarch64 platform. · 7af133cc
      hongdongjian authored
      On the aarch64 platform, MySQL 5.7.33 cannot install this version of the audit
      plugin, but X86_64 can run well。
      7af133cc
    • Otto Kekäläinen's avatar
      Deb: Fix Salsa-CI autopkgtest failure · 9d6d1221
      Otto Kekäläinen authored
      The autopkgtest was failing due to missing *.changes file. This is part
      of source build, so revert autobake-deb.sh back to NOT using -b for
      Gitlab-CI/Salsa-CI runs.
      9d6d1221
  7. 25 Mar, 2022 13 commits