/** * Create a <code>null</code>-safe condition. */ static final <T> Condition condition(Field<T> field, T value) { return (value == null) ? field.isNull() : field.eq(value); }
private Condition getContainsCondition(Object value, BiPredicate<?, ?> biPredicate, Field<Object> field) { if (biPredicate == Contains.without) { if (value == null) { return field.isNull(); } else { return field.notIn(value); } } else if (biPredicate == Contains.within) { if (value == null) { return field.isNotNull(); } else { return field.in(((Collection) value).toArray()); } } return null; }
private final QueryPartInternal delegate(Configuration configuration) { // CUBRID 9.0.0 and HSQLDB have buggy implementations of the NULL predicate. // Informix doesn't implement the RVE IS NULL predicate. if (EMULATE_NULL.contains(configuration.family())) { Field<?>[] fields = row.fields(); List<Condition> conditions = new ArrayList<Condition>(fields.length); for (Field<?> field : fields) conditions.add(isNull ? field.isNull() : field.isNotNull()); Condition result = DSL.and(conditions); return (QueryPartInternal) result; } else { return new Native(); } }
private final QueryPartInternal delegate(Configuration configuration) { // CUBRID 9.0.0 and HSQLDB have buggy implementations of the NULL predicate. // Let's wait for them to be fixed if (asList(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, SQLITE).contains(configuration.dialect().family())) { List<Condition> conditions = new ArrayList<Condition>(); for (Field<?> field : row.fields()) { conditions.add(isNull ? field.isNull() : field.isNotNull()); } Condition result = new CombinedCondition(Operator.AND, conditions); return (QueryPartInternal) result; } else { return new Native(); } }
private Condition buildConditionClause(Triggers t, String eventSource, Map<String, String> conditions) { Condition result = t.EVENT_SOURCE.eq(eventSource); if (conditions == null) { return result; } for (Map.Entry<String, String> e : conditions.entrySet()) { result = result.and( jsonText(t.CONDITIONS, e.getKey()).isNull() .or( value(e.getValue()).likeRegex(jsonText(t.CONDITIONS, e.getKey()).cast(String.class)))); } return result; }
protected Condition toCondition(Part part, Iterator<Object> iterator) { String property = part.getProperty().toDotPath(); Field<Object> field = field(property); switch (part.getType()) { case AFTER: case GREATER_THAN: return field.gt(iterator.next()); case GREATER_THAN_EQUAL: return field.ge(iterator.next()); case BEFORE: case LESS_THAN: return field.lt(iterator.next()); case LESS_THAN_EQUAL: return field.le(iterator.next()); case BETWEEN: return field.between(iterator.next(), iterator.next()); case IS_NULL: return field.isNull(); case IS_NOT_NULL: return field.isNotNull(); case IN: return field.in(toList(iterator)); case NOT_IN: return field.notIn(toList(iterator)); case LIKE: return lowerIfIgnoreCase(part, field, iterator); case NOT_LIKE: return lowerIfIgnoreCase(part, field, iterator).not(); case STARTING_WITH: return field.startsWith(iterator.next()); case ENDING_WITH: return field.endsWith(iterator.next()); case CONTAINING: return field.contains(iterator.next()); case SIMPLE_PROPERTY: return field.eq(iterator.next()); case NEGATING_SIMPLE_PROPERTY: return field.ne(iterator.next()); case TRUE: return field.eq(true); case FALSE: return field.eq(false); default: throw new IllegalArgumentException("Unsupported keyword!"); } }
case "eq": if (firstArg == null) { return field.isNull();
return field.between(iterator.next(), iterator.next()); case IS_NULL: return field.isNull(); case IS_NOT_NULL: return field.isNotNull();
if (comparator == Comparator.IS_DISTINCT_FROM) { caseExpression = (QueryPartInternal) decode() .when(lhs.isNull().and(rhs.isNull()), zero()) .when(lhs.isNull().and(rhs.isNotNull()), one()) .when(lhs.isNotNull().and(rhs.isNull()), one()) .when(lhs.equal(rhs), zero()) .otherwise(one()) .when(lhs.isNull().and(rhs.isNull()), one()) .when(lhs.isNull().and(rhs.isNotNull()), zero()) .when(lhs.isNotNull().and(rhs.isNull()), zero()) .when(lhs.equal(rhs), one()) .otherwise(zero())
break; case "is": condition = field.isNull(); break;
@Override public Condition visit(IsEqualQueryCriteria criteria, Boolean inArray) { String[] keys = translateArrayRef(criteria); Field field = DSL.field(databaseInterface.arraySerializer().getFieldName(keys)); Param<?> value; Condition criteriaCondition; if (criteria.getValue().getType().equals(ScalarType.NULL)) { if (!isInArrayValue(criteria.getAttributeReference(), inArray)) { criteriaCondition = field.isNull(); } else { criteriaCondition = field.equal( translateValueToArraySerialization(criteria.getValue()) ); } } else { if (!isInArrayValue(criteria.getAttributeReference(), inArray)) { value = translateValueToSQL(criteria.getValue()); } else { value = translateValueToArraySerialization(criteria.getValue()); } criteriaCondition = field.equal(value); } return addArrayCondition(criteria, criteriaCondition, keys, inArray); }
: ((RowN) left).isNotNull() : left instanceof Field ? ((Field) left).isNull() : ((RowN) left).isNotNull();