001package gudusoft.gsqlparser.ir.semantic.joinanalysis; 002 003/** 004 * Classification of a {@link Predicate} extracted from an ON or WHERE 005 * condition. 006 * 007 * <ul> 008 * <li>{@link #EQUI} — {@code left = right}.</li> 009 * <li>{@link #NON_EQUI} — {@code <>}, {@code >}, {@code >=}, 010 * {@code <}, {@code <=}.</li> 011 * <li>{@link #RANGE} — {@code BETWEEN} (and range-style shapes).</li> 012 * <li>{@link #NULL_CHECK} — {@code IS NULL} / {@code IS NOT NULL}.</li> 013 * <li>{@link #CALL} — a function/expression call comparison whose 014 * operand(s) are not a bare column (e.g. 015 * {@code lower(a.n) = lower(b.n)}).</li> 016 * <li>{@link #COMPLEX} — any shape not decomposed into the above; the 017 * sub-tree is preserved as a {@link PredicateOperand}, never 018 * dropped.</li> 019 * </ul> 020 * 021 * <p>Provisional in join-analysis slice 162 (S1); re-confirmed against 022 * the real {@code EExpressionType} values in slice 166 (S5). 023 */ 024public enum PredicateKind { 025 EQUI, 026 NON_EQUI, 027 RANGE, 028 NULL_CHECK, 029 CALL, 030 COMPLEX 031}