1. 25 Jun, 2023 1 commit
  2. 21 Jun, 2023 2 commits
  3. 18 Jun, 2023 1 commit
  4. 08 Jun, 2023 14 commits
  5. 07 Jun, 2023 18 commits
    • Oleksandr Byelkin's avatar
      Merge branch '10.6' into 10.6.14 · 04f0b955
      Oleksandr Byelkin authored
      04f0b955
    • Monty's avatar
      MDEV-30944 Range_rowid_filter::fill() leaves file->keyread at MAX_KEY · ded4ed32
      Monty authored
      This test case exposed 2 different bugs:
      - When replacing a range with an index scan on a covering key
        in test_if_skip_sort_order() we didn't disable filtering.
        Filtering does not make much sense in this case.
        - Fixed by disabling filtering in this case.
      - Range_rowid_filter::fill() did not take into account that keyread
        could already active, which caused an assert when it tried to
        activate another keyread.
        - Fixed by remembering old keyread state at start and restoring it
          at end.
      
      Other things:
      - ha_start_keyread() allowed multiple calls. This is wrong, especially
        as we do no check if the index changed!
        I added an assert() to ensure that we don't call it there is already
        an active keyread.
      - ha_end_keyread() always called ha_extra(), even if keyread was not
        active.  Added a check to avoid the extra call.
      ded4ed32
    • Monty's avatar
      3ea8f306
    • Monty's avatar
      MDEV-31356: Range cost calculations does not take into account join_buffer · 07b02ab4
      Monty authored
      This patch also fixes
      MDEV-31391 Assertion `((best.records_out) == 0.0 ... failed
      
      Cost changes caused by this change:
      - range queries with join buffer now have a notable smaller cost.
      - range ranges are bit more expensive as the MULTI_RANGE_COST is now
        properly applied to it in all cases (this extra cost is equal to a
        key lookup).
      - table scan cost is slight smaller as we now assume data is cached in
        the engine after the first scan pass. (We did this before for range
        scans and other access methods).
      - partition tables had wrong values for max_row_blocks and
        max_index_blocks.  Correcting this, causes range access on
        partitioned tables to have slightly higher cost because of the
        increased estimated IO.
      - Using first match + join buffer caused 'filtered' to be calcualted
        wrong.  (Only affected EXPLAIN, not query costs).
      - Added cost_without_join_buffer to optimizer_trace.
      - check_quick_select() adjusted the number of rows according to persistent
        statistics, but did not adjust cost. Now fixed.
      
      The big change in the patch are:
      
      - In best_access_path(), where we now are using storing the cost in
        'ALL_READ_COST cost' and only converting it to a double at the end.
         This allows us to more exactly calculate the effect of the join_cache.
      - In JOIN_TAB::estimate_scan_time(), store the cost also in a
        ALL_READ_COST object.
      
      One of effect if this change is that when joining very small tables:
      
      t1    some_access_method
      t2    range
      t3    ALL         Use join buffer
      
      This is swiched to
      
      t1      some_access_method
      t3      ALL
      t2      range      use join buffer
      
      Both plans has the same cost, but as table scan in this case has less
      cost than rang, the table scan will be considered first and thus have
      precidence.
      
      Test case changes:
      - optimizer_trace          - Addition of cost_without_join_buffer
      - subselect_mat_cost_bugs  - Small tables and scan versus range
      - range & range_mrr_icp    - Range + join_cache is faster than ref
      - optimizer_trace          - cost_without_join_buffer, smaller scan cost,
                                   range setup cost.
      - mrr                      - range+join_buffer used as smaller cost
      07b02ab4
    • Daniel Bartholomew's avatar
    • Daniel Bartholomew's avatar
      bump the VERSION · 5b0fe277
      Daniel Bartholomew authored
      5b0fe277
    • Daniel Bartholomew's avatar
    • Daniel Bartholomew's avatar
      bump the VERSION · d6335d42
      Daniel Bartholomew authored
      d6335d42
    • Marko Mäkelä's avatar
      Merge mariadb-10.5.21 into 10.5 · 609b4e99
      Marko Mäkelä authored
      609b4e99
    • Daniel Bartholomew's avatar
      bump the VERSION · a2aaf26a
      Daniel Bartholomew authored
      a2aaf26a
    • Daniel Bartholomew's avatar
      bump the VERSION · 68b52ae3
      Daniel Bartholomew authored
      68b52ae3
    • Daniel Bartholomew's avatar
      bump the VERSION · 7b353805
      Daniel Bartholomew authored
      7b353805
    • Daniel Bartholomew's avatar
      bump the VERSION · a77939ec
      Daniel Bartholomew authored
      a77939ec
    • Daniel Bartholomew's avatar
      bump the VERSION · 91367e82
      Daniel Bartholomew authored
      91367e82
    • Marko Mäkelä's avatar
      Merge 10.10 into 10.11 · c04284e7
      Marko Mäkelä authored
      c04284e7
    • Marko Mäkelä's avatar
      Merge 10.9 into 10.10 · 82230aa4
      Marko Mäkelä authored
      82230aa4
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.9 · 878a86f2
      Marko Mäkelä authored
      878a86f2
    • Sergei Petrunia's avatar
      MDEV-31380: Assertion `s->table->opt_range_condition_rows <= s->found_records' failed · a0e7bd73
      Sergei Petrunia authored
      LooseScan code set opt_range_condition_rows to be the
      
        MIN(loose_scan_plan->records, table->records)
      
      totally ignoring possible quick range selects.  If there was a quick
      select $QUICK on another index with
      
        $QUICK->records < loose_scan_plan->records
      
      this would create a situation where
      
         opt_range_condition_rows > $QUICK->records
      
      which causes an assert in 10.6+ and potentially wrong query plan
      choice in 10.5.
      
      Fixed by making opt_range_condition_rows to be the minimum #rows
      of any quick select.
      Approved-by: default avatarMonty <monty@mariadb.org>
      a0e7bd73
  6. 06 Jun, 2023 1 commit
  7. 05 Jun, 2023 3 commits