diff --git a/pgjdbc/src/main/java/org/postgresql/copy/CopyManager.java b/pgjdbc/src/main/java/org/postgresql/copy/CopyManager.java index e75b3990a8..bfd31e964c 100644 --- a/pgjdbc/src/main/java/org/postgresql/copy/CopyManager.java +++ b/pgjdbc/src/main/java/org/postgresql/copy/CopyManager.java @@ -48,26 +48,24 @@ public CopyManager(BaseConnection connection) throws SQLException { } public CopyIn copyIn(String sql) throws SQLException { - CopyOperation op = null; - try { - op = queryExecutor.startCopy(sql, connection.getAutoCommit()); + CopyOperation op = queryExecutor.startCopy(sql, connection.getAutoCommit()); + if (op == null || op instanceof CopyIn) { return (CopyIn) op; - } catch (ClassCastException cce) { + } else { op.cancelCopy(); throw new PSQLException(GT.tr("Requested CopyIn but got {0}", op.getClass().getName()), - PSQLState.WRONG_OBJECT_TYPE, cce); + PSQLState.WRONG_OBJECT_TYPE); } } public CopyOut copyOut(String sql) throws SQLException { - CopyOperation op = null; - try { - op = queryExecutor.startCopy(sql, connection.getAutoCommit()); + CopyOperation op = queryExecutor.startCopy(sql, connection.getAutoCommit()); + if (op == null || op instanceof CopyOut) { return (CopyOut) op; - } catch (ClassCastException cce) { + } else { op.cancelCopy(); throw new PSQLException(GT.tr("Requested CopyOut but got {0}", op.getClass().getName()), - PSQLState.WRONG_OBJECT_TYPE, cce); + PSQLState.WRONG_OBJECT_TYPE); } }