Rewrote query for selecting distinct values scoped to comm/coll due to deficiency in Postgres

git-svn-id: http://scm.dspace.org/svn/repo/trunk@2663 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Graham Triggs
2008-02-13 16:29:20 +00:00
parent 02a1297bc7
commit 4e59bbf78e

View File

@@ -1022,6 +1022,15 @@ public class BrowseDAOPostgres implements BrowseDAO
// Then append the table
queryBuf.append(" FROM ");
queryBuf.append(table);
if (containerTable != null && tableMap != null)
{
queryBuf.append(", (SELECT DISTINCT ").append(tableMap).append(".distinct_id ");
queryBuf.append(" FROM ");
buildFocusedSelectTables(queryBuf);
queryBuf.append(" WHERE ");
buildFocusedSelectClauses(queryBuf, params);
queryBuf.append(") mappings");
}
queryBuf.append(" ");
}
@@ -1044,12 +1053,7 @@ public class BrowseDAOPostgres implements BrowseDAO
if (containerIDField != null && containerID != -1 && containerTable != null)
{
buildWhereClauseOpInsert(queryBuf);
queryBuf.append(" EXISTS (SELECT 1 FROM ");
buildFocusedSelectTables(queryBuf);
queryBuf.append(" WHERE ");
buildFocusedSelectClauses(queryBuf, params);
queryBuf.append(" AND distinct_id=" + table + ".id) ");
queryBuf.append(" ").append(table).append(".id=mappings.distinct_id ");
}
}