Search argument transitive closure

Preprocessing applies transitive closure to search arguments. For example, the following query joins titles and titleauthor on title_id and includes a search argument on titles.title_id:

select au_lname, title
from titles t, titleauthor ta, authors a
where t.title_id = ta.title_id
        and a.au_id = ta.au_id
        and t.title_id = "T81002"

This query is optimized as if it also included the search argument on titleauthor.title_id:

select au_lname, title
from titles t, titleauthor ta, authors a
where t.title_id = ta.title_id
        and a.au_id = ta.au_id
        and t.title_id = "T81002"
        and ta.title_id = "T81002"

With this additional clause, the optimizer can use index statistics on titles.title_id to estimate the number of matching rows in the titleauthor table. The more accurate cost estimates improve index and join order selection.