private static com.netflix.iceberg.expressions.Expression convert(Operation op, Expression left, Expression right) { Pair<Transform, String> attrPair = null; Operation leftOperation = null; Literal lit = null; if (right instanceof Literal) { lit = (Literal) right; attrPair = convertAttr(left); leftOperation = op; } else if (left instanceof Literal) { lit = (Literal) left; attrPair = convertAttr(right); leftOperation = op.flipLR(); } if (attrPair != null) { switch (attrPair.first()) { case IDENTITY: return predicate(leftOperation, attrPair.second(), valueFromSpark(lit)); case YEAR: return filter(leftOperation, attrPair.second(), (int) lit.value(), SparkExpressions::yearToTimestampMicros); case DAY: return filter(leftOperation, attrPair.second(), (int) lit.value(), SparkExpressions::dayToTimestampMicros); default: } } return null; }