question: private RexNode convertIdentifier ( Blackboard bb , SqlIdentifier identifier ) { final SqlCall call = SqlUtil . makeCall ( opTab , identifier ) ; if ( call != null ) { return bb . convertExpression ( call ) ; } final SqlQualified qualified ; if ( bb . scope != null ) { qualified = bb . scope . fullyQualify ( identifier ) ; } else { qualified = SqlQualified . create ( null , 1 , null , identifier ) ; } final Pair < RexNode , Map < String , Integer > > e0 = bb . lookupExp ( qualified ) ; RexNode e = e0 . left ; for ( String name : qualified . suffixTranslated ( ) ) { if ( e == e0 . left && e0 . right != null ) { int i = e0 . right . get ( name ) ; e = rexBuilder . makeFieldAccess ( e , i ) ; } else { final boolean caseSensitive = true ; e = rexBuilder . makeFieldAccess ( e , name , caseSensitive ) ; } } if ( e instanceof RexInputRef ) { e = adjustInputRef ( bb , ( RexInputRef ) e ) ; } if ( e0 . left instanceof RexCorrelVariable ) { assert e instanceof RexFieldAccess ; final RexNode prev = bb . mapCorrelateToRex . put ( ( ( RexCorrelVariable ) e0 . left ) . id , ( RexFieldAccess ) e ) ; assert prev == null ; } return e ; }
target:  Converts an identifier into an expression in a given scope. For example, the "empno" in "select empno from emp join dept" becomes "emp.empno".