summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* sampling analysiskakurin_samplingNikita Malyavin2022-06-244-36/+26
| | | | | | | | | | | | | | | | | file=open(...) for l in file: if l.startswith('SAMPLE') and not l.startswith('SAMPLE root'): print(l) n = dict((p.split('=') for p in l.replace('SAMPLE ', '').replace(' REJECT', '').split() )) if 'REJECT' in l: n['rej']=True nodes.append(n) max(int(n['size']) for n in nodes) max((float(n['p']), serialize(n)) for n in nodes) max((float(n['size']), serialize(n)) for n in nodes if n['height'] == '0')
* report sampling bucketsNikita Malyavin2022-06-231-5/+40
|
* Mtr profiling setupNikita Malyavin2022-06-1910-9/+79
| | | | | | | | | | | | | | | | | | | | | | | A complete generated table fixture was added. Unfortunately, imported tables behave bad in innodb. They are subject for checksumming on and on, so it's better to ALTER TABLE FORCE them before actually profiling. Usage: Put vehicle_reg.ibd in mysq-test/std_data. (cant push it; too large) ./mtr --mem main.profile It will emit notice, that you should rerun it with --start-dirty. Wait ~two minutes. Check that var/mysqld.1 directory is there. If not, it was archived by mtr. Run: mv var/log/main.profile-innodb/mysqld.1 var Now rerun with the dirty dir: ./mtr main.profile --start-dirty --vardir=`pwd`/var --suite=main You can add --gprof to collect the profiling data. Make sure you've compiled mariadbd with -DWITH_GPROF=1. Open gprof.msg and navigate to Call graph. Dont use IDE to open! The file is huge. Vim/emacs is best, but maybe sublime would work, too.
* add tablesample bernoulli() syntaxapostle2022-06-035-41/+38
|
* add reject countapostle2022-06-022-4/+8
|
* add awful but working sampling method selectionapostle2022-06-016-5/+53
|
* psergey's patchapostle2022-05-318-6/+68
|
* fixsapostle2022-05-287-32/+34
|
* fixsapostle2022-05-284-27/+29
|
* change A/R flag to explicit, semantic fixsapostle2022-05-276-17/+17
|
* fixs for A/Rapostle2022-05-275-48/+55
|
* add correct A/R probabilityapostle2022-05-272-7/+18
|
* change way to get rand recordapostle2022-05-262-7/+11
|
* change prototypes btr_[p]cur_open_at_rnd_posapostle2022-05-265-10/+15
|
* add offsets errors handlingapostle2022-05-261-1/+9
|
* fix include and heap ptrapostle2022-05-223-5/+34
|
* fix style mistakesapostle2022-05-162-26/+27
|
* make ha_samlpe interfaceapostle2022-05-155-15/+114
|
* add new HA_NATIVE_SAMPLING flagapostle2022-05-143-27/+35
|
* prototype of sampling codeapostle2022-05-044-2/+53
|
* Merge 10.6 into 10.7Marko Mäkelä2022-03-0846-374/+325
|\
| * Fix an uninitialized variable in debug buildsMarko Mäkelä2022-03-081-2/+2
| |
| * MDEV-27891: Make the test work with debug buildsMarko Mäkelä2022-03-083-13/+15
| |
| * After-merge fixesMarko Mäkelä2022-03-089-64/+70
| |
| * Merge 10.5 into 10.6Vlad Lesin2022-03-0731-377/+275
| |\
| | * Merge 10.4 into 10.5Vlad Lesin2022-03-0715-409/+253
| | |\
| | | * Merge 10.3 into 10.4Vlad Lesin2022-03-0715-427/+249
| | | |\
| | | | * MDEV-27992 DELETE fails to delete record after blocking is releasedVlad Lesin2022-03-0715-427/+249
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MDEV-27025 allows to insert records before the record on which DELETE is locked, as a result the DELETE misses those records, what causes serious ACID violation. Revert MDEV-27025, MDEV-27550. The test which shows the scenario of ACID violation is added.
| | * | | Merge 10.4 into 10.5Marko Mäkelä2022-03-0721-154/+175
| | |\ \ \ | | | |/ /
| | | * | Merge 10.3 into 10.4Marko Mäkelä2022-03-0715-138/+121
| | | |\ \ | | | | |/
| | | | * Merge 10.2 into 10.3Marko Mäkelä2022-03-047-13/+30
| | | | |\
| | | | | * MDEV-27993 Assertion failed in btr_page_reorganize_low()Marko Mäkelä2022-03-033-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | btr_cur_optimistic_insert(): Disregard DEBUG_DBUG injection to invoke btr_page_reorganize() if the page (and the table) is empty. Otherwise, an assertion would fail in btr_page_reorganize_low() because PAGE_MAX_TRX_ID is 0 in an empty secondary index leaf page.
| | | | | * MMDEV-27823 mariadb-install-db --group failsMonty2022-03-012-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed by not sending --group option to the server (for now) Reviwer: Sergei Golubchik
| | | | | * federated.rpl failed if federatedx was not compiledMonty2022-03-011-0/+1
| | | | | |
| | | | | * MDEV-27968 GCC 12 -Og -Wmaybe-uninitialized in udf_handler::fix_fields()Marko Mäkelä2022-03-011-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | udf_handler::fix_fields(): Execute an assignment outside "if" so that GCC 12 will not issue a bogus-looking warning. Also, deduplicate some error handling code.
| | | | * | MDEV-28004 ha_innobase::reset_auto_increment() is never executedMarko Mäkelä2022-03-042-73/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The virtual member function handler::reset_auto_increment(ulonglong) is only ever invoked by the default implementation of the virtual member function handler::truncate(). Because ha_innobase::truncate() overrides handler::truncate() without ever invoking handler::truncate(), some InnoDB member functions are never called. ha_innobase::innobase_reset_autoinc(), ha_innobase::reset_auto_increment(): Removed (unreachable code). ha_innobase::delete_all_rows(): Removed. The default implementation handler::delete_all_rows() works just as fine.
| | | | * | MDEV-27582 Fulltext DDL decrements the FTS_DOC_ID valueThirunarayanan Balathandayuthapani2022-03-036-53/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - InnoDB FTS DDL decrements the FTS_DOC_ID when there is a deleted marked record involved. FTS_DOC_ID must never be reused. The purpose of FTS_DOC_ID is to be a unique row identifier that will be changed whenever a fulltext indexed column is updated.
| | | * | | galera_3nodes.galera_2_cluster: the test is temporarily disabledJulius Goryavsky2022-03-041-0/+1
| | | | | |
| | | * | | MDEV-27962 Instant DDL downgrades the MDL when table is emptyThirunarayanan Balathandayuthapani2022-03-015-17/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Server incorrectly downgrading the MDL after prepare phase when table is empty. mdl_exclusive_after_prepare is being set in prepare phase only. But mdl_exclusive_after_prepare condition was misplaced and checked before prepare phase by commit d270525dfde86bcb92a2327234a0954083e14a94 and it is now changed to check after prepare phase. - main.innodb_mysql_sync test case was changed to avoid locking optimization when table is empty.
| | * | | | MDEV-26230: mysql_upgrade fails to load type_mysql_json due to insufficientRucha Deodhar2022-03-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | maturity level Fix: Bumped maturity of the mysql_json plugin to gamma.
| * | | | | MDEV-27891: SIGSEGV in InnoDB buffer pool resizeDaniel Black2022-03-078-26/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During an increase in resize, the new curr_size got a value less than old_size. As n_chunks_new and n_chunks have a strong correlation to the resizing operation in progress, we can use them and remove the need for old_size. For convienece the n_chunks_new < n_chunks is now the is_shrinking function. The volatile compiler optimization on n_chunks{,_new} is removed as real mutex uses are needed. Other n_chunks_new/n_chunks methods: n_chunks_new and n_chunks almost always read and altered under the pool mutex. Exceptions are: * i_s_innodb_buffer_page_fill, * buf_pool_t::is_uncompressed (via is_blocked_field) These need reexamining for the need of a mutex, however comments indicates this already. get_n_pages has uses in buffer pool load, recover log memory exhaustion estimates and innodb status so take the minimum number of chunks for safety. The buf_pool_t::running_out function also uses curr_size/old_size. We replace this hot function calculation with just n_chunks_new. This is the new size of the chunks before the resizing occurs. If we are resizing down, we've already got the case we had previously (as the minimum). If we are resizing upwards, we are taking an optimistic view that there will be buffer chunks available for locks. As this memory allocation is occurring immediately next the resizing function it seems likely. Compiler hint UNIV_UNLIKELY removed to leave it to the branch predictor to make an informed decision. Added test case of a smaller size than the Marko/Roel original in JIRA reducing the size to 256M. SEGV hits roughly 1/10 times but its better than a 21G memory size. Reviewer: Marko
* | | | | | Merge 10.6 into 10.7Marko Mäkelä2022-03-0317-37/+51
|\ \ \ \ \ \ | |/ / / / /
| * | | | | Fix various spelling errorsOtto Kekäläinen2022-03-0312-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Among others: existance -> existence reinitialze -> reinitialize successfuly -> successfully
| * | | | | MDEV-27973 SIGSEGV in ha_innobase::reset() after TRUNCATE of TEMPORARY TABLEMarko Mäkelä2022-03-013-15/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | create_table_info_t::innobase_table_flags(): Ignore page_compressed and page_compression_level on TEMPORARY tables. ha_innobase::truncate(): Add a debug assertion that create() must succeed on temporary tables.
| * | | | | Merge 10.5 into 10.6Marko Mäkelä2022-03-012-3/+6
| |\ \ \ \ \ | | |/ / / /
| | * | | | Make testcase for MDEV-26585 stable.bb-10.5-spetruniaSergei Petrunia2022-03-012-3/+6
| | | | | |
* | | | | | Merge 10.6 into 10.7Marko Mäkelä2022-03-0123-116/+182
|\ \ \ \ \ \ | |/ / / / /
| * | | | | MDEV-27964: Test ENCRYPT() only in main.func_cryptMarko Mäkelä2022-03-014-18/+21
| | | | | |
| * | | | | Merge 10.5 into 10.6Marko Mäkelä2022-03-015-12/+17
| |\ \ \ \ \ | | |/ / / /
| | * | | | MDEV-27967 Assertion !buf_pool.any_io_pending() failedMarko Mäkelä2022-03-011-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test innodb.log_file_size would occasionally crash in a debug assertion failure in srv_prepare_to_delete_redo_log_file(). In the core dump, the assertion would hold. buf_pool_t::any_io_pending(): Avoid dirty reads by acquiring buf_pool.mutex. This function is only being invoked in debug builds, so we do not care about any performance impact.