### Question:
PostgreSQLQuery extends AbstractPostgreSQLQuery<T, PostgreSQLQuery<T>> { @Override public <U> PostgreSQLQuery<U> select(Expression<U> expr) { queryMixin.setProjection(expr); @SuppressWarnings("unchecked") PostgreSQLQuery<U> newType = (PostgreSQLQuery<U>) this; return newType; } PostgreSQLQuery(Connection conn);  PostgreSQLQuery(Connection conn, SQLTemplates templates);  PostgreSQLQuery(Connection conn, Configuration configuration);  PostgreSQLQuery(Connection conn, Configuration configuration, QueryMetadata metadata);  PostgreSQLQuery(Provider<Connection> connProvider, Configuration configuration, QueryMetadata metadata);  PostgreSQLQuery(Provider<Connection> connProvider, Configuration configuration); @Override PostgreSQLQuery<T> clone(Connection conn); @Override PostgreSQLQuery<U> select(Expression<U> expr); @Override PostgreSQLQuery<Tuple> select(Expression<?>... exprs);  }### Answer:
@Test public void distinct_on() { query.from(employee) .distinctOn(employee.datefield, employee.timefield) .orderBy(employee.datefield.asc(), employee.timefield.asc(), employee.salary.asc()) .select(employee.id); assertEquals( "select distinct on(employee.DATEFIELD, employee.TIMEFIELD) employee.ID from EMPLOYEE employee order by employee.DATEFIELD asc, employee.TIMEFIELD asc, employee.SALARY asc", toString(query)); }