From 6349070119c9974d7a6bfa8bafe49bb3a4f12a6c Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 16 Jul 2013 08:21:00 +0800 Subject: [PATCH] improve DB2ExceptionSorter --- .../druid/pool/vendor/DB2ExceptionSorter.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/vendor/DB2ExceptionSorter.java b/src/main/java/com/alibaba/druid/pool/vendor/DB2ExceptionSorter.java index f39aa27056..674c183741 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/DB2ExceptionSorter.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/DB2ExceptionSorter.java @@ -24,9 +24,22 @@ public class DB2ExceptionSorter implements ExceptionSorter { @Override public boolean isExceptionFatal(SQLException e) { + String sqlState = e.getSQLState(); + if (sqlState != null && sqlState.startsWith("08")) { // Connection Exception + return true; + } + int errorCode = e.getErrorCode(); - switch (errorCode) { // THE CURSOR IS NOT IN A PREPARED STATE - case -514: + switch (errorCode) { + case -512: // STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID + case -514: // THE CURSOR IS NOT IN A PREPARED STATE + case -516: // THE DESCRIBE STATEMENT DOES NOT SPECIFY A PREPARED STATEMENT + case -518: // THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED STATEMENT + case -525: // THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE IT WAS IN ERROR AT BIND TIME FOR SECTION = sectno + // PACKAGE = pkgname CONSISTENCY TOKEN = contoken + case -909: // THE OBJECT HAS BEEN DELETED OR ALTERED + case -918: // THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE A CONNECTION HAS BEEN LOST + case -924: // DB2 CONNECTION INTERNAL ERROR, function-code,return-code,reason-code return true; default: break;