Unit tests
@Test
public void testOrderJoinProjectFilter() {
CalciteAssert.that()
.with(connectionFactory)
.query("SELECT e.id, e.name, e.departmentId " +
"FROM Employee e " +
"JOIN Department d ON e.departmentId = d.id " +
"WHERE d.id = 2 " +
"ORDER BY e.name DESC")
.returnsOrdered(
"id=5; name=Smith; departmentId=2",
"id=4; name=Ford; departmentId=2",
"id=3; name=Clark; departmentId=2",
"id=6; name=Adams; departmentId=2"
)
.explainContains("PLAN=EnumerableSort(sort0=[$1], dir0=[DESC])\n" +
" EnumerableCalc(expr#0..3=[{inputs}], id=[$t2], name=[$t3], departmentId=[$t1])\n" +
" XapToEnumerableConverter\n" +
" XapJoin(condition=[=($1, $0)], joinType=[inner])\n" +
" XapProject(id=[$0])\n" +
" XapFilter(condition=[=(CAST($0):INTEGER, 2)])\n" +
" XapTableScan(table=[[sql-test-space, Department]])\n" +
" XapProject(departmentId=[$0], id=[$2], name=[$5])\n" +
" XapTableScan(table=[[sql-test-space, Employee]])");
}