Я использую разъем JDBC здесь, и для вашего желаемого запроса:
SELECT state FROM zips_iew WHERE j IN (1,2,3,4)
генерирует эту реляционную алгебру:
LogicalProject(state=[$0])
LogicalFilter(condition=[OR(=($0, 1), =($0, 2), =($0, 3), =($0, 4))])
JdbcTableScan(table=[[zips_iew, state]])
Вы должны начать с написания правил, которые преобразуют вашу исходную реляционную алгебру (с SemiJoin) и пройти путь вниз, чтобы получить реляционную алгебру, которая выглядит как выше.