Обсуждение: BUG #17176: Error raised on valid query
The following bug has been logged on the website: Bug reference: 17176 Logged by: Peter Davie Email address: peter.davie@convergentsolutions.com.au PostgreSQL version: 13.4 Operating system: Windows 10 64-bit Description: Hibernate is generating the following query: select distinct date_part('year', internalme0_.when_occurred) as col_0_0_, date_part('month', internalme0_.when_occurred) as col_1_0_, date_part('day', internalme0_.when_occurred) as col_2_0_, date_part('hour', internalme0_.when_occurred) as col_3_0_, date_part('minute', internalme0_.when_occurred) as col_4_0_ from InternalMessages internalme0_ group by date_part('year', internalme0_.when_occurred) , date_part('month', internalme0_.when_occurred) , date_part('day', internalme0_.when_occurred) , date_part('hour', internalme0_.when_occurred) , date_part('minute', internalme0_.when_occurred) , internalme0_.when_occurred order by date_part($1, internalme0_.when_occurred) asc, date_part($2, internalme0_.when_occurred) asc, date_part($3, internalme0_.when_occurred) asc, date_part($4, internalme0_.when_occurred) asc, date_part($5, internalme0_.when_occurred) asc The placeholders contain the values 'year', 'month', 'day', 'hour' and 'minute'. The following error is generated when the query is executed: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list at character 635 The Order By and Group By clauses are semantically equivalent. I am in the process of raising a bug with the Hibernate team to correct the generation of the query, however this query should be accepted.
PG Bug reporting form <noreply@postgresql.org> writes: > Hibernate is generating the following query: > select distinct date_part('year', internalme0_.when_occurred) as col_0_0_, > date_part('month', internalme0_.when_occurred) as col_1_0_, date_part('day', > internalme0_.when_occurred) as col_2_0_, date_part('hour', > internalme0_.when_occurred) as col_3_0_, date_part('minute', > internalme0_.when_occurred) as col_4_0_ > from InternalMessages internalme0_ > group by date_part('year', internalme0_.when_occurred) , date_part('month', > internalme0_.when_occurred) , date_part('day', internalme0_.when_occurred) , > date_part('hour', internalme0_.when_occurred) , date_part('minute', > internalme0_.when_occurred) , internalme0_.when_occurred > order by date_part($1, internalme0_.when_occurred) asc, date_part($2, > internalme0_.when_occurred) asc, date_part($3, internalme0_.when_occurred) > asc, date_part($4, internalme0_.when_occurred) asc, date_part($5, > internalme0_.when_occurred) asc > The placeholders contain the values 'year', 'month', 'day', 'hour' and > 'minute'. Doesn't matter. Those expressions are not semantically equivalent, and your assertion of that doesn't make it so. The query has to be valid for any values of the placeholders. (If you'd like to substitute specific parameter values in advance of semantic analysis, then do it on the client side.) regards, tom lane