Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-3285

LP:891052 - semijoin_with_cache , outer_join_with_cache, mrr, mrr_sort_keys, mrr_cost_based are missing from some representations of optimizer_switch

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Trivial
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:

      Description

      The outer_join_with_cache and semijoin_with_cache options are missing from @@optimizer_switch . I thought that this was because those options were deprecated and removed on purpose, but now I see that they are still valid if specified manually.

      To repeat:

      mysqld --verbose --help | grep optimizer_switch | grep join_with_cache

      Maybe there are other such options. Ideally, there should be one unified list of allowable optimizer_switches.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            psergey Sergei Petrunia added a comment -

            Re: semijoin_with_cache , outer_join_with_cache missing from optimizer_switch
            grepping for optimizer_switch and join_with_cache on the same line produces nothing, because the help text looks like this:

            --optimizer_switch=name
            optimizer_switch=option=val[,option=val...], where
            option=

            {index_merge, index_merge_union, index_merge_sort_union, index_merge_intersection, index_merge_sort_intersection, index_condition_pushdown, derived_merge, derived_with_keys, firstmatch, loosescan, materialization, in_to_exists, semijoin, partial_match_rowid_merge, partial_match_table_scan, subquery_cache, outer_join_with_cache, semijoin_with_cache, join_cache_incremental, join_cache_hashed, join_cache_bka, optimize_join_buffer_size, table_elimination}

            and
            val=

            {on, off, default}

            .

            one can see that semijoin_with_cache and outerjoin_with_cache are present there.

            Everything seems to work as it should.

            Show
            psergey Sergei Petrunia added a comment - Re: semijoin_with_cache , outer_join_with_cache missing from optimizer_switch grepping for optimizer_switch and join_with_cache on the same line produces nothing, because the help text looks like this: --optimizer_switch=name optimizer_switch=option=val [,option=val...] , where option= {index_merge, index_merge_union, index_merge_sort_union, index_merge_intersection, index_merge_sort_intersection, index_condition_pushdown, derived_merge, derived_with_keys, firstmatch, loosescan, materialization, in_to_exists, semijoin, partial_match_rowid_merge, partial_match_table_scan, subquery_cache, outer_join_with_cache, semijoin_with_cache, join_cache_incremental, join_cache_hashed, join_cache_bka, optimize_join_buffer_size, table_elimination} and val= {on, off, default} . one can see that semijoin_with_cache and outerjoin_with_cache are present there. Everything seems to work as it should.
            Hide
            philipstoev Philip Stoev added a comment -

            Re: semijoin_with_cache , outer_join_with_cache missing from optimizer_switch
            Those are the two lists from mysqld --verbose --help:

            index_merge=xx,index_merge_union=xx,index_merge_sort_union=xx,index_merge_intersection=xx,index_merge_sort_intersection=xxx,index_condition_pushdown=xxx,derived_merge=xxx,derived_with_keys=xxx,firstmatch=xx,loosescan=xx,materialization=xxx,in_to_exists=xx,semijoin=xx,partial_match_rowid_merge=xx,partial_match_table_scan=xx,subquery_cache=xx, outer_join_with_cache=xxx,semijoin_with_cache=xxx,join_cache_incremental=xx,join_cache_hashed=xx,join_cache_bka=xx,optimize_join_buffer_size=xxx,table_elimination=xx

            optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on

            and this is from SHOW VARIABLES on a running server:

            index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on

            Those three lists are different. The first list from mysqld --verbose --help is missing mrr,mrr_cost_based,mrr_sort keys. The second list is missing outer_join_with_cache, semijoin_with_cache.

            Show
            philipstoev Philip Stoev added a comment - Re: semijoin_with_cache , outer_join_with_cache missing from optimizer_switch Those are the two lists from mysqld --verbose --help: index_merge=xx,index_merge_union=xx,index_merge_sort_union=xx,index_merge_intersection=xx,index_merge_sort_intersection=xxx,index_condition_pushdown=xxx,derived_merge=xxx,derived_with_keys=xxx,firstmatch=xx,loosescan=xx,materialization=xxx,in_to_exists=xx,semijoin=xx,partial_match_rowid_merge=xx,partial_match_table_scan=xx,subquery_cache=xx, outer_join_with_cache=xxx,semijoin_with_cache=xxx,join_cache_incremental=xx,join_cache_hashed=xx,join_cache_bka=xx,optimize_join_buffer_size=xxx,table_elimination=xx optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on and this is from SHOW VARIABLES on a running server: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on Those three lists are different. The first list from mysqld --verbose --help is missing mrr,mrr_cost_based,mrr_sort keys. The second list is missing outer_join_with_cache, semijoin_with_cache.
            Hide
            ratzpo Rasmus Johansson added a comment -

            Launchpad bug id: 891052

            Show
            ratzpo Rasmus Johansson added a comment - Launchpad bug id: 891052

              People

              • Assignee:
                igor Igor Babaev
                Reporter:
                philipstoev Philip Stoev
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: