Revert removal of JavaType from SqlSelectionProducer#createSqlSelection

This commit is contained in:
Christian Beikov 2022-11-18 11:44:21 +01:00
parent dfa3981a52
commit 30bb01d0fa
8 changed files with 38 additions and 5 deletions

View File

@ -16,6 +16,7 @@
import org.hibernate.sql.ast.tree.expression.Expression; import org.hibernate.sql.ast.tree.expression.Expression;
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMetadata; import org.hibernate.sql.results.jdbc.spi.JdbcValuesMetadata;
import org.hibernate.type.descriptor.ValueExtractor; import org.hibernate.type.descriptor.ValueExtractor;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -50,6 +51,7 @@ public ValueExtractor getJdbcValueExtractor() {
public SqlSelection createSqlSelection( public SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
return this; return this;
} }

View File

@ -89,8 +89,13 @@ protected FunctionRenderingSupport getRenderer() {
public SqlSelection createSqlSelection( public SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
return new SqlSelectionImpl( jdbcPosition, valuesArrayPosition, this ); return new SqlSelectionImpl(
jdbcPosition,
valuesArrayPosition,
this
);
} }
@Override @Override

View File

@ -18,6 +18,7 @@
import org.hibernate.sql.ast.tree.from.TableGroup; import org.hibernate.sql.ast.tree.from.TableGroup;
import org.hibernate.sql.results.graph.DomainResult; import org.hibernate.sql.results.graph.DomainResult;
import org.hibernate.sql.results.graph.DomainResultCreationState; import org.hibernate.sql.results.graph.DomainResultCreationState;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -52,6 +53,7 @@ public EntityDiscriminatorMapping getExpressionType() {
public SqlSelection createSqlSelection( public SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
return new ResultSetMappingSqlSelection( valuesArrayPosition, getDiscriminatorMapping() ); return new ResultSetMappingSqlSelection( valuesArrayPosition, getDiscriminatorMapping() );
} }

View File

@ -124,6 +124,7 @@ else if ( fetchParent != null ) {
final SqlSelection sqlSelection = expression.createSqlSelection( final SqlSelection sqlSelection = expression.createSqlSelection(
valuesArrayPosition + 1, valuesArrayPosition + 1,
valuesArrayPosition, valuesArrayPosition,
javaType,
typeConfiguration typeConfiguration
); );

View File

@ -7,6 +7,7 @@
package org.hibernate.sql.ast.spi; package org.hibernate.sql.ast.spi;
import org.hibernate.sql.results.jdbc.spi.RowProcessingState; import org.hibernate.sql.results.jdbc.spi.RowProcessingState;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -15,12 +16,15 @@
public interface SqlSelectionProducer { public interface SqlSelectionProducer {
/** /**
* Create a SqlSelection for the given JDBC ResultSet position * Create a SqlSelection for the given JDBC ResultSet position
*
* @param jdbcPosition The index position used to read values from JDBC * @param jdbcPosition The index position used to read values from JDBC
* @param valuesArrayPosition The position in our {@linkplain RowProcessingState#getJdbcValue(SqlSelection) "current JDBC values array"} * @param valuesArrayPosition The position in our {@linkplain RowProcessingState#getJdbcValue(SqlSelection) "current JDBC values array"}
* @param javaType The descriptor for the Java type to read the value as
* @param typeConfiguration The associated TypeConfiguration * @param typeConfiguration The associated TypeConfiguration
*/ */
SqlSelection createSqlSelection( SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration); TypeConfiguration typeConfiguration);
} }

View File

@ -11,6 +11,7 @@
import org.hibernate.sql.ast.spi.SqlSelectionProducer; import org.hibernate.sql.ast.spi.SqlSelectionProducer;
import org.hibernate.sql.ast.tree.SqlAstNode; import org.hibernate.sql.ast.tree.SqlAstNode;
import org.hibernate.sql.results.internal.SqlSelectionImpl; import org.hibernate.sql.results.internal.SqlSelectionImpl;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -32,7 +33,12 @@ default ColumnReference getColumnReference() {
default SqlSelection createSqlSelection( default SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
return new SqlSelectionImpl( jdbcPosition, valuesArrayPosition, this ); return new SqlSelectionImpl(
jdbcPosition,
valuesArrayPosition,
this
);
} }
} }

View File

@ -18,6 +18,7 @@
import org.hibernate.sql.ast.tree.expression.Expression; import org.hibernate.sql.ast.tree.expression.Expression;
import org.hibernate.sql.results.graph.DomainResult; import org.hibernate.sql.results.graph.DomainResult;
import org.hibernate.sql.results.graph.DomainResultCreationState; import org.hibernate.sql.results.graph.DomainResultCreationState;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -46,8 +47,14 @@ public ColumnReference getColumnReference() {
public SqlSelection createSqlSelection( public SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
return getTableGroup().createSqlSelection( jdbcPosition, valuesArrayPosition, typeConfiguration ); return getTableGroup().createSqlSelection(
jdbcPosition,
valuesArrayPosition,
javaType,
typeConfiguration
);
} }
@Override @Override

View File

@ -25,6 +25,7 @@
import org.hibernate.sql.exec.spi.JdbcParameterBinding; import org.hibernate.sql.exec.spi.JdbcParameterBinding;
import org.hibernate.sql.exec.spi.JdbcParameterBindings; import org.hibernate.sql.exec.spi.JdbcParameterBindings;
import org.hibernate.sql.results.internal.SqlSelectionImpl; import org.hibernate.sql.results.internal.SqlSelectionImpl;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.spi.TypeConfiguration; import org.hibernate.type.spi.TypeConfiguration;
/** /**
@ -58,12 +59,17 @@ public void accept(SqlAstWalker sqlTreeWalker) {
public SqlSelection createSqlSelection( public SqlSelection createSqlSelection(
int jdbcPosition, int jdbcPosition,
int valuesArrayPosition, int valuesArrayPosition,
JavaType javaType,
TypeConfiguration typeConfiguration) { TypeConfiguration typeConfiguration) {
// todo (6.0) : investigate "virtual" or "static" selections // todo (6.0) : investigate "virtual" or "static" selections
// - anything that is the same for each row always - parameter, literal, etc; // - anything that is the same for each row always - parameter, literal, etc;
// the idea would be to write the value directly into the JdbcValues array // the idea would be to write the value directly into the JdbcValues array
// and not generating a SQL selection in the query sent to DB // and not generating a SQL selection in the query sent to DB
return new SqlSelectionImpl( jdbcPosition, valuesArrayPosition, this ); return new SqlSelectionImpl(
jdbcPosition,
valuesArrayPosition,
this
);
} }
@Override @Override