Interface IPredicate


public interface IPredicate
Definition of a analyzed predicate.
 This is the foundation of an analyzed predicate (ie. WHERE or JOIN condition).
 Core analyzes a predicate and splits it into pairs. Common predicate types
 are provided for easier process by catalogs. More complex predicates (nested AND/OR etc.)
 are accessible via getUndefinedExpression() and can be utilized via a custom. IExpressionVisitor

 Example:

     a.col = b.col
 AND a.col1 = '10'
 AND a.col2 LIKE 'abc%'
 AND a.col3 IN (1,2,3)
 AND someFunc()
 AND a.col4 IS NULL

 This will yield 4 analyzed pairs

   - COMPARISON (EQ) => a.col1 = '10'
   - LIKE            => a.col2 LIKE 'abc%'
   - IN              => a.bol3 IN (1,2,3)
   - FUNCTION_CALL   => someFunc()
   - NULL            => a.col4 IS NULL

  Catalogs can pick those types/columns that it supports and handle them at the data source
  level to avoid core to process to much data.