mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-12 22:24:47 +00:00
HHH-18560: fix for invalid queries executed on DB2i AS/400 machine
This commit is contained in:
parent
c8ec156456
commit
b91d988683
@ -6,6 +6,7 @@
|
||||
*/
|
||||
package org.hibernate.dialect;
|
||||
|
||||
import org.hibernate.LockOptions;
|
||||
import org.hibernate.boot.model.FunctionContributions;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.identity.DB2IdentityColumnSupport;
|
||||
@ -41,6 +42,9 @@ public class DB2iDialect extends DB2Dialect {
|
||||
private final static DatabaseVersion MINIMUM_VERSION = DatabaseVersion.make( 7, 1 );
|
||||
final static DatabaseVersion DB2_LUW_VERSION = DB2Dialect.MINIMUM_VERSION;
|
||||
|
||||
private static final String FOR_UPDATE_SQL = " for update with rs";
|
||||
private static final String FOR_UPDATE_SKIP_LOCKED_SQL = FOR_UPDATE_SQL + " skip locked data";
|
||||
|
||||
public DB2iDialect(DialectResolutionInfo info) {
|
||||
this( info.makeCopyOrDefault( MINIMUM_VERSION ) );
|
||||
registerKeywords( info );
|
||||
@ -124,6 +128,7 @@ public String getQuerySequencesString() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LimitHandler getLimitHandler() {
|
||||
return getVersion().isSameOrAfter(7, 3)
|
||||
@ -171,4 +176,35 @@ public int rowIdSqlType() {
|
||||
public String getRowIdColumnString(String rowId) {
|
||||
return rowId( rowId ) + " rowid not null generated always";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getForUpdateString() {
|
||||
return FOR_UPDATE_SQL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getForUpdateSkipLockedString() {
|
||||
return supportsSkipLocked()
|
||||
? FOR_UPDATE_SKIP_LOCKED_SQL
|
||||
: FOR_UPDATE_SQL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getForUpdateSkipLockedString(String aliases) {
|
||||
return getForUpdateSkipLockedString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getWriteLockString(int timeout) {
|
||||
return timeout == LockOptions.SKIP_LOCKED && supportsSkipLocked()
|
||||
? FOR_UPDATE_SKIP_LOCKED_SQL
|
||||
: FOR_UPDATE_SQL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadLockString(int timeout) {
|
||||
return timeout == LockOptions.SKIP_LOCKED && supportsSkipLocked()
|
||||
? FOR_UPDATE_SKIP_LOCKED_SQL
|
||||
: FOR_UPDATE_SQL;
|
||||
}
|
||||
}
|
||||
|
@ -60,4 +60,9 @@ protected void renderComparison(Expression lhs, ComparisonOperator operator, Exp
|
||||
public DatabaseVersion getDB2Version() {
|
||||
return DB2_LUW_VERSION;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getForUpdate() {
|
||||
return " for update with rs";
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user