[hibernate-dev] 6.0 - formalized standard functions

Steve Ebersole steve at hibernate.org
Tue May 30 08:02:26 EDT 2017


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.

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