--- cayenne-1.1-dev-2003-10-9-orig/src/cayenne/org/objectstyle/cayenne/access/trans/SelectTranslator.java 2003-10-09 05:18:50.000000000 -0500 +++ cayenne-1.1-dev-2003-10-9-cust/src/cayenne/org/objectstyle/cayenne/access/trans/SelectTranslator.java 2003-10-10 08:01:14.000000000 -0500 ..-135,8 +135,9 @@ // build GROUP BY buildGroupByList(); - // build ORDER BY, - String orderByStr = new OrderingTranslator(this).doTranslation(); + // build ORDER BY + OrderingTranslator orderingTranslator = new OrderingTranslator(this); + String orderByStr = orderingTranslator.doTranslation(); // assemble StringBuffer queryBuf = new StringBuffer(); ..-153,6 +154,17 @@ queryBuf.append(", "); appendColumn(queryBuf, i); } + + // append any column expressions used in the order by if this query + // uses the DISTINCT modifier + if (forceDistinct || getSelectQuery().isDistinct()) { + List orderByColumnList = orderingTranslator.getOrderByColumnList(); + int additionalColumnCount = orderByColumnList.size(); + for (int i = 0; i < additionalColumnCount; i++) { + queryBuf.append(", "); + queryBuf.append((String) orderByColumnList.get(i)); + } + } // append from clause queryBuf.append(" FROM ");