test_if_ref()/part_of_refkey() will indicate to make_cond_for_table() that condition "f3 = 83" will be always true, which actually is not satisfied by the (NULL,'r'), which will be returned by ref-or-null access.
when make_cond_for_table() considers a WHERE clause of:
(f3 = 83) OR (f10 = 'z' AND f3 IS NULL)
and it is told that (f3 = 83) is universally true, it (correctly) concludes that entire WHERE condition is universally true, so there is no point in checking it.
Exact location of the problem:
test_if_ ref()/part_ of_refkey( ) will indicate to make_cond_ for_table( ) that condition "f3 = 83" will be always true, which actually is not satisfied by the (NULL,'r'), which will be returned by ref-or-null access.
when make_cond_ for_table( ) considers a WHERE clause of:
(f3 = 83) OR (f10 = 'z' AND f3 IS NULL)
and it is told that (f3 = 83) is universally true, it (correctly) concludes that entire WHERE condition is universally true, so there is no point in checking it.