|
50 | 50 | import org.hibernate.query.sqm.mutation.internal.temptable.LocalTemporaryTableMutationStrategy; |
51 | 51 | import org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy; |
52 | 52 | import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy; |
| 53 | +import org.hibernate.query.sqm.produce.function.StandardFunctionArgumentTypeResolvers; |
53 | 54 | import org.hibernate.query.sqm.sql.SqmTranslator; |
54 | 55 | import org.hibernate.query.sqm.sql.SqmTranslatorFactory; |
55 | 56 | import org.hibernate.query.sqm.sql.StandardSqmTranslatorFactory; |
|
68 | 69 | import org.hibernate.tool.schema.internal.StandardForeignKeyExporter; |
69 | 70 | import org.hibernate.tool.schema.spi.Exporter; |
70 | 71 | import org.hibernate.type.JavaObjectType; |
| 72 | +import org.hibernate.type.StandardBasicTypes; |
71 | 73 | import org.hibernate.type.descriptor.jdbc.ObjectNullAsBinaryTypeJdbcType; |
72 | 74 | import org.hibernate.type.descriptor.sql.DdlType; |
73 | 75 | import org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType; |
74 | 76 | import org.hibernate.type.descriptor.sql.spi.DdlTypeRegistry; |
75 | 77 | import org.hibernate.type.spi.TypeConfiguration; |
76 | 78 |
|
77 | 79 | import static org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor.extractUsingTemplate; |
| 80 | +import static org.hibernate.query.sqm.produce.function.FunctionParameterType.STRING; |
78 | 81 | import static org.hibernate.type.SqlTypes.BIGINT; |
79 | 82 | import static org.hibernate.type.SqlTypes.BINARY; |
80 | 83 | import static org.hibernate.type.SqlTypes.FLOAT; |
@@ -294,6 +297,19 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio |
294 | 297 | } |
295 | 298 | functionContributions.getFunctionRegistry().register( "least", new CaseLeastGreatestEmulation( true ) ); |
296 | 299 | functionContributions.getFunctionRegistry().register( "greatest", new CaseLeastGreatestEmulation( false ) ); |
| 300 | + functionContributions.getFunctionRegistry().namedDescriptorBuilder( "matches" ) |
| 301 | + .setInvariantType( functionContributions.getTypeConfiguration() |
| 302 | + .getBasicTypeRegistry() |
| 303 | + .resolve( StandardBasicTypes.STRING ) ) |
| 304 | + .setExactArgumentCount( 2 ) |
| 305 | + .setArgumentTypeResolver( |
| 306 | + StandardFunctionArgumentTypeResolvers.impliedOrInvariant( |
| 307 | + functionContributions.getTypeConfiguration(), |
| 308 | + STRING |
| 309 | + ) |
| 310 | + ) |
| 311 | + .setArgumentListSignature( "(STRING string, STRING length)" ) |
| 312 | + .register(); |
297 | 313 | if ( supportsWindowFunctions() ) { |
298 | 314 | functionFactory.windowFunctions(); |
299 | 315 | } |
|
0 commit comments