clean up old code + deprecate LockOptions.getAliasLockIterator()
This commit is contained in:
parent
cf51b92aeb
commit
7740121449
|
@ -12,7 +12,6 @@ import java.sql.Types;
|
|||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
|
@ -639,12 +638,9 @@ public class CockroachLegacyDialect extends Dialect {
|
|||
*/
|
||||
if ( aliases.isEmpty() ) {
|
||||
LockMode lockMode = lockOptions.getLockMode();
|
||||
final Iterator<Map.Entry<String, LockMode>> itr = lockOptions.getAliasLockIterator();
|
||||
while ( itr.hasNext() ) {
|
||||
for ( Map.Entry<String, LockMode> entry : lockOptions.getAliasSpecificLocks() ) {
|
||||
// seek the highest lock mode
|
||||
final Map.Entry<String, LockMode> entry = itr.next();
|
||||
final LockMode lm = entry.getValue();
|
||||
if ( lm.greaterThan( lockMode ) ) {
|
||||
if ( entry.getValue().greaterThan(lockMode) ) {
|
||||
aliases = entry.getKey();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@ public class LockOptions implements Serializable {
|
|||
/**
|
||||
* Represents LockMode.UPGRADE (will wait forever for lock and scope of false meaning only entity is locked).
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static final LockOptions UPGRADE = new LockOptions(LockMode.PESSIMISTIC_WRITE);
|
||||
|
||||
/**
|
||||
|
@ -198,7 +197,9 @@ public class LockOptions implements Serializable {
|
|||
* Iterator for accessing Alias (key) and LockMode (value) as Map.Entry.
|
||||
*
|
||||
* @return Iterator for accessing the Map.Entry's
|
||||
* @deprecated use {@link #getAliasSpecificLocks()}
|
||||
*/
|
||||
@Deprecated
|
||||
public Iterator<Map.Entry<String,LockMode>> getAliasLockIterator() {
|
||||
return getAliasSpecificLocks().iterator();
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ import java.sql.CallableStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Types;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.hibernate.type.SqlTypes.*;
|
||||
|
@ -219,14 +218,11 @@ public abstract class AbstractTransactSQLDialect extends Dialect {
|
|||
@Override
|
||||
public String applyLocksToSql(String sql, LockOptions aliasedLockOptions, Map<String, String[]> keyColumnNames) {
|
||||
// TODO: merge additional lock options support in Dialect.applyLocksToSql
|
||||
final Iterator itr = aliasedLockOptions.getAliasLockIterator();
|
||||
final StringBuilder buffer = new StringBuilder( sql );
|
||||
|
||||
while ( itr.hasNext() ) {
|
||||
final Map.Entry entry = (Map.Entry) itr.next();
|
||||
final LockMode lockMode = (LockMode) entry.getValue();
|
||||
for ( Map.Entry<String, LockMode> entry: aliasedLockOptions.getAliasSpecificLocks() ) {
|
||||
final LockMode lockMode = entry.getValue();
|
||||
if ( lockMode.greaterThan( LockMode.READ ) ) {
|
||||
final String alias = (String) entry.getKey();
|
||||
final String alias = entry.getKey();
|
||||
int start = -1;
|
||||
int end = -1;
|
||||
if ( sql.endsWith( " " + alias ) ) {
|
||||
|
|
|
@ -12,7 +12,6 @@ import java.sql.Types;
|
|||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
|
@ -636,12 +635,9 @@ public class CockroachDialect extends Dialect {
|
|||
*/
|
||||
if ( aliases.isEmpty() ) {
|
||||
LockMode lockMode = lockOptions.getLockMode();
|
||||
final Iterator<Map.Entry<String, LockMode>> itr = lockOptions.getAliasLockIterator();
|
||||
while ( itr.hasNext() ) {
|
||||
for ( Map.Entry<String, LockMode> entry : lockOptions.getAliasSpecificLocks() ) {
|
||||
// seek the highest lock mode
|
||||
final Map.Entry<String, LockMode> entry = itr.next();
|
||||
final LockMode lm = entry.getValue();
|
||||
if ( lm.greaterThan( lockMode ) ) {
|
||||
if ( entry.getValue().greaterThan(lockMode) ) {
|
||||
aliases = entry.getKey();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1821,12 +1821,10 @@ public abstract class Dialect implements ConversionContext {
|
|||
*/
|
||||
public String getForUpdateString(String aliases, LockOptions lockOptions) {
|
||||
LockMode lockMode = lockOptions.getLockMode();
|
||||
final Iterator<Map.Entry<String, LockMode>> itr = lockOptions.getAliasLockIterator();
|
||||
while ( itr.hasNext() ) {
|
||||
for ( Map.Entry<String, LockMode> entry : lockOptions.getAliasSpecificLocks() ) {
|
||||
// seek the highest lock mode
|
||||
final Map.Entry<String, LockMode>entry = itr.next();
|
||||
final LockMode lm = entry.getValue();
|
||||
if ( lm.greaterThan( lockMode ) ) {
|
||||
if ( lm.greaterThan(lockMode) ) {
|
||||
lockMode = lm;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,9 +14,7 @@ import java.sql.Types;
|
|||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import jakarta.persistence.TemporalType;
|
||||
|
@ -636,12 +634,9 @@ public class PostgreSQLDialect extends Dialect {
|
|||
*/
|
||||
if ( aliases.isEmpty() ) {
|
||||
LockMode lockMode = lockOptions.getLockMode();
|
||||
final Iterator<Map.Entry<String, LockMode>> itr = lockOptions.getAliasLockIterator();
|
||||
while ( itr.hasNext() ) {
|
||||
for ( Map.Entry<String, LockMode> entry : lockOptions.getAliasSpecificLocks() ) {
|
||||
// seek the highest lock mode
|
||||
final Map.Entry<String, LockMode> entry = itr.next();
|
||||
final LockMode lm = entry.getValue();
|
||||
if ( lm.greaterThan( lockMode ) ) {
|
||||
if ( entry.getValue().greaterThan(lockMode) ) {
|
||||
aliases = entry.getKey();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
*/
|
||||
package org.hibernate.sql;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.LockMode;
|
||||
|
@ -27,38 +26,37 @@ public class ForUpdateFragment {
|
|||
public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map<String, String[]> keyColumnNames) throws QueryException {
|
||||
this.dialect = dialect;
|
||||
LockMode upgradeType = null;
|
||||
Iterator<Map.Entry<String, LockMode>> iter = lockOptions.getAliasLockIterator();
|
||||
this.lockOptions = lockOptions;
|
||||
|
||||
if ( !iter.hasNext()) { // no tables referenced
|
||||
if ( !lockOptions.getAliasSpecificLocks().iterator().hasNext() ) { // no tables referenced
|
||||
final LockMode lockMode = lockOptions.getLockMode();
|
||||
if ( LockMode.READ.lessThan( lockMode ) ) {
|
||||
if ( LockMode.READ.lessThan(lockMode) ) {
|
||||
upgradeType = lockMode;
|
||||
}
|
||||
}
|
||||
|
||||
while ( iter.hasNext() ) {
|
||||
final Map.Entry<String, LockMode> me = iter.next();
|
||||
final LockMode lockMode = me.getValue();
|
||||
if ( LockMode.READ.lessThan( lockMode ) ) {
|
||||
final String tableAlias = me.getKey();
|
||||
if ( dialect.getWriteRowLockStrategy() == RowLockStrategy.COLUMN ) {
|
||||
String[] keyColumns = keyColumnNames.get( tableAlias ); //use the id column alias
|
||||
if ( keyColumns == null ) {
|
||||
throw new IllegalArgumentException( "alias not found: " + tableAlias );
|
||||
else {
|
||||
for ( Map.Entry<String, LockMode> me : lockOptions.getAliasSpecificLocks() ) {
|
||||
final LockMode lockMode = me.getValue();
|
||||
if ( LockMode.READ.lessThan(lockMode) ) {
|
||||
final String tableAlias = me.getKey();
|
||||
if ( dialect.getWriteRowLockStrategy() == RowLockStrategy.COLUMN ) {
|
||||
String[] keyColumns = keyColumnNames.get( tableAlias ); //use the id column alias
|
||||
if ( keyColumns == null ) {
|
||||
throw new IllegalArgumentException( "alias not found: " + tableAlias );
|
||||
}
|
||||
keyColumns = StringHelper.qualify( tableAlias, keyColumns );
|
||||
for ( String keyColumn : keyColumns ) {
|
||||
addTableAlias( keyColumn );
|
||||
}
|
||||
}
|
||||
keyColumns = StringHelper.qualify( tableAlias, keyColumns );
|
||||
for ( String keyColumn : keyColumns ) {
|
||||
addTableAlias( keyColumn );
|
||||
else {
|
||||
addTableAlias( tableAlias );
|
||||
}
|
||||
if ( upgradeType != null && lockMode != upgradeType ) {
|
||||
throw new QueryException( "mixed LockModes" );
|
||||
}
|
||||
upgradeType = lockMode;
|
||||
}
|
||||
else {
|
||||
addTableAlias( tableAlias );
|
||||
}
|
||||
if ( upgradeType != null && lockMode != upgradeType ) {
|
||||
throw new QueryException( "mixed LockModes" );
|
||||
}
|
||||
upgradeType = lockMode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue