IntroduceProjectsRule introduce a wrong project to filter out a variable that is used in the one of two paths after SPLIT (REPLICATE) operator. In my branch, I am trying to optimize the index-search. In order to implement this, there is an ASSIGN operator and it assigns a variable that is going to be used in the SELECT operator. After ASSIGN, there is SPLIT operator. It divides the path into two - the left path contains the SELECT and the other path contains no operator. Two paths will be merged by UNION operator. The issue is IntroduceProjectRule can't consider all paths at the same time. Thus, when it checks the right path, it introduces a wrong PROJECT operator that filters out one variable in the ASSIGN before SPLIT since it thinks that the variable is not used after ASSIGN operator. In fact, the variable is used in the left path.