@Override public String getArrayIlikeSql(Column arrayColumn, String refName, boolean positive, Table dataHierTable) { return getArrayOpSql(arrayColumn, refName, positive, dataHierTable, "ILIKE"); }
@Override public String getInTreeSql(String idColumnName, String id) { String cast; try { cast = getCastForId(id); } catch (IllegalArgumentException e) { // discard query with invalid id return null; } if (pathOptimizationsEnabled) { return String.format("EXISTS(SELECT 1 FROM ancestors WHERE id = %s AND ARRAY[?]%s <@ ancestors)", idColumnName, getCastForArray(cast)); } return String.format("%s IN (SELECT * FROM nx_children(?%s))", idColumnName, cast); }
protected String getArrayOpSql(Column arrayColumn, String refName, boolean positive, Table dataHierTable, String op) { Table table = arrayColumn.getTable(); String tableAliasName = openQuote() + getTableName(refName) + closeQuote(); String sql = String.format("EXISTS (SELECT 1 FROM %s AS %s WHERE %s = %s AND %s %s ?)", getArraySubQuery(arrayColumn, tableAliasName).toSql(), tableAliasName, dataHierTable.getColumn(Model.MAIN_KEY).getFullQuotedName(), tableAliasName + '.' + table.getColumn(Model.MAIN_KEY).getQuotedName(), tableAliasName + '.' + Model.COLL_TABLE_VALUE_KEY, op); if (!positive) { sql = "NOT(" + sql + ")"; } return sql; }
case Types.VARCHAR: case Types.CLOB: return getFromResultSetString(rs, index, column); case Types.BIT: return rs.getBoolean(index); return rs.getDouble(index); case Types.TIMESTAMP: return getFromResultSetTimestamp(rs, index, column); case Types.ARRAY: Array array = rs.getArray(index); return getCalendarFromTimestamp((Timestamp[]) array.getArray()); } else { return (Serializable) array.getArray(); ColumnType type = column.getType(); if (type.isId()) { return getId(rs, index);
FulltextQuery broken = breakPhrases(ft); String ftsql = FulltextQueryAnalyzer.translateFulltext(broken, "|", "&", "& !", ""); FulltextQuery noand = removeToplevelAndedWords(ft); if (noand != null) { StringBuilder buf = new StringBuilder(); generateLikeSql(noand, buf); ftsql += FT_LIKE_SEP + buf.toString();
List<FulltextQuery> newTerms = new LinkedList<>(); for (FulltextQuery term : ft.terms) { FulltextQuery broken = breakPhrases(term); if (broken == null) {
compatibilityFulltextTable = getCompatibilityFulltextTable(metadata); } catch (SQLException e) { throw new NuxeoException(e);
@Override public String getArrayLikeSql(Column arrayColumn, String refName, boolean positive, Table dataHierTable) { return getArrayOpSql(arrayColumn, refName, positive, dataHierTable, "LIKE"); }