Skip to content

Commit c83218e

Browse files
committed
Fix MariaDB 10.6 UUID in aggregate support and skip some tests that run into a MariaDB bug
1 parent bca9380 commit c83218e

17 files changed

+53
-2
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/aggregate/MySQLAggregateSupport.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,11 @@ private String jsonCustomWriteExpression(String customWriteExpression, JdbcMappi
192192
if ( uuidFunctions ) {
193193
return "bin_to_uuid(" + customWriteExpression + ")";
194194
}
195+
else if ( jsonType ) {
196+
return "insert(insert(insert(insert(lower(hex(" + customWriteExpression + ")),21,0,'-'),17,0,'-'),13,0,'-'),9,0,'-')";
197+
}
195198
else {
196-
return "regexp_replace(lower(hex(" + customWriteExpression + ")),'^(.{8})(.{4})(.{4})(.{4})(.{12})$','$1-$2-$3-$4-$5')";
199+
return "regexp_replace(lower(hex(" + customWriteExpression + ")),'^(.{8})(.{4})(.{4})(.{4})(.{12})$','\\\\1-\\\\2-\\\\3-\\\\4-\\\\5')";
197200
}
198201
}
199202
// Fall-through intended

hibernate-core/src/main/java/org/hibernate/dialect/sql/ast/MariaDBSqlAstTranslator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,8 @@ public void visitOffsetFetchClause(QueryPart queryPart) {
281281
protected void renderComparison(Expression lhs, ComparisonOperator operator, Expression rhs) {
282282
final JdbcMappingContainer lhsExpressionType = lhs.getExpressionType();
283283
if ( lhsExpressionType != null && lhsExpressionType.getJdbcTypeCount() == 1
284-
&& lhsExpressionType.getSingleJdbcMapping().getJdbcType().isJson() ) {
284+
&& lhsExpressionType.getSingleJdbcMapping().getJdbcType().isJson()
285+
&& getDialect().getVersion().isSameOrAfter( 10, 7 ) ) {
285286
switch ( operator ) {
286287
case DISTINCT_FROM:
287288
appendSql( "case when json_equals(" );

hibernate-core/src/test/java/org/hibernate/orm/test/type/BasicListTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.hibernate.dialect.Dialect;
1313
import org.hibernate.dialect.HANADialect;
1414
import org.hibernate.dialect.HSQLDialect;
15+
import org.hibernate.dialect.MariaDBDialect;
1516
import org.hibernate.dialect.MySQLDialect;
1617
import org.hibernate.dialect.OracleDialect;
1718
import org.hibernate.dialect.SQLServerDialect;
@@ -101,6 +102,8 @@ public void testQueryById(SessionFactoryScope scope) {
101102
}
102103

103104
@Test
105+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
106+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
104107
public void testQuery(SessionFactoryScope scope) {
105108
scope.inSession( em -> {
106109
TypedQuery<TableWithIntegerList> tq = em.createNamedQuery( "TableWithIntegerList.JPQL.getByData", TableWithIntegerList.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/BasicSortedSetTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.hibernate.dialect.Dialect;
1414
import org.hibernate.dialect.HANADialect;
1515
import org.hibernate.dialect.HSQLDialect;
16+
import org.hibernate.dialect.MariaDBDialect;
1617
import org.hibernate.dialect.MySQLDialect;
1718
import org.hibernate.dialect.OracleDialect;
1819
import org.hibernate.dialect.SQLServerDialect;
@@ -102,6 +103,8 @@ public void testQueryById(SessionFactoryScope scope) {
102103
}
103104

104105
@Test
106+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
107+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
105108
public void testQuery(SessionFactoryScope scope) {
106109
scope.inSession( em -> {
107110
TypedQuery<TableWithIntegerSortedSet> tq = em.createNamedQuery( "TableWithIntegerSortedSet.JPQL.getByData", TableWithIntegerSortedSet.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/BooleanArrayTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -107,6 +108,8 @@ public void testQueryById(SessionFactoryScope scope) {
107108

108109
@Test
109110
@SkipForDialect( dialectClass = OracleDialect.class, reason = "External driver fix required")
111+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
112+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
110113
public void testQuery(SessionFactoryScope scope) {
111114
scope.inSession( em -> {
112115
TypedQuery<TableWithBooleanArrays> tq = em.createNamedQuery( "TableWithBooleanArrays.JPQL.getByData", TableWithBooleanArrays.class );
@@ -164,6 +167,8 @@ public void testNativeQueryUntyped(SessionFactoryScope scope) {
164167

165168
@Test
166169
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsStructuralArrays.class)
170+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
171+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
167172
public void testLiteral(SessionFactoryScope scope) {
168173
scope.inSession( em -> {
169174
final HibernateCriteriaBuilder cb = em.getCriteriaBuilder();

hibernate-core/src/test/java/org/hibernate/orm/test/type/DateArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.hibernate.dialect.Dialect;
1111
import org.hibernate.dialect.HANADialect;
1212
import org.hibernate.dialect.HSQLDialect;
13+
import org.hibernate.dialect.MariaDBDialect;
1314
import org.hibernate.dialect.MySQLDialect;
1415
import org.hibernate.dialect.OracleDialect;
1516
import org.hibernate.dialect.PostgresPlusDialect;
@@ -117,6 +118,8 @@ public void testQueryById(SessionFactoryScope scope) {
117118

118119
@Test
119120
@SkipForDialect(dialectClass = PostgresPlusDialect.class, reason = "Seems that comparing date[] through JDBC is buggy. ERROR: operator does not exist: timestamp without time zone[] = date[]")
121+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
122+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
120123
public void testQuery(SessionFactoryScope scope) {
121124
scope.inSession( em -> {
122125
TypedQuery<TableWithDateArrays> tq = em.createNamedQuery( "TableWithDateArrays.JPQL.getByData", TableWithDateArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/DoubleArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.hibernate.dialect.Dialect;
1010
import org.hibernate.dialect.HANADialect;
1111
import org.hibernate.dialect.HSQLDialect;
12+
import org.hibernate.dialect.MariaDBDialect;
1213
import org.hibernate.dialect.MySQLDialect;
1314
import org.hibernate.dialect.OracleDialect;
1415
import org.hibernate.dialect.SQLServerDialect;
@@ -112,6 +113,8 @@ public void testQueryById(SessionFactoryScope scope) {
112113
}
113114

114115
@Test
116+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
117+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
115118
public void testQuery(SessionFactoryScope scope) {
116119
scope.inSession( em -> {
117120
TypedQuery<TableWithDoubleArrays> tq = em.createNamedQuery( "TableWithDoubleArrays.JPQL.getByData", TableWithDoubleArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/EnumArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.hibernate.dialect.Dialect;
1111
import org.hibernate.dialect.HANADialect;
1212
import org.hibernate.dialect.HSQLDialect;
13+
import org.hibernate.dialect.MariaDBDialect;
1314
import org.hibernate.dialect.MySQLDialect;
1415
import org.hibernate.dialect.OracleDialect;
1516
import org.hibernate.dialect.SQLServerDialect;
@@ -103,6 +104,8 @@ public void testQueryById(SessionFactoryScope scope) {
103104

104105
@Test
105106
@SkipForDialect(dialectClass = AltibaseDialect.class, reason = "When length 0 byte array is inserted, Altibase returns with null")
107+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
108+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
106109
public void testQuery(SessionFactoryScope scope) {
107110
scope.inSession( em -> {
108111
TypedQuery<TableWithEnumArrays> tq = em.createNamedQuery( "TableWithEnumArrays.JPQL.getByData", TableWithEnumArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/EnumSetConverterTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.hibernate.dialect.Dialect;
1313
import org.hibernate.dialect.HANADialect;
1414
import org.hibernate.dialect.HSQLDialect;
15+
import org.hibernate.dialect.MariaDBDialect;
1516
import org.hibernate.dialect.MySQLDialect;
1617
import org.hibernate.dialect.OracleDialect;
1718
import org.hibernate.dialect.SQLServerDialect;
@@ -110,6 +111,8 @@ public void testQueryById(SessionFactoryScope scope) {
110111
}
111112

112113
@Test
114+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
115+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
113116
public void testQuery(SessionFactoryScope scope) {
114117
scope.inSession( em -> {
115118
TypedQuery<TableWithEnumSetConverter> tq = em.createNamedQuery( "TableWithEnumSetConverter.JPQL.getByData", TableWithEnumSetConverter.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/EnumSetTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.hibernate.dialect.Dialect;
1313
import org.hibernate.dialect.HANADialect;
1414
import org.hibernate.dialect.HSQLDialect;
15+
import org.hibernate.dialect.MariaDBDialect;
1516
import org.hibernate.dialect.MySQLDialect;
1617
import org.hibernate.dialect.OracleDialect;
1718
import org.hibernate.dialect.SQLServerDialect;
@@ -103,6 +104,8 @@ public void testQueryById(SessionFactoryScope scope) {
103104
}
104105

105106
@Test
107+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
108+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
106109
public void testQuery(SessionFactoryScope scope) {
107110
scope.inSession( em -> {
108111
TypedQuery<TableWithEnumSet> tq = em.createNamedQuery( "TableWithEnumSet.JPQL.getByData", TableWithEnumSet.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/FloatArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -100,6 +101,8 @@ public void testQueryById(SessionFactoryScope scope) {
100101
}
101102

102103
@Test
104+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
105+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
103106
public void testQuery(SessionFactoryScope scope) {
104107
scope.inSession( em -> {
105108
TypedQuery<TableWithFloatArrays> tq = em.createNamedQuery( "TableWithFloatArrays.JPQL.getByData", TableWithFloatArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/IntegerArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -100,6 +101,8 @@ public void testQueryById(SessionFactoryScope scope) {
100101
}
101102

102103
@Test
104+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
105+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
103106
public void testQuery(SessionFactoryScope scope) {
104107
scope.inSession( em -> {
105108
TypedQuery<TableWithIntegerArrays> tq = em.createNamedQuery( "TableWithIntegerArrays.JPQL.getByData", TableWithIntegerArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/LongArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -105,6 +106,8 @@ public void testQueryById(SessionFactoryScope scope) {
105106
}
106107

107108
@Test
109+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
110+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
108111
public void testQuery(SessionFactoryScope scope) {
109112
scope.inSession( em -> {
110113
TypedQuery<TableWithLongArrays> tq = em.createNamedQuery( "TableWithLongArrays.JPQL.getByData", TableWithLongArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/ShortArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -100,6 +101,8 @@ public void testQueryById(SessionFactoryScope scope) {
100101
}
101102

102103
@Test
104+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
105+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
103106
public void testQuery(SessionFactoryScope scope) {
104107
scope.inSession( em -> {
105108
TypedQuery<TableWithShortArrays> tq = em.createNamedQuery( "TableWithShortArrays.JPQL.getByData", TableWithShortArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/StringArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.dialect.Dialect;
99
import org.hibernate.dialect.HANADialect;
1010
import org.hibernate.dialect.HSQLDialect;
11+
import org.hibernate.dialect.MariaDBDialect;
1112
import org.hibernate.dialect.MySQLDialect;
1213
import org.hibernate.dialect.OracleDialect;
1314
import org.hibernate.dialect.SQLServerDialect;
@@ -100,6 +101,8 @@ public void testQueryById(SessionFactoryScope scope) {
100101
}
101102

102103
@Test
104+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
105+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
103106
public void testQuery(SessionFactoryScope scope) {
104107
scope.inSession( em -> {
105108
TypedQuery<TableWithStringArrays> tq = em.createNamedQuery( "TableWithStringArrays.Native.getById", TableWithStringArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/TimeArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.hibernate.dialect.Dialect;
1111
import org.hibernate.dialect.HANADialect;
1212
import org.hibernate.dialect.HSQLDialect;
13+
import org.hibernate.dialect.MariaDBDialect;
1314
import org.hibernate.dialect.MySQLDialect;
1415
import org.hibernate.dialect.OracleDialect;
1516
import org.hibernate.dialect.SQLServerDialect;
@@ -114,6 +115,8 @@ public void testQueryById(SessionFactoryScope scope) {
114115
}
115116

116117
@Test
118+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
119+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
117120
public void testQuery(SessionFactoryScope scope) {
118121
scope.inSession( em -> {
119122
TypedQuery<TableWithTimeArrays> tq = em.createNamedQuery( "TableWithTimeArrays.JPQL.getByData", TableWithTimeArrays.class );

hibernate-core/src/test/java/org/hibernate/orm/test/type/TimestampArrayTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.hibernate.dialect.Dialect;
1212
import org.hibernate.dialect.HANADialect;
1313
import org.hibernate.dialect.HSQLDialect;
14+
import org.hibernate.dialect.MariaDBDialect;
1415
import org.hibernate.dialect.MySQLDialect;
1516
import org.hibernate.dialect.OracleDialect;
1617
import org.hibernate.dialect.SQLServerDialect;
@@ -119,6 +120,8 @@ public void testQueryById(SessionFactoryScope scope) {
119120
}
120121

121122
@Test
123+
@SkipForDialect(dialectClass = MariaDBDialect.class, majorVersion = 10, minorVersion = 6,
124+
reason = "Bug in MariaDB https://jira.mariadb.org/browse/MDEV-21530")
122125
public void testQuery(SessionFactoryScope scope) {
123126
scope.inSession( em -> {
124127
TypedQuery<TableWithTimestampArrays> tq = em.createNamedQuery( "TableWithTimestampArrays.JPQL.getByData", TableWithTimestampArrays.class );

0 commit comments

Comments
 (0)