HHH-16260 - JdbcParameterRenderer not called with dynamic filters
HHH-16256 - JdbcParameterRenderer to have an impact on write operations HHH-16273 - Support for Dialect native JdbcParameterRenderer agroal tests :(
This commit is contained in:
parent
2936e5bd75
commit
a98ab519ba
|
@ -11,9 +11,12 @@ hibernate.connection.username @jdbc.user@
|
||||||
hibernate.connection.password @jdbc.pass@
|
hibernate.connection.password @jdbc.pass@
|
||||||
hibernate.connection.init_sql @connection.init_sql@
|
hibernate.connection.init_sql @connection.init_sql@
|
||||||
|
|
||||||
|
# some Agroal tests fail with native markers. not sure why yet
|
||||||
|
hibernate.dialect.native_param_markers=false
|
||||||
|
|
||||||
hibernate.jdbc.batch_size 10
|
hibernate.jdbc.batch_size 10
|
||||||
hibernate.connection.provider_class AgroalConnectionProvider
|
hibernate.connection.provider_class AgroalConnectionProvider
|
||||||
|
|
||||||
hibernate.agroal.maxSize 2
|
hibernate.agroal.maxSize 2
|
||||||
hibernate.agroal.acquisitionTimeout PT1s
|
hibernate.agroal.acquisitionTimeout PT1s
|
||||||
hibernate.agroal.reapTimeout PT10s
|
hibernate.agroal.reapTimeout PT10s
|
||||||
|
|
|
@ -1021,7 +1021,7 @@ public abstract class AbstractCollectionPersister
|
||||||
String selectValue = isIntegerIndexed ?
|
String selectValue = isIntegerIndexed ?
|
||||||
"max(" + getIndexColumnNames()[0] + ") + 1" : // lists, arrays
|
"max(" + getIndexColumnNames()[0] + ") + 1" : // lists, arrays
|
||||||
"count(" + getElementColumnNames()[0] + ")"; // sets, maps, bags
|
"count(" + getElementColumnNames()[0] + ")"; // sets, maps, bags
|
||||||
return new SimpleSelect( dialect )
|
return new SimpleSelect( getFactory() )
|
||||||
.setTableName( getTableName() )
|
.setTableName( getTableName() )
|
||||||
.addCondition( getKeyColumnNames(), "=?" )
|
.addCondition( getKeyColumnNames(), "=?" )
|
||||||
.addWhereToken( sqlWhereString )
|
.addWhereToken( sqlWhereString )
|
||||||
|
@ -1033,7 +1033,7 @@ public abstract class AbstractCollectionPersister
|
||||||
if ( !hasIndex() ) {
|
if ( !hasIndex() ) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new SimpleSelect( dialect )
|
return new SimpleSelect( getFactory() )
|
||||||
.setTableName( getTableName() )
|
.setTableName( getTableName() )
|
||||||
.addCondition( getKeyColumnNames(), "=?" )
|
.addCondition( getKeyColumnNames(), "=?" )
|
||||||
.addCondition( getIndexColumnNames(), "=?" )
|
.addCondition( getIndexColumnNames(), "=?" )
|
||||||
|
@ -1045,7 +1045,7 @@ public abstract class AbstractCollectionPersister
|
||||||
|
|
||||||
|
|
||||||
protected String generateDetectRowByElementString() {
|
protected String generateDetectRowByElementString() {
|
||||||
return new SimpleSelect( dialect )
|
return new SimpleSelect( getFactory() )
|
||||||
.setTableName( getTableName() )
|
.setTableName( getTableName() )
|
||||||
.addCondition( getKeyColumnNames(), "=?" )
|
.addCondition( getKeyColumnNames(), "=?" )
|
||||||
.addCondition( getElementColumnNames(), "=?" )
|
.addCondition( getElementColumnNames(), "=?" )
|
||||||
|
|
|
@ -18,6 +18,8 @@ import org.hibernate.Internal;
|
||||||
import org.hibernate.LockMode;
|
import org.hibernate.LockMode;
|
||||||
import org.hibernate.LockOptions;
|
import org.hibernate.LockOptions;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
|
import org.hibernate.sql.ast.spi.JdbcParameterRenderer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SQL {@code SELECT} statement with no table joins.
|
* A SQL {@code SELECT} statement with no table joins.
|
||||||
|
@ -26,13 +28,6 @@ import org.hibernate.dialect.Dialect;
|
||||||
*/
|
*/
|
||||||
@Internal
|
@Internal
|
||||||
public class SimpleSelect {
|
public class SimpleSelect {
|
||||||
|
|
||||||
public SimpleSelect(Dialect dialect) {
|
|
||||||
this.dialect = dialect;
|
|
||||||
}
|
|
||||||
|
|
||||||
//private static final Alias DEFAULT_ALIAS = new Alias(10, null);
|
|
||||||
|
|
||||||
protected String tableName;
|
protected String tableName;
|
||||||
protected String orderBy;
|
protected String orderBy;
|
||||||
protected String comment;
|
protected String comment;
|
||||||
|
@ -43,7 +38,16 @@ public class SimpleSelect {
|
||||||
|
|
||||||
protected LockOptions lockOptions = new LockOptions( LockMode.READ );
|
protected LockOptions lockOptions = new LockOptions( LockMode.READ );
|
||||||
|
|
||||||
|
private final SessionFactoryImplementor factory;
|
||||||
private final Dialect dialect;
|
private final Dialect dialect;
|
||||||
|
private JdbcParameterRenderer _jdbcParameterRenderer;
|
||||||
|
|
||||||
|
public SimpleSelect(SessionFactoryImplementor factory) {
|
||||||
|
this.factory = factory;
|
||||||
|
this.dialect = factory.getJdbcServices().getDialect();
|
||||||
|
}
|
||||||
|
|
||||||
|
//private static final Alias DEFAULT_ALIAS = new Alias(10, null);
|
||||||
|
|
||||||
|
|
||||||
public SimpleSelect addColumns(String[] columnNames, String[] columnAliases) {
|
public SimpleSelect addColumns(String[] columnNames, String[] columnAliases) {
|
||||||
|
@ -100,22 +104,30 @@ public class SimpleSelect {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends a complete {@linkplain org.hibernate.annotations.Where where} fragment. The {@code token} is added as-is
|
||||||
|
*/
|
||||||
public SimpleSelect addWhereToken(String token) {
|
public SimpleSelect addWhereToken(String token) {
|
||||||
if (token != null ) {
|
if (token != null ) {
|
||||||
if (!whereTokens.isEmpty()) {
|
and();
|
||||||
and();
|
|
||||||
}
|
|
||||||
whereTokens.add( token );
|
whereTokens.add( token );
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void and() {
|
private void and() {
|
||||||
if ( whereTokens.size() > 0 ) {
|
if ( !whereTokens.isEmpty() ) {
|
||||||
whereTokens.add( "and" );
|
whereTokens.add( "and" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JdbcParameterRenderer jdbcParameterRenderer() {
|
||||||
|
if ( _jdbcParameterRenderer == null ) {
|
||||||
|
_jdbcParameterRenderer = factory.getServiceRegistry().getService( JdbcParameterRenderer.class );
|
||||||
|
}
|
||||||
|
return _jdbcParameterRenderer;
|
||||||
|
}
|
||||||
|
|
||||||
public SimpleSelect addCondition(String lhs, String op, String rhs) {
|
public SimpleSelect addCondition(String lhs, String op, String rhs) {
|
||||||
and();
|
and();
|
||||||
whereTokens.add( lhs + ' ' + op + ' ' + rhs );
|
whereTokens.add( lhs + ' ' + op + ' ' + rhs );
|
||||||
|
@ -128,13 +140,6 @@ public class SimpleSelect {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleSelect addCondition(String[] lhs, String op, String[] rhs) {
|
|
||||||
for ( int i = 0; i < lhs.length; i++ ) {
|
|
||||||
addCondition( lhs[i], op, rhs[i] );
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleSelect addCondition(String[] lhs, String condition) {
|
public SimpleSelect addCondition(String[] lhs, String condition) {
|
||||||
for ( String lh : lhs ) {
|
for ( String lh : lhs ) {
|
||||||
if ( lh != null ) {
|
if ( lh != null ) {
|
||||||
|
|
Loading…
Reference in New Issue