summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge 10.5 into 10.6Marko Mäkelä2022-09-201152-29546/+30607
|\
| * Merge 10.4 into 10.5Marko Mäkelä2022-09-2040-387/+942
| |\
| | * Merge 10.3 into 10.4Marko Mäkelä2022-09-2047-483/+992
| | |\
| | | * MDEV-29561 SHOW CREATE TABLE produces syntactically incorrect structureAlexander Barkov2022-09-208-20/+110
| | | |
| | | * MDEV-29426 Fix memory leak in CONNECT JSON/BSON (#2255)Andrew Hutchings2022-09-195-1/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * MDEV-29426 Fix memory leak in CONNECT JSON/BSON If information is being gathered on JSON/BSON tables we leak the heap allocated to the table class. With this fix we close and cleanup instead, just as we do for XML tables.
| | | * Fix clang -Wunused-but-set-variableMarko Mäkelä2022-09-191-12/+6
| | | |
| | | * Merge innodb.cmake to CMakeLists.txtMarko Mäkelä2022-09-192-203/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason why mysql/mysql-server@8020cfac20c55a870a874446870d5e90bdc181ed split the files was some unit tests that never existed in the MariaDB Server code base. The storage/innobase/unittest/ works just fine with this file. This is reverting part of 2e814d4702d71a04388386a9f591d14a35980bfe which applied InnoDB changes from MySQL 5.7.9.
| | | * Cleanup: Remove HAVE_IB_LINUX_FUTEXMarko Mäkelä2022-09-193-47/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The futex system calls were introduced in Linux 2.6.0, which was released in December 2003. It should be safe to assume that the system calls are always available on the Linux kernels that MariaDB Server 10.3 would run on.
| | | * Cleanup: Remove INNODB_COMPILER_HINTSMarko Mäkelä2022-09-192-18/+5
| | | | | | | | | | | | | | | | There should be no point to disable branch prediction hints or prefetch.
| | | * InnoDB cleanup: Replace UNIV_LINUX, UNIV_SOLARIS, UNIV_AIXMarko Mäkelä2022-09-199-45/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let us use the normal platform-specific preprocessor symbols __linux__, __sun__, _AIX instead of some homebrew ones. The preprocessor symbol UNIV_HPUX must have lost its meaning by f6deb00a56b2e87287d606aba3bcd71290d876ae (note: the symbol UNIV_HPUX10 is being checked for, but only UNIV_HPUX is defined).
| | | * Correct typos in a function commentMarko Mäkelä2022-09-191-3/+4
| | | | | | | | | | | | | | | | Thanks to Thirunarayanan Balathandayuthapani for spotting this.
| | | * MDEV-29543 Windows: Unreadable dlerror() message on localized OSVladislav Vaintroub2022-09-151-1/+1
| | | | | | | | | | | | | | | | | | | | Force using english for error messages (i.e ASCII) to avoid encoding mixup.
| | | * MDEV-22647 Assertion `!check_audit_mask(mysql_global_audit_mask, ↵Sergei Golubchik2022-09-141-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | event_class_mask)' 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.
| | | * Add missing comment and remove unnecessary initializationAnel Husakovic2022-09-142-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Commit c8948b0d0db4 introduced `get_one_variable()` - updating missing argument. - Remove caller setting of empty string in `rpl_filter`, since underlying functions will do the same (commit 9584cbe7fcc4 introduced). Reviewed by: <brandon.nesterenko@mariadb.com>
| | | * MDEV-29509 execute granted indirectly (via roles) doesn't always workVicențiu Ciorbaru2022-09-143-14/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The issue manifests due to a bug in mysql_routine_grant. This was a side effect of e46eea8660fb 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.
| | | * cleanup: indentation and whitespace fixesVicențiu Ciorbaru2022-09-141-12/+11
| | | |
| | | * MDEV-29458: Role grant commands do not propagate all grantsVicențiu Ciorbaru2022-09-144-95/+406
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | | * MDEV-29465: Inherited columns privs for roles wrongly set mysql.tables_priv ↵Vicențiu Ciorbaru2022-09-143-9/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | column 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.
| | | * MDEV-29479 I_S.INNODB_SYS_TABLESPACES doesn't have temporary tablespace ↵Thirunarayanan Balathandayuthapani2022-09-143-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | information - innodb_sys_tablespaces view in information schema displays temporary tablespace information too.
| | | * mysql_release: treat alma|rocky as centos|rhelSergei Golubchik2022-09-131-2/+2
| | | |
| * | | MDEV-29559 Recovery of INSERT_HEAP_DYNAMIC into secondary index failsMarko Mäkelä2022-09-193-44/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | log_phys_t::apply(): When parsing an INSERT_HEAP_DYNAMIC record, allow ll==rlen to hold for the last part. A secondary index record may inherit all preceding bytes from the infimum pseudo-record. For INSERT_HEAP_REDUNDANT, some header bytes will always be present because the header will never be copied from the page infimum. We will tolerate ll==rlen also in that case to be consistent with the parsing of INSERT_HEAP_DYNAMIC.
| * | | Merge 10.4 into 10.5Daniel Black2022-09-193-1/+46
| |\ \ \ | | |/ /
| | * | Update 10.4 HELP contentsIan Gilfillan2022-09-191-950/+1233
| | | |
| | * | MDEV-18589 Assertion on info.page_size failed in xb_delta_open_matching_spaceMarko Mäkelä2022-09-143-1/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 0a1c3477bf359c55be3e11ec6502bc7b5bb87f29 (MDEV-18493).
| * | | Update 10.5 HELP contentsIan Gilfillan2022-09-191-824/+1137
| | | |
| * | | A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-155-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recording test results according to MDEV-29446 changes: mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result mysql-test/suite/galera/r/galera_sync_wait_show.result mysql-test/suite/galera/r/lp1376747-4.result mysql-test/suite/s3/replication_partition.result mysql-test/suite/s3/replication_stmt.result
| * | | A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-1513-49/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recording test results according to MDEV-29446 changes: mysql-test/suite/galera/r/galera-features#117.result mysql-test/suite/galera/r/galera_can_run_toi.result mysql-test/suite/galera/r/wsrep_strict_ddl.result mysql-test/suite/s3/alter.result mysql-test/suite/s3/arguments.result mysql-test/suite/s3/basic.result mysql-test/suite/s3/encryption.result mysql-test/suite/s3/innodb.result mysql-test/suite/s3/mysqldump.result mysql-test/suite/s3/partition.result mysql-test/suite/s3/partition_move.result mysql-test/suite/s3/replication_delayed.result mysql-test/suite/s3/replication_mixed.result
| * | | race condition in the testSergei Golubchik2022-09-142-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this test loads sql_errlog plugin. then in a second connection it triggers an error, this locks the plugin in that thd. then the plugin is uninstalled in the default connection. but that doesn't unload the plugin, as it's still locked. it'll auto-unload after the foo connection is closed. without an explicit disconnect it is closed after mysqltest exits and the post-test check might still see sql_errlog not fully unoaded.
| * | | A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Recording test results according to MDEV-29446 changes: mysql-test/suite/maria/max_length.result
| * | | Merge remote-tracking branch 'origin/10.4' into 10.5Alexander Barkov2022-09-141188-48322/+48438
| |\ \ \ | | |/ /
| | * | A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-145-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * | Merge 10.3 into 10.4Marko Mäkelä2022-09-131127-48034/+48150
| | |\ \ | | | |/
| | | * MDEV-23801 Assertion failed in btr_pcur_store_position()Marko Mäkelä2022-09-133-2/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | btr_lift_page_up(): If the leaf page only contains a hidden metadata record for MDEV-11369 instant ADD COLUMN, convert the table to the canonical format like we are supposed to do whenever the table becomes empty.
| | | * A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Recording test results according to MDEV-29446 changes: storage/rocksdb/mysql-test/rocksdb/r/use_direct_io_for_flush_and_compaction.result
| | | * MDEV-29522 RocksDB RPM doesn't get built on Rocky Linux and AlmaSergei Golubchik2022-09-131-1/+1
| | | | | | | | | | | | | | | | use correct python on rocky8 and alma8
| | | * MDEV-29520 heap-use-after-poison in row_merge_spatial_rows()Marko Mäkelä2022-09-133-2/+28
| | | | | | | | | | | | | | | | | | | | row_merge_read_clustered_index(): Do not call mem_heap_empty(row_heap) before row_merge_spatial_rows() has been able to read the data.
| | | * MDEV-29446 Change SHOW CREATE TABLE to display default collationAlexander Barkov2022-09-121087-47957/+47936
| | | |
| | | * MDEV-29507 InnoDB: Failing assertion: table->n_rec_locks == 0Marko Mäkelä2022-09-123-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | lock_place_prdt_page_lock(): Do not place locks on temporary tables. Temporary tables can only be accessed from one connection, so it does not make any sense to acquire any transactional locks on them.
| | | * MDEV-29433 innodb.lock_delete_updated is unstableVlad Lesin2022-09-082-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use suspend thread syncpoint instead of include/wait_condition.inc to make sure DELETE created waiting lock before the next UPDATE begins locking. This is backport of commit 0fa4dd0747bb12479662952e7fe6ae2fffff737b from 10.6.
| | | * MDEV-28605: Change wrong plugin config installation location (#2160)Tuukka Pasanen2022-09-074-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | MDEV-15020 fixup: Make trx_t::apply_log() truly ATTRIBUTE_COLDMarko Mäkelä2022-09-202-4/+3
| | | |
* | | | MDEV-29515 innodb.deadlock_victim_race is unstableVlad Lesin2022-09-193-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test is unstable because 'UPDATE t SET b = 100' latches a page and waits for 'upd_cont' signal in lock_trx_handle_wait_enter sync point, then purge requests RW_X_LATCH on the same page, and then 'SELECT * FROM t WHERE a = 10 FOR UPDATE' requests RW_S_LATCH, waiting for RW_X_LATCH requested by purge. 'UPDATE t SET b = 100' can't release page latch as it waits for upd_cont signal, which must be emitted after 'SELECT * FROM t WHERE a = 10 FOR UPDATE' acquired RW_S_LATCH. So we have a deadlock, which is resolved by finishing the debug sync point wait by timeout, and the 'UPDATE t SET b = 100' releases it's record locks rolling back the transaction, and 'SELECT * FROM t WHERE a = 10 FOR UPDATE' is finished successfully instead of finishing by lock wait timeout. The fix is to forbid purging during the test by opening read view in a separate connection before the first insert into the table. Besides, 'lock_wait_end' syncpoint is not needed, as it enough to wait the end of the SELECT execution to let the UPDATE to continue.
* | | | bump the VERSIONDaniel Bartholomew2022-09-191-1/+1
| | | |
* | | | MDEV-16708: ps_missed_cmds test - HELP deconflictDaniel Black2022-09-152-250/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To make it possible to update the HELP text of UPDATE without changing this test every time, the test is changed to look for a faked help topic. A non-existant help topic generates different metadata and wasn't suitable as a test. Requested by Ian Gilfillan. Reviewed by Dmitry Shulga
* | | | Merge 10.5 into 10.6mariadb-10.6.10Marko Mäkelä2022-09-131-2/+1
|\ \ \ \ | |/ / /
| * | | MDEV-29513 avoid useless os_thread_sleep() during srv_purge_shutdown()bb-10.5-wladVladislav Vaintroub2022-09-121-1/+1
| | | | | | | | | | | | | | | | use waitable_task.wait() function to wait for the end of previous purge
* | | | Merge 10.5 into 10.6Marko Mäkelä2022-09-1210-22/+528
|\ \ \ \ | |/ / /
| * | | MDEV-24660 MYSQL_BIN_LOG::cleanup(): Assertion `b->xid_count == 0'Andrei2022-09-094-14/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The shutdown time assert was caused by untimely deactivation of the binlog background thread and related structs destruction. It could specifically occur when a transaction is replication unsafe and has to be completed with a ROLLBACK event in binlog. This gets fixed with the binlog background thread stop relocation to a point and user transactions have been completed. A test case is added to binlog.binlog_checkpoint which also receives as a bonus a minor correction to reactivate a MDEV-4322 test case that originally required a shutdown phase (that ceased to do).
| * | | MDEV-29322 ASAN heap-use-after-free in Query_log_event::do_apply_eventAndrei2022-09-076-8/+416
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ASAN report was made in the parallel slave execution of a query event and implicitly involved (so also parallelly run) Format-Description event. The Query actually had unexpected impossible dependency on a preceding "old" FD whose instance got destructed, to cause the ASAN error. The case is fixed with storing the FD's value into Query-log-event at its instantiating on slave. The stored value is from the very FD of the Query's original binlog so remains to be correct at the query event applying. The branch C. of a new rpl_parallel_29322.test also demonstrates (may need few --repeat though) the bug in its simple form of the same server version binlog.
* | | | MDEV-27172 fixup: spider/bugfix.mdev_27172 failed with --ps-protocolNayuta Yanagisawa2022-09-082-3/+2
| | | |