[hibernate-dev] 6.0 - formalized standard functions
Sanne Grinovero
sanne at hibernate.org
Tue May 30 09:08:44 EDT 2017
On 30 May 2017 at 13:02, Steve Ebersole <steve at hibernate.org> wrote:
> For whatever reason JPA and a few of the databases do not categorize
> coalesce and nullif as functions - hence the "not technically a function"
> part.
>
> However in Hibernate I have defined them as functions for the sake of users
> being able to plug in custom function templates.
Thanks, it's clear now.
Sanne
>
> On Tue, May 30, 2017 at 5:14 AM Sanne Grinovero <sanne at hibernate.org> wrote:
>>
>> Hi Steve,
>> just a curiosity; for `coalesce` and `nullif` you stated "not
>> technically a function, but supported as such to allow overriding".
>>
>> What does it mean?
>>
>> Thanks!
>> Sanne
>>
>> On 29 May 2017 at 22:29, Steve Ebersole <steve at hibernate.org> wrote:
>> > Hibernate has always defined a set of functions that should always be
>> > available on every Dialect/database. JPA formalized some of these, but
>> > Hibernate still had a superset. So I wanted to formalize the complete
>> > set
>> > of supported functions. Here is the formalized list of what Hibernate
>> > has
>> > always considered the "supported list":
>> >
>> > - those defined by JPA
>> > - abs
>> > - avg
>> > - concat
>> > - count
>> > - current_date
>> > - current_time
>> > - current_timestamp
>> > - length
>> > - locate
>> > - lower
>> > - max
>> > - min
>> > - mod
>> > - sqrt
>> > - substring
>> > - sum
>> > - trim
>> > - upper
>> > - Hibernate extensions
>> > - bit_length
>> > - coalesce - not technically a function, but supported as such to
>> > allow overriding
>> > - cast
>> > - day - generally defined as `extract(day from ?1)`
>> > - extract
>> > - hour - generally defined as `extract(hour from ?1)`
>> > - minute - generally defined as `extract(minute from ?1)`
>> > - month - generally defined as `extract(month from ?1)`
>> > - nullif - not technically a function, but supported as such to
>> > allow
>> > overriding
>> > - second - generally defined as `extract(second from ?1)`
>> > - str - generally defined as `cast(?1 as CHAR )`
>> > - year - generally defined as `extract(year from ?1)`
>> >
>> >
>> > Additions/subtractions anyone would like to discuss?
>> >
>> > One question I has was in regards to str being defined as `cast(?1 as
>> > CHAR
>> > )` by default - specifically using CHAR instead of VARCHAR. Some
>> > databases
>> > apply padding for the size of the datatype when casting a numeric to a
>> > CHAR
>> > which is not an unreasonable thing to do.
>> > _______________________________________________
>> > hibernate-dev mailing list
>> > hibernate-dev at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
More information about the hibernate-dev
mailing list