Class ExtensionItemFilterProcessor

java.lang.Object
com.evolveum.midpoint.repo.sqlbase.filtering.item.ItemValueFilterProcessor<ValueFilter<?,?>>
com.evolveum.midpoint.repo.sqale.filtering.ExtensionItemFilterProcessor
All Implemented Interfaces:
FilterProcessor<ValueFilter<?,?>>, RightHandProcessor

public class ExtensionItemFilterProcessor extends ItemValueFilterProcessor<ValueFilter<?,?>>
Filter processor for extension items stored in JSONB. This takes care of any supported type, scalar or array, and handles any operation. NOTE about NOT treatment: We use the same not treatment for extensions like for other columns resulting in conditions like: `not (u.ext->>'1510' < ? and u.ext->>'1510' is not null)` One might think that the part after AND can be replaced with u.ext ? '1510' to benefit from the GIN index. But `NOT (u.ext ? '...')` is *not* fully complement to the `u.ext ? '...'` (without NOT). It is only fully complement if additional `AND u.ext is not null` is added in which case the index will not be used either. So instead of adding special treatment code for extensions, we just reuse existing predicateWithNotTreated methods.
  • Field Details

    • STRING_TYPE

      public static final String STRING_TYPE
    • INT_TYPE

      public static final String INT_TYPE
    • INTEGER_TYPE

      public static final String INTEGER_TYPE
    • SHORT_TYPE

      public static final String SHORT_TYPE
    • LONG_TYPE

      public static final String LONG_TYPE
    • DECIMAL_TYPE

      public static final String DECIMAL_TYPE
    • DOUBLE_TYPE

      public static final String DOUBLE_TYPE
    • FLOAT_TYPE

      public static final String FLOAT_TYPE
    • BOOLEAN_TYPE

      public static final String BOOLEAN_TYPE
    • DATETIME_TYPE

      public static final String DATETIME_TYPE
    • POLY_STRING_TYPE

      public static final String POLY_STRING_TYPE
  • Constructor Details

  • Method Details