mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-03-07 10:19:36 +00:00
HHH-18740 - Deprecate org.hibernate.dialect.hint
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
This commit is contained in:
parent
044d91411f
commit
b1795a6f67
@ -21,7 +21,6 @@
|
||||
import org.hibernate.boot.model.TypeContributions;
|
||||
import org.hibernate.dialect.*;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.hint.IndexQueryHintHandler;
|
||||
import org.hibernate.dialect.identity.H2FinalTableIdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.H2IdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.IdentityColumnSupport;
|
||||
@ -934,7 +933,7 @@ public int registerResultSetOutParameter(CallableStatement statement, int positi
|
||||
|
||||
@Override
|
||||
public String getQueryHintString(String query, String hints) {
|
||||
return IndexQueryHintHandler.INSTANCE.addQueryHints( query, hints );
|
||||
return addQueryHints( query, hints );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -17,7 +17,6 @@
|
||||
import org.hibernate.cfg.Environment;
|
||||
import org.hibernate.dialect.*;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.hint.IndexQueryHintHandler;
|
||||
import org.hibernate.dialect.identity.IdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.MySQLIdentityColumnSupport;
|
||||
import org.hibernate.dialect.pagination.LimitHandler;
|
||||
@ -864,7 +863,7 @@ public String getEnumTypeDeclaration(String name, String[] values) {
|
||||
public String getQueryHintString(String query, String hints) {
|
||||
return getMySQLVersion().isBefore( 5 )
|
||||
? super.getQueryHintString( query, hints )
|
||||
: IndexQueryHintHandler.INSTANCE.addQueryHints( query, hints );
|
||||
: addQueryHints( query, hints );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -33,7 +33,6 @@
|
||||
import org.hibernate.dialect.Replacer;
|
||||
import org.hibernate.dialect.SelectItemReferenceStrategy;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.hint.IndexQueryHintHandler;
|
||||
import org.hibernate.dialect.identity.IdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.MySQLIdentityColumnSupport;
|
||||
import org.hibernate.dialect.pagination.LimitHandler;
|
||||
@ -407,7 +406,7 @@ public String getEnumTypeDeclaration(String name, String[] values) {
|
||||
|
||||
@Override
|
||||
public String getQueryHintString(String query, String hints) {
|
||||
return IndexQueryHintHandler.INSTANCE.addQueryHints( query, hints );
|
||||
return addQueryHints( query, hints );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,6 +39,7 @@
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
@ -313,6 +314,7 @@ public abstract class Dialect implements ConversionContext, TypeContributor, Fun
|
||||
|
||||
private static final Pattern ESCAPE_CLOSING_COMMENT_PATTERN = Pattern.compile( "\\*/" );
|
||||
private static final Pattern ESCAPE_OPENING_COMMENT_PATTERN = Pattern.compile( "/\\*" );
|
||||
private static final Pattern QUERY_PATTERN = Pattern.compile( "^\\s*(select\\b.+?\\bfrom\\b.+?)(\\bwhere\\b.+?)$" );
|
||||
|
||||
private static final CoreMessageLogger LOG = Logger.getMessageLogger( MethodHandles.lookup(), CoreMessageLogger.class, Dialect.class.getName() );
|
||||
|
||||
@ -4790,6 +4792,33 @@ public String addSqlHintOrComment(
|
||||
return sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an INDEX query hint as follows:
|
||||
*
|
||||
* <pre>
|
||||
* SELECT *
|
||||
* FROM TEST
|
||||
* USE INDEX (hint1, hint2)
|
||||
* WHERE X=1
|
||||
* </pre>
|
||||
*/
|
||||
public static String addQueryHints(String query, String hints) {
|
||||
Matcher matcher = QUERY_PATTERN.matcher( query );
|
||||
if ( matcher.matches() && matcher.groupCount() > 1 ) {
|
||||
String startToken = matcher.group( 1 );
|
||||
String endToken = matcher.group( 2 );
|
||||
|
||||
return startToken +
|
||||
" use index (" +
|
||||
hints +
|
||||
") " +
|
||||
endToken;
|
||||
}
|
||||
else {
|
||||
return query;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepend a comment to the given SQL fragment.
|
||||
*/
|
||||
|
@ -20,7 +20,6 @@
|
||||
import org.hibernate.boot.model.FunctionContributions;
|
||||
import org.hibernate.boot.model.TypeContributions;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.hint.IndexQueryHintHandler;
|
||||
import org.hibernate.dialect.identity.H2FinalTableIdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.IdentityColumnSupport;
|
||||
import org.hibernate.dialect.pagination.LimitHandler;
|
||||
@ -909,7 +908,7 @@ public int registerResultSetOutParameter(CallableStatement statement, int positi
|
||||
|
||||
@Override
|
||||
public String getQueryHintString(String query, String hints) {
|
||||
return IndexQueryHintHandler.INSTANCE.addQueryHints( query, hints );
|
||||
return addQueryHints( query, hints );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -22,7 +22,6 @@
|
||||
import org.hibernate.boot.model.TypeContributions;
|
||||
import org.hibernate.cfg.Environment;
|
||||
import org.hibernate.dialect.function.CommonFunctionFactory;
|
||||
import org.hibernate.dialect.hint.IndexQueryHintHandler;
|
||||
import org.hibernate.dialect.identity.IdentityColumnSupport;
|
||||
import org.hibernate.dialect.identity.MySQLIdentityColumnSupport;
|
||||
import org.hibernate.dialect.pagination.LimitHandler;
|
||||
@ -922,7 +921,7 @@ public String getEnumTypeDeclaration(String name, String[] values) {
|
||||
|
||||
@Override
|
||||
public String getQueryHintString(String query, String hints) {
|
||||
return IndexQueryHintHandler.INSTANCE.addQueryHints( query, hints );
|
||||
return addQueryHints( query, hints );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,42 +4,16 @@
|
||||
*/
|
||||
package org.hibernate.dialect.hint;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.hibernate.dialect.Dialect;
|
||||
|
||||
/**
|
||||
* Adds an INDEX query hint as follows:
|
||||
*
|
||||
* <code>
|
||||
* SELECT *
|
||||
* FROM TEST
|
||||
* USE INDEX (hint1, hint2)
|
||||
* WHERE X=1
|
||||
* </code>
|
||||
*
|
||||
* @author Vlad Mihalcea
|
||||
* @deprecated Moved to {@link org.hibernate.dialect.Dialect}
|
||||
*/
|
||||
@Deprecated(since = "7.0", forRemoval = true)
|
||||
public class IndexQueryHintHandler implements QueryHintHandler {
|
||||
|
||||
public static final IndexQueryHintHandler INSTANCE = new IndexQueryHintHandler();
|
||||
|
||||
private static final Pattern QUERY_PATTERN = Pattern.compile( "^\\s*(select\\b.+?\\bfrom\\b.+?)(\\bwhere\\b.+?)$" );
|
||||
|
||||
@Override
|
||||
public String addQueryHints(String query, String hints) {
|
||||
Matcher matcher = QUERY_PATTERN.matcher( query );
|
||||
if ( matcher.matches() && matcher.groupCount() > 1 ) {
|
||||
String startToken = matcher.group( 1 );
|
||||
String endToken = matcher.group( 2 );
|
||||
|
||||
return startToken +
|
||||
" use index (" +
|
||||
hints +
|
||||
") " +
|
||||
endToken;
|
||||
}
|
||||
else {
|
||||
return query;
|
||||
}
|
||||
return Dialect.addQueryHints( query, hints);
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,9 @@
|
||||
package org.hibernate.dialect.hint;
|
||||
|
||||
/**
|
||||
* Contract defining how query hints get applied.
|
||||
*
|
||||
* @author Vlad Mihalcea
|
||||
* @deprecated Moved to {@link org.hibernate.dialect.Dialect}
|
||||
*/
|
||||
@Deprecated(since = "7.0", forRemoval = true)
|
||||
public interface QueryHintHandler {
|
||||
|
||||
/**
|
||||
|
@ -1,13 +1,9 @@
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
* Copyright Red Hat Inc. and Hibernate Authors
|
||||
*/
|
||||
|
||||
/**
|
||||
* Support for query hints using {@link org.hibernate.dialect.Dialect}-specific syntax.
|
||||
*
|
||||
* @see org.hibernate.dialect.hint.QueryHintHandler
|
||||
* @deprecated Moved to {@link org.hibernate.dialect.Dialect}
|
||||
*/
|
||||
package org.hibernate.dialect.hint;
|
||||
|
Loading…
x
Reference in New Issue
Block a user