Skip to content

Commit 48b4eb5

Browse files
committed
HHH-19440 - Deprecate exposing of LockOptions
1 parent 8544c57 commit 48b4eb5

File tree

65 files changed

+1898
-771
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1898
-771
lines changed

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

Lines changed: 55 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,29 @@
44
*/
55
package org.hibernate.community.dialect;
66

7-
import java.sql.DatabaseMetaData;
8-
import java.sql.ResultSet;
9-
import java.sql.SQLException;
10-
import java.sql.Types;
11-
import java.time.temporal.ChronoField;
12-
import java.time.temporal.TemporalAccessor;
13-
import java.util.Calendar;
14-
import java.util.Date;
15-
import java.util.Map;
16-
import java.util.TimeZone;
17-
import java.util.regex.Matcher;
18-
import java.util.regex.Pattern;
19-
7+
import jakarta.persistence.GenerationType;
8+
import jakarta.persistence.TemporalType;
9+
import jakarta.persistence.Timeout;
2010
import org.checkerframework.checker.nullness.qual.Nullable;
2111
import org.hibernate.LockMode;
2212
import org.hibernate.LockOptions;
2313
import org.hibernate.PessimisticLockException;
2414
import org.hibernate.QueryTimeoutException;
15+
import org.hibernate.Timeouts;
2516
import org.hibernate.boot.model.FunctionContributions;
2617
import org.hibernate.boot.model.TypeContributions;
27-
import org.hibernate.dialect.*;
18+
import org.hibernate.dialect.DatabaseVersion;
19+
import org.hibernate.dialect.Dialect;
20+
import org.hibernate.dialect.DmlTargetColumnQualifierSupport;
21+
import org.hibernate.dialect.FunctionalDependencyAnalysisSupport;
22+
import org.hibernate.dialect.FunctionalDependencyAnalysisSupportImpl;
23+
import org.hibernate.dialect.NationalizationSupport;
24+
import org.hibernate.dialect.NullOrdering;
25+
import org.hibernate.dialect.PostgreSQLDriverKind;
26+
import org.hibernate.dialect.RowLockStrategy;
27+
import org.hibernate.dialect.SimpleDatabaseVersion;
28+
import org.hibernate.dialect.SpannerDialect;
29+
import org.hibernate.dialect.TimeZoneSupport;
2830
import org.hibernate.dialect.aggregate.AggregateSupport;
2931
import org.hibernate.dialect.aggregate.CockroachDBAggregateSupport;
3032
import org.hibernate.dialect.function.CommonFunctionFactory;
@@ -58,9 +60,8 @@
5860
import org.hibernate.internal.util.JdbcExceptionHelper;
5961
import org.hibernate.internal.util.StringHelper;
6062
import org.hibernate.query.SemanticException;
61-
import org.hibernate.query.sqm.IntervalType;
62-
import org.hibernate.dialect.NullOrdering;
6363
import org.hibernate.query.common.TemporalUnit;
64+
import org.hibernate.query.sqm.IntervalType;
6465
import org.hibernate.query.sqm.produce.function.StandardFunctionArgumentTypeResolvers;
6566
import org.hibernate.service.ServiceRegistry;
6667
import org.hibernate.sql.ast.SqlAstTranslator;
@@ -83,9 +84,18 @@
8384
import org.hibernate.type.descriptor.sql.spi.DdlTypeRegistry;
8485
import org.hibernate.type.spi.TypeConfiguration;
8586

86-
87-
import jakarta.persistence.GenerationType;
88-
import jakarta.persistence.TemporalType;
87+
import java.sql.DatabaseMetaData;
88+
import java.sql.ResultSet;
89+
import java.sql.SQLException;
90+
import java.sql.Types;
91+
import java.time.temporal.ChronoField;
92+
import java.time.temporal.TemporalAccessor;
93+
import java.util.Calendar;
94+
import java.util.Date;
95+
import java.util.Map;
96+
import java.util.TimeZone;
97+
import java.util.regex.Matcher;
98+
import java.util.regex.Pattern;
8999

90100
import static org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor.extractUsingTemplate;
91101
import static org.hibernate.query.common.TemporalUnit.DAY;
@@ -1009,14 +1019,38 @@ public String getForUpdateString(String aliases, LockOptions lockOptions) {
10091019
};
10101020
}
10111021

1022+
private String withTimeout(String lockString, Timeout timeout) {
1023+
return withTimeout( lockString, timeout.milliseconds() );
1024+
}
1025+
10121026
private String withTimeout(String lockString, int timeout) {
10131027
return switch ( timeout ) {
1014-
case LockOptions.NO_WAIT -> supportsNoWait() ? lockString + " nowait" : lockString;
1015-
case LockOptions.SKIP_LOCKED -> supportsSkipLocked() ? lockString + " skip locked" : lockString;
1028+
case Timeouts.NO_WAIT_MILLI -> supportsNoWait() ? lockString + " nowait" : lockString;
1029+
case Timeouts.SKIP_LOCKED_MILLI -> supportsSkipLocked() ? lockString + " skip locked" : lockString;
10161030
default -> lockString;
10171031
};
10181032
}
10191033

1034+
@Override
1035+
public String getWriteLockString(Timeout timeout) {
1036+
return withTimeout( getForUpdateString(), timeout );
1037+
}
1038+
1039+
@Override
1040+
public String getWriteLockString(String aliases, Timeout timeout) {
1041+
return withTimeout( getForUpdateString( aliases ), timeout );
1042+
}
1043+
1044+
@Override
1045+
public String getReadLockString(Timeout timeout) {
1046+
return withTimeout(" for share", timeout );
1047+
}
1048+
1049+
@Override
1050+
public String getReadLockString(String aliases, Timeout timeout) {
1051+
return withTimeout(" for share of " + aliases, timeout );
1052+
}
1053+
10201054
@Override
10211055
public String getWriteLockString(int timeout) {
10221056
return withTimeout( getForUpdateString(), timeout );

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

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,14 @@
44
*/
55
package org.hibernate.community.dialect;
66

7-
import java.sql.CallableStatement;
8-
import java.sql.DatabaseMetaData;
9-
import java.sql.ResultSet;
10-
import java.sql.SQLException;
11-
import java.sql.Types;
12-
import java.time.Instant;
13-
import java.time.LocalDate;
14-
import java.time.LocalDateTime;
15-
import java.time.LocalTime;
16-
import java.time.OffsetDateTime;
17-
import java.time.OffsetTime;
18-
import java.time.ZonedDateTime;
19-
import java.time.temporal.TemporalAccessor;
20-
import java.util.Calendar;
21-
import java.util.Date;
22-
import java.util.List;
23-
import java.util.TimeZone;
24-
25-
import org.hibernate.LockOptions;
7+
import jakarta.persistence.TemporalType;
8+
import jakarta.persistence.Timeout;
9+
import org.hibernate.Timeouts;
2610
import org.hibernate.boot.model.FunctionContributions;
2711
import org.hibernate.boot.model.TypeContributions;
2812
import org.hibernate.community.dialect.sequence.LegacyDB2SequenceSupport;
2913
import org.hibernate.dialect.DB2Dialect;
3014
import org.hibernate.dialect.DB2GetObjectExtractor;
31-
import org.hibernate.dialect.type.DB2StructJdbcType;
3215
import org.hibernate.dialect.DatabaseVersion;
3316
import org.hibernate.dialect.Dialect;
3417
import org.hibernate.dialect.DmlTargetColumnQualifierSupport;
@@ -49,6 +32,7 @@
4932
import org.hibernate.dialect.pagination.LimitHandler;
5033
import org.hibernate.dialect.sequence.DB2SequenceSupport;
5134
import org.hibernate.dialect.sequence.SequenceSupport;
35+
import org.hibernate.dialect.type.DB2StructJdbcType;
5236
import org.hibernate.dialect.unique.AlterTableUniqueIndexDelegate;
5337
import org.hibernate.dialect.unique.SkipNullableUniqueDelegate;
5438
import org.hibernate.dialect.unique.UniqueDelegate;
@@ -70,9 +54,9 @@
7054
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
7155
import org.hibernate.procedure.internal.DB2CallableStatementSupport;
7256
import org.hibernate.procedure.spi.CallableStatementSupport;
57+
import org.hibernate.query.common.TemporalUnit;
7358
import org.hibernate.query.sqm.CastType;
7459
import org.hibernate.query.sqm.IntervalType;
75-
import org.hibernate.query.common.TemporalUnit;
7660
import org.hibernate.query.sqm.mutation.internal.cte.CteInsertStrategy;
7761
import org.hibernate.query.sqm.mutation.internal.cte.CteMutationStrategy;
7862
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy;
@@ -118,7 +102,23 @@
118102
import org.hibernate.type.descriptor.sql.spi.DdlTypeRegistry;
119103
import org.hibernate.type.spi.TypeConfiguration;
120104

121-
import jakarta.persistence.TemporalType;
105+
import java.sql.CallableStatement;
106+
import java.sql.DatabaseMetaData;
107+
import java.sql.ResultSet;
108+
import java.sql.SQLException;
109+
import java.sql.Types;
110+
import java.time.Instant;
111+
import java.time.LocalDate;
112+
import java.time.LocalDateTime;
113+
import java.time.LocalTime;
114+
import java.time.OffsetDateTime;
115+
import java.time.OffsetTime;
116+
import java.time.ZonedDateTime;
117+
import java.time.temporal.TemporalAccessor;
118+
import java.util.Calendar;
119+
import java.util.Date;
120+
import java.util.List;
121+
import java.util.TimeZone;
122122

123123
import static org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor.extractUsingTemplate;
124124
import static org.hibernate.type.SqlTypes.BINARY;
@@ -781,16 +781,30 @@ public String getForUpdateSkipLockedString(String aliases) {
781781
return getForUpdateSkipLockedString();
782782
}
783783

784+
@Override
785+
public String getWriteLockString(Timeout timeout) {
786+
return timeout.milliseconds() == Timeouts.SKIP_LOCKED_MILLI && supportsSkipLocked()
787+
? FOR_UPDATE_SKIP_LOCKED_SQL
788+
: FOR_UPDATE_SQL;
789+
}
790+
791+
@Override
792+
public String getReadLockString(Timeout timeout) {
793+
return timeout.milliseconds() == Timeouts.SKIP_LOCKED_MILLI && supportsSkipLocked()
794+
? FOR_SHARE_SKIP_LOCKED_SQL
795+
: FOR_SHARE_SQL;
796+
}
797+
784798
@Override
785799
public String getWriteLockString(int timeout) {
786-
return timeout == LockOptions.SKIP_LOCKED && supportsSkipLocked()
800+
return timeout == Timeouts.SKIP_LOCKED_MILLI && supportsSkipLocked()
787801
? FOR_UPDATE_SKIP_LOCKED_SQL
788802
: FOR_UPDATE_SQL;
789803
}
790804

791805
@Override
792806
public String getReadLockString(int timeout) {
793-
return timeout == LockOptions.SKIP_LOCKED && supportsSkipLocked()
807+
return timeout == Timeouts.SKIP_LOCKED_MILLI && supportsSkipLocked()
794808
? FOR_SHARE_SKIP_LOCKED_SQL
795809
: FOR_SHARE_SQL;
796810
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.sql.Types;
1010
import java.util.Locale;
1111

12+
import jakarta.persistence.Timeout;
1213
import org.hibernate.boot.model.FunctionContributions;
1314
import org.hibernate.boot.model.TypeContributions;
1415
import org.hibernate.dialect.DB2Dialect;
@@ -577,6 +578,16 @@ public String getForUpdateString() {
577578
return " for update with rs";
578579
}
579580

581+
@Override
582+
public String getWriteLockString(Timeout timeout) {
583+
return " for update with rs";
584+
}
585+
586+
@Override
587+
public String getReadLockString(Timeout timeout) {
588+
return " for read only with rs";
589+
}
590+
580591
@Override
581592
public String getWriteLockString(int timeout) {
582593
return " for update with rs";

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.sql.SQLException;
99
import java.sql.Types;
1010

11+
import jakarta.persistence.Timeout;
1112
import org.hibernate.boot.model.FunctionContributions;
1213
import org.hibernate.boot.model.TypeContributions;
1314
import org.hibernate.dialect.DB2Dialect;
@@ -593,6 +594,16 @@ public String getForUpdateString() {
593594
return " for update with rs";
594595
}
595596

597+
@Override
598+
public String getWriteLockString(Timeout timeout) {
599+
return " for update with rs";
600+
}
601+
602+
@Override
603+
public String getReadLockString(Timeout timeout) {
604+
return " for read only with rs";
605+
}
606+
596607
@Override
597608
public String getWriteLockString(int timeout) {
598609
return " for update with rs";

0 commit comments

Comments
 (0)