if (isCollectionField(query)) { return String.format("jsonb_array_length(%s) > 0", wrapNativeField(query.term.propertyName, cd)); return String.format("%s IS NOT NULL", wrapNativeField(query.term.propertyName, cd));
return String.format( "EXISTS(SELECT FROM jsonb_array_elements(%s) value WHERE value IS NOT NULL)", wrapNativeField(query.term.propertyName, cd)); wrapNativeField(query.term.propertyName, cd), isCaseInsensitive ? "ILIKE" : "LIKE", escapedPrefix);
private static String convertToPostgresSortField(QueryTask.QueryTerm sortTerm, boolean includeSortOrder, TableDescription td) { validateSortTerm(sortTerm); ColumnDescription cd = td.getColumnDescription(sortTerm.propertyName); if (sortTerm.sortOrder == null) { sortTerm.sortOrder = QueryTask.QuerySpecification.SortOrder.ASC; } String sortField; switch (sortTerm.propertyType) { case BOOLEAN: case DOUBLE: case LONG: sortField = wrapNativeField(sortTerm.propertyName, cd); break; default: sortField = wrapStringField(sortTerm.propertyName, cd); if (isCaseInsensitive(cd)) { sortField = String.format("LOWER(%s)", sortField); } } if (includeSortOrder) { boolean ascending = sortTerm.sortOrder == QueryTask.QuerySpecification.SortOrder.ASC; sortField += ascending ? " ASC" : " DESC"; } return sortField; }
case SHOULD_OCCUR: condition = String.format("%s ?| ARRAY[%s]", wrapNativeField(q.term.propertyName, cd), values); break; case MUST_OCCUR: default: condition = String.format("%s ?& ARRAY[%s]", wrapNativeField(q.term.propertyName, cd), values);
return String.format("%s ? '%s'", wrapNativeField(query.term.propertyName, cd), escapeSqlString(query.term.matchValue));