Skip to content

Commit ae3c88a

Browse files
committed
HHH-17335 Add array_prepend and array_append functions
1 parent 24fa18f commit ae3c88a

39 files changed

+588
-36
lines changed

documentation/src/main/asciidoc/userguide/chapters/query/hql/QueryLanguage.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,8 @@ The following functions deal with SQL array types, which are not supported on ev
11231123
| `array_position()` | Determines the position of an element in an array
11241124
| `array_length()` | Determines the length of an array
11251125
| `array_concat()` | Concatenates array with each other in order
1126+
| `array_prepend()` | Prepends element to array
1127+
| `array_append()` | Appends element to array
11261128
| `array_contains_all()` | Determines if one array holds all elements of another array
11271129
| `array_contains_all_nullable()` | Determines if one array holds all elements of another array, supporting null elements
11281130
| `array_contains_any()` | Determines if one array holds at least one element of another array
@@ -1204,6 +1206,32 @@ include::{array-example-dir-hql}/ArrayConcatTest.java[tags=hql-array-concat-exam
12041206
----
12051207
====
12061208
1209+
[[hql-array-prepend-functions]]
1210+
===== `array_prepend()`
1211+
1212+
Prepends element to array. Returns `null` if the array argument is `null`.
1213+
1214+
[[hql-array-prepend-example]]
1215+
====
1216+
[source, JAVA, indent=0]
1217+
----
1218+
include::{array-example-dir-hql}/ArrayPrependTest.java[tags=hql-array-prepend-example]
1219+
----
1220+
====
1221+
1222+
[[hql-array-append-functions]]
1223+
===== `array_append()`
1224+
1225+
Appends element to array. Returns `null` if the array argument is `null`.
1226+
1227+
[[hql-array-append-example]]
1228+
====
1229+
[source, JAVA, indent=0]
1230+
----
1231+
include::{array-example-dir-hql}/ArrayAppendTest.java[tags=hql-array-append-example]
1232+
----
1233+
====
1234+
12071235
[[hql-array-contains-quantified-functions]]
12081236
===== `array_contains_all()` and `array_contains_any()`
12091237

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CockroachLegacyDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
468468
functionFactory.arrayPosition_postgresql();
469469
functionFactory.arrayLength_cardinality();
470470
functionFactory.arrayConcat_postgresql();
471+
functionFactory.arrayPrepend_postgresql();
472+
functionFactory.arrayAppend_postgresql();
471473
functionFactory.arrayContainsAll_operator();
472474
functionFactory.arrayContainsAny_operator();
473475
functionFactory.arrayContainsAllNullable_operator();

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/H2LegacyDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
376376
functionFactory.arrayContainsNull();
377377
functionFactory.arrayLength_cardinality();
378378
functionFactory.arrayConcat_operator();
379+
functionFactory.arrayPrepend_operator();
380+
functionFactory.arrayAppend_operator();
379381
functionFactory.arrayContainsAll_h2();
380382
functionFactory.arrayContainsAny_h2();
381383
functionFactory.arrayContainsAllNullable_h2();

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/HSQLLegacyDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
254254
functionFactory.arrayPosition_hsql();
255255
functionFactory.arrayLength_cardinality();
256256
functionFactory.arrayConcat_operator();
257+
functionFactory.arrayPrepend_operator();
258+
functionFactory.arrayAppend_operator();
257259
functionFactory.arrayContainsAll_hsql();
258260
functionFactory.arrayContainsAny_hsql();
259261
functionFactory.arrayContainsAllNullable_hsql();

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/OracleLegacyDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
290290
functionFactory.arrayPosition_oracle();
291291
functionFactory.arrayLength_oracle();
292292
functionFactory.arrayConcat_oracle();
293+
functionFactory.arrayPrepend_oracle();
294+
functionFactory.arrayAppend_oracle();
293295
functionFactory.arrayContainsAll_oracle();
294296
functionFactory.arrayContainsAny_oracle();
295297
functionFactory.arrayContainsAllNullable_oracle();

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
588588
functionFactory.arrayPosition_postgresql();
589589
functionFactory.arrayLength_cardinality();
590590
functionFactory.arrayConcat_postgresql();
591+
functionFactory.arrayPrepend_postgresql();
592+
functionFactory.arrayAppend_postgresql();
591593
functionFactory.arrayContainsAll_operator();
592594
functionFactory.arrayContainsAny_operator();
593595
functionFactory.arrayContainsAllNullable_operator();

hibernate-core/src/main/java/org/hibernate/dialect/CockroachDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
455455
functionFactory.arrayPosition_postgresql();
456456
functionFactory.arrayLength_cardinality();
457457
functionFactory.arrayConcat_postgresql();
458+
functionFactory.arrayPrepend_postgresql();
459+
functionFactory.arrayAppend_postgresql();
458460
functionFactory.arrayContainsAll_operator();
459461
functionFactory.arrayContainsAny_operator();
460462
functionFactory.arrayContainsAllNullable_operator();

hibernate-core/src/main/java/org/hibernate/dialect/H2Dialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
315315
functionFactory.arrayContainsNull();
316316
functionFactory.arrayLength_cardinality();
317317
functionFactory.arrayConcat_operator();
318+
functionFactory.arrayPrepend_operator();
319+
functionFactory.arrayAppend_operator();
318320
functionFactory.arrayContainsAll_h2();
319321
functionFactory.arrayContainsAny_h2();
320322
functionFactory.arrayContainsAllNullable_h2();

hibernate-core/src/main/java/org/hibernate/dialect/HSQLDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
194194
functionFactory.arrayPosition_hsql();
195195
functionFactory.arrayLength_cardinality();
196196
functionFactory.arrayConcat_operator();
197+
functionFactory.arrayPrepend_operator();
198+
functionFactory.arrayAppend_operator();
197199
functionFactory.arrayContainsAll_hsql();
198200
functionFactory.arrayContainsAny_hsql();
199201
functionFactory.arrayContainsAllNullable_hsql();

hibernate-core/src/main/java/org/hibernate/dialect/MySQLSqlAstTranslator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public static String getSqlType(CastTarget castTarget, Dialect dialect) {
4646
}
4747

4848
public static String getSqlType(CastTarget castTarget, SessionFactoryImplementor factory) {
49-
final String sqlType = getSqlTypeName( castTarget, factory );
49+
final String sqlType = getCastTypeName( castTarget, factory );
5050
return getSqlType( castTarget, sqlType, factory.getJdbcServices().getDialect() );
5151
}
5252

0 commit comments

Comments
 (0)