Skip to content

Commit 321a804

Browse files
committed
Merge branch '6.2.x'
2 parents dacaf7f + f3832c7 commit 321a804

File tree

3 files changed

+19
-45
lines changed

3 files changed

+19
-45
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.sql.SQLException;
2222
import java.sql.Types;
2323
import java.util.ArrayList;
24-
import java.util.Arrays;
2524
import java.util.HashMap;
2625
import java.util.List;
2726
import java.util.Locale;
@@ -48,11 +47,6 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider {
4847
/** Logger available to subclasses. */
4948
protected static final Log logger = LogFactory.getLog(TableMetaDataProvider.class);
5049

51-
/** Database products we know not supporting the use of a String[] for generated keys. */
52-
private static final List<String> productsNotSupportingGeneratedKeysColumnNameArray =
53-
Arrays.asList("Apache Derby", "HSQL Database Engine");
54-
55-
5650
/** The name of the user currently connected. */
5751
private final @Nullable String userName;
5852

@@ -93,45 +87,14 @@ protected GenericTableMetaDataProvider(DatabaseMetaData databaseMetaData) throws
9387
@Override
9488
public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQLException {
9589
try {
96-
if (databaseMetaData.supportsGetGeneratedKeys()) {
97-
logger.debug("GetGeneratedKeys is supported");
98-
setGetGeneratedKeysSupported(true);
99-
}
100-
else {
101-
logger.debug("GetGeneratedKeys is not supported");
102-
setGetGeneratedKeysSupported(false);
103-
}
90+
setGetGeneratedKeysSupported(databaseMetaData.supportsGetGeneratedKeys());
91+
setGeneratedKeysColumnNameArraySupported(isGetGeneratedKeysSupported());
10492
}
10593
catch (SQLException ex) {
10694
if (logger.isWarnEnabled()) {
10795
logger.warn("Error retrieving 'DatabaseMetaData.supportsGetGeneratedKeys': " + ex.getMessage());
10896
}
10997
}
110-
try {
111-
String databaseProductName = databaseMetaData.getDatabaseProductName();
112-
if (productsNotSupportingGeneratedKeysColumnNameArray.contains(databaseProductName)) {
113-
if (logger.isDebugEnabled()) {
114-
logger.debug("GeneratedKeysColumnNameArray is not supported for " + databaseProductName);
115-
}
116-
setGeneratedKeysColumnNameArraySupported(false);
117-
}
118-
else {
119-
if (isGetGeneratedKeysSupported()) {
120-
if (logger.isDebugEnabled()) {
121-
logger.debug("GeneratedKeysColumnNameArray is supported for " + databaseProductName);
122-
}
123-
setGeneratedKeysColumnNameArraySupported(true);
124-
}
125-
else {
126-
setGeneratedKeysColumnNameArraySupported(false);
127-
}
128-
}
129-
}
130-
catch (SQLException ex) {
131-
if (logger.isWarnEnabled()) {
132-
logger.warn("Error retrieving 'DatabaseMetaData.getDatabaseProductName': " + ex.getMessage());
133-
}
134-
}
13598

13699
try {
137100
this.databaseVersion = databaseMetaData.getDatabaseProductVersion();

spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlBinaryValue.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,18 @@
3535
*
3636
* <p>Designed for use with {@link org.springframework.jdbc.core.JdbcTemplate}
3737
* as well as {@link org.springframework.jdbc.core.simple.JdbcClient}, to be
38-
* passed in as a parameter value wrapping the target content value. Can be
39-
* combined with {@link org.springframework.jdbc.core.SqlParameterValue} for
40-
* specifying a SQL type, for example,
38+
* passed in as a parameter value wrapping the target content value.
39+
*
40+
* <p>Can be combined with {@link org.springframework.jdbc.core.SqlParameterValue}
41+
* for specifying a SQL type, for example,
4142
* {@code new SqlParameterValue(Types.BLOB, new SqlBinaryValue(myContent))}.
4243
* With most database drivers, the type hint is not actually necessary.
4344
*
45+
* <p>Note: Only specify {@code Types.BLOB} in case of an actual BLOB, preferring
46+
* {@code Types.LONGVARBINARY} otherwise. With PostgreSQL, {@code Types.ARRAY}
47+
* has to be specified for BYTEA columns, rather than {@code Types.BLOB}. This
48+
* is in contrast to {@link SqlLobValue} where byte array handling was lenient.
49+
*
4450
* @author Juergen Hoeller
4551
* @since 6.1.4
4652
* @see SqlCharacterValue

spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlCharacterValue.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@
3434
*
3535
* <p>Designed for use with {@link org.springframework.jdbc.core.JdbcTemplate}
3636
* as well as {@link org.springframework.jdbc.core.simple.JdbcClient}, to be
37-
* passed in as a parameter value wrapping the target content value. Can be
38-
* combined with {@link org.springframework.jdbc.core.SqlParameterValue} for
39-
* specifying a SQL type, for example,
37+
* passed in as a parameter value wrapping the target content value.
38+
*
39+
* <p>Can be combined with {@link org.springframework.jdbc.core.SqlParameterValue}
40+
* for specifying a SQL type, for example,
4041
* {@code new SqlParameterValue(Types.CLOB, new SqlCharacterValue(myContent))}.
4142
* With most database drivers, the type hint is not actually necessary.
4243
*
44+
* <p>Note: Only specify {@code Types.CLOB} in case of an actual CLOB, preferring
45+
* {@code Types.LONGVARCHAR} otherwise. This is in contrast to {@link SqlLobValue}
46+
* where char sequence handling was lenient.
47+
*
4348
* @author Juergen Hoeller
4449
* @since 6.1.4
4550
* @see SqlBinaryValue

0 commit comments

Comments
 (0)