create table t1 (
pk int primary key auto_increment,
nm varchar(32),
fl1 tinyint default 0,
fl2 tinyint default 0,
index idx1(nm, fl1),
index idx2(fl2)
) engine=myisam;
create table name (
pk int primary key auto_increment,
nm bigint
) engine=myisam;
create table flag2 (
pk int primary key auto_increment,
fl2 tinyint
) engine=myisam;
insert into name(nm) select seq from seq_1_to_1000 order by rand(17);
insert into flag2(fl2) select seq mod 2 from seq_1_to_1000 order by rand(19);
insert into t1(nm,fl2)
select nm, fl2 from name, flag2 where name.pk = flag2.pk;
analyze table t1 persistent for all;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Engine-independent statistics collected
test.t1	analyze	status	Table is already up to date
set optimizer_trace="enabled=on";
set optimizer_switch='rowid_filter=on';
set statement optimizer_adjust_secondary_key_costs=0 for
explain select * from t1  where nm like '500%' AND fl2 = 0;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	idx1,idx2	idx1	35	NULL	1	Using index condition; Using where
Warnings:
Warning	4200	The variable '@@optimizer_adjust_secondary_key_costs' is ignored. It only exists for compatibility with old installations and will be removed in a future release
Warning	4200	The variable '@@optimizer_adjust_secondary_key_costs' is ignored. It only exists for compatibility with old installations and will be removed in a future release
set @trace=(select trace from information_schema.optimizer_trace);
select json_detailed(json_extract(@trace, '$**.considered_access_paths'));
json_detailed(json_extract(@trace, '$**.considered_access_paths'))
[
    [
        {
            "access_type": "ref",
            "index": "idx2",
            "used_range_estimates": true,
            "filter": 
            {
                "rowid_filter_index": "idx1",
                "index_only_cost": 0.045598762,
                "filter_startup_cost": 0.000899465,
                "find_key_and_filter_lookup_cost": 0.03086808,
                "filter_selectivity": 0.001,
                "original_rows": 492,
                "new_rows": 0.492,
                "original_access_cost": 0.59235049,
                "with_filter_access_cost": 0.077013594,
                "original_found_rows_cost": 0.546751728,
                "with_filter_found_rows_cost": 5.467517e-4,
                "org_cost": 0.60809449,
                "filter_cost": 0.077928803,
                "filter_used": true
            },
            "rows": 0.492,
            "cost": 0.077928803,
            "chosen": true
        },
        {
            "filter": 
            {
                "rowid_filter_index": "idx2",
                "index_only_cost": 0.000881127,
                "filter_startup_cost": 0.066293508,
                "find_key_and_filter_lookup_cost": 8.646449e-5,
                "filter_selectivity": 0.492,
                "original_rows": 1,
                "new_rows": 0.492,
                "original_access_cost": 0.001992411,
                "with_filter_access_cost": 0.001514343,
                "original_found_rows_cost": 0.001111284,
                "with_filter_found_rows_cost": 5.467517e-4,
                "org_cost": 0.002024411,
                "filter_cost": 0.067823595,
                "filter_used": false
            },
            "access_type": "range",
            "range_index": "idx1",
            "rows": 1,
            "rows_after_filter": 1,
            "rows_out": 0.492,
            "cost": 0.002574553,
            "chosen": true
        }
    ]
]

The following trace should have a different rowid_filter_key cost

set statement optimizer_adjust_secondary_key_costs=2 for
explain select * from t1  where nm like '500%' AND fl2 = 0;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	range	idx1,idx2	idx1	35	NULL	1	Using index condition; Using where
Warnings:
Warning	4200	The variable '@@optimizer_adjust_secondary_key_costs' is ignored. It only exists for compatibility with old installations and will be removed in a future release
Warning	4200	The variable '@@optimizer_adjust_secondary_key_costs' is ignored. It only exists for compatibility with old installations and will be removed in a future release
set @trace=(select trace from information_schema.optimizer_trace);
select json_detailed(json_extract(@trace, '$**.considered_access_paths'));
json_detailed(json_extract(@trace, '$**.considered_access_paths'))
[
    [
        {
            "access_type": "ref",
            "index": "idx2",
            "used_range_estimates": true,
            "filter": 
            {
                "rowid_filter_index": "idx1",
                "index_only_cost": 0.045598762,
                "filter_startup_cost": 0.000899465,
                "find_key_and_filter_lookup_cost": 0.03086808,
                "filter_selectivity": 0.001,
                "original_rows": 492,
                "new_rows": 0.492,
                "original_access_cost": 0.59235049,
                "with_filter_access_cost": 0.077013594,
                "original_found_rows_cost": 0.546751728,
                "with_filter_found_rows_cost": 5.467517e-4,
                "org_cost": 0.60809449,
                "filter_cost": 0.077928803,
                "filter_used": true
            },
            "rows": 0.492,
            "cost": 0.077928803,
            "chosen": true
        },
        {
            "filter": 
            {
                "rowid_filter_index": "idx2",
                "index_only_cost": 0.000881127,
                "filter_startup_cost": 0.066293508,
                "find_key_and_filter_lookup_cost": 8.646449e-5,
                "filter_selectivity": 0.492,
                "original_rows": 1,
                "new_rows": 0.492,
                "original_access_cost": 0.001992411,
                "with_filter_access_cost": 0.001514343,
                "original_found_rows_cost": 0.001111284,
                "with_filter_found_rows_cost": 5.467517e-4,
                "org_cost": 0.002024411,
                "filter_cost": 0.067823595,
                "filter_used": false
            },
            "access_type": "range",
            "range_index": "idx1",
            "rows": 1,
            "rows_after_filter": 1,
            "rows_out": 0.492,
            "cost": 0.002574553,
            "chosen": true
        }
    ]
]
drop table t1, name, flag2;