@Override protected Query applyArrayLiteral(Reference reference, Literal arrayLiteral, Context context) throws IOException { // col not like ANY (['a', 'b']) --> not(and(like(col, 'a'), like(col, 'b'))) BooleanQuery query = new BooleanQuery(); BooleanQuery notQuery = new BooleanQuery(); String columnName = reference.ident().columnIdent().fqn(); QueryBuilderHelper builder = QueryBuilderHelper.forType(reference.valueType()); for (Object value : toIterable(arrayLiteral.value())) { notQuery.add( builder.like(columnName, value, context.indexCache.filter()), BooleanClause.Occur.MUST); } query.add(notQuery, BooleanClause.Occur.MUST_NOT); return query; }
public Query toQuery(Reference reference, Object value, Context context) { String columnName = reference.info().ident().columnIdent().fqn(); QueryBuilderHelper builder = QueryBuilderHelper.forType(reference.valueType()); return builder.like(columnName, value, context.indexCache.filter()); }