Skip to content

Commit

Permalink
Add SAP HANA duplicate key exception error code
Browse files Browse the repository at this point in the history
  • Loading branch information
baratrax authored and snicoll committed Nov 7, 2023
1 parent e731073 commit fcd4ba2
Showing 1 changed file with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLException
"61" // Oracle: deadlock
);

private static final Set<Integer> DUPLICATE_KEY_ERROR_CODES = Set.of(
1, // Oracle
301, // Sap Hana
1062, // MySQL/MariaDB
2601, // MS SQL Server
2627 // MS SQL Server
);


@Override
@Nullable
Expand Down Expand Up @@ -158,15 +166,13 @@ private String getSqlState(SQLException ex) {
* Check whether the given SQL state (and the associated error code in case
* of a generic SQL state value) indicate a {@link DuplicateKeyException}:
* either SQL state 23505 as a specific indication, or the generic SQL state
* 23000 with well-known vendor codes (1 for Oracle, 1062 for MySQL/MariaDB,
* 2601/2627 for MS SQL Server).
* 23000 with well-known vendor codes.
* @param sqlState the SQL state value
* @param errorCode the error code value
*/
static boolean indicatesDuplicateKey(@Nullable String sqlState, int errorCode) {
return ("23505".equals(sqlState) ||
("23000".equals(sqlState) &&
(errorCode == 1 || errorCode == 1062 || errorCode == 2601 || errorCode == 2627)));
("23000".equals(sqlState) && DUPLICATE_KEY_ERROR_CODES.contains(errorCode)));
}

/**
Expand Down

0 comments on commit fcd4ba2

Please sign in to comment.