|
60 | 60 | import org.hibernate.query.sqm.mutation.internal.temptable.LocalTemporaryTableMutationStrategy; |
61 | 61 | import org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy; |
62 | 62 | import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy; |
| 63 | +import org.hibernate.query.sqm.produce.function.StandardFunctionArgumentTypeResolvers; |
63 | 64 | import org.hibernate.query.sqm.sql.SqmTranslator; |
64 | 65 | import org.hibernate.query.sqm.sql.SqmTranslatorFactory; |
65 | 66 | import org.hibernate.query.sqm.sql.StandardSqmTranslatorFactory; |
|
79 | 80 | import org.hibernate.tool.schema.internal.StandardTableExporter; |
80 | 81 | import org.hibernate.tool.schema.spi.Exporter; |
81 | 82 | import org.hibernate.type.JavaObjectType; |
| 83 | +import org.hibernate.type.StandardBasicTypes; |
82 | 84 | import org.hibernate.type.descriptor.jdbc.ClobJdbcType; |
83 | 85 | import org.hibernate.type.descriptor.jdbc.ObjectNullAsBinaryTypeJdbcType; |
84 | 86 | import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; |
|
91 | 93 | import jakarta.persistence.TemporalType; |
92 | 94 |
|
93 | 95 | import static org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor.extractUsingTemplate; |
| 96 | +import static org.hibernate.query.sqm.produce.function.FunctionParameterType.STRING; |
94 | 97 | import static org.hibernate.type.SqlTypes.BIGINT; |
95 | 98 | import static org.hibernate.type.SqlTypes.BINARY; |
96 | 99 | import static org.hibernate.type.SqlTypes.FLOAT; |
@@ -349,6 +352,19 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio |
349 | 352 | } |
350 | 353 | functionContributions.getFunctionRegistry().register( "least", new CaseLeastGreatestEmulation( true ) ); |
351 | 354 | functionContributions.getFunctionRegistry().register( "greatest", new CaseLeastGreatestEmulation( false ) ); |
| 355 | + functionContributions.getFunctionRegistry().namedDescriptorBuilder( "matches" ) |
| 356 | + .setInvariantType( functionContributions.getTypeConfiguration() |
| 357 | + .getBasicTypeRegistry() |
| 358 | + .resolve( StandardBasicTypes.STRING ) ) |
| 359 | + .setExactArgumentCount( 2 ) |
| 360 | + .setArgumentTypeResolver( |
| 361 | + StandardFunctionArgumentTypeResolvers.impliedOrInvariant( |
| 362 | + functionContributions.getTypeConfiguration(), |
| 363 | + STRING |
| 364 | + ) |
| 365 | + ) |
| 366 | + .setArgumentListSignature( "(STRING string, STRING length)" ) |
| 367 | + .register(); |
352 | 368 | if ( supportsWindowFunctions() ) { |
353 | 369 | functionFactory.windowFunctions(); |
354 | 370 | } |
|
0 commit comments