Package org.hibernate.dialect.function
Class PostgreSQLTruncRoundFunction
- java.lang.Object
-
- org.hibernate.query.sqm.function.AbstractSqmFunctionDescriptor
-
- org.hibernate.dialect.function.PostgreSQLTruncRoundFunction
-
- All Implemented Interfaces:
FunctionRenderingSupport,SqmFunctionDescriptor
public class PostgreSQLTruncRoundFunction extends AbstractSqmFunctionDescriptor implements FunctionRenderingSupport
PostgreSQL only supports the two-argumenttruncandroundfunctions with the following signatures:trunc(numeric, integer)round(numeric, integer)
This custom function falls back to using
flooras a workaround only when necessary, e.g. when there are 2 arguments to the function and either:- The first argument is not of type
numeric
or
- The dialect doesn't support the two-argument
truncfunction
- See Also:
- PostgreSQL documentation
-
-
Constructor Summary
Constructors Constructor Description PostgreSQLTruncRoundFunction(String name, boolean supportsTwoArguments)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected <T> SelfRenderingSqmFunction<T>generateSqmFunctionExpression(List<? extends SqmTypedNode<?>> arguments, ReturnableType<T> impliedResultType, QueryEngine queryEngine, TypeConfiguration typeConfiguration)Return an SQM node or subtree representing an invocation of this function with the given arguments.StringgetArgumentListSignature()voidrender(SqlAppender sqlAppender, List<? extends SqlAstNode> arguments, SqlAstTranslator<?> walker)-
Methods inherited from class org.hibernate.query.sqm.function.AbstractSqmFunctionDescriptor
generateAggregateSqmExpression, generateOrderedSetAggregateSqmExpression, generateSqmAggregateFunctionExpression, generateSqmExpression, generateSqmOrderedSetAggregateFunctionExpression, generateSqmWindowFunctionExpression, generateWindowSqmExpression, getArgumentsValidator, getArgumentTypeResolver, getName, getReturnSignature, getReturnTypeResolver, getSignature
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.query.sqm.function.FunctionRenderingSupport
render, render, render
-
Methods inherited from interface org.hibernate.query.sqm.function.SqmFunctionDescriptor
alwaysIncludesParentheses, generateSqmExpression, generateSqmExpression, getFunctionKind
-
-
-
-
Constructor Detail
-
PostgreSQLTruncRoundFunction
public PostgreSQLTruncRoundFunction(String name, boolean supportsTwoArguments)
-
-
Method Detail
-
render
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> arguments, SqlAstTranslator<?> walker)
- Specified by:
renderin interfaceFunctionRenderingSupport
-
getArgumentListSignature
public String getArgumentListSignature()
- Overrides:
getArgumentListSignaturein classAbstractSqmFunctionDescriptor
-
generateSqmFunctionExpression
protected <T> SelfRenderingSqmFunction<T> generateSqmFunctionExpression(List<? extends SqmTypedNode<?>> arguments, ReturnableType<T> impliedResultType, QueryEngine queryEngine, TypeConfiguration typeConfiguration)
Description copied from class:AbstractSqmFunctionDescriptorReturn an SQM node or subtree representing an invocation of this function with the given arguments. This method may be overridden in the case of function descriptors that wish to customize creation of the node.- Specified by:
generateSqmFunctionExpressionin classAbstractSqmFunctionDescriptor- Parameters:
arguments- the arguments of the function invocationimpliedResultType- the function return type as inferred from its usage
-
-