Issue Details (XML | Word | Printable)

Key: DERBY-3783
Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Kristian Waagan
Reporter: Kristian Waagan
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby

LOBStreamControl shouldn't throw SQLException

Created: 17/Jul/08 08:49 AM   Updated: 04/May/09 06:22 PM
Return to search
Component/s: JDBC
Affects Version/s: 10.4.2.0, 10.5.1.1
Fix Version/s: 10.4.2.0, 10.5.1.1

Time Tracking:
Not Specified

File Attachments:
  Size
File Licensed for inclusion in ASF works d3783-initCause.diff 2008-07-19 05:44 PM Knut Anders Hatlen 7 kB
File Licensed for inclusion in ASF works derby-3783-1a-dont_throw_sqlexception.diff 2008-07-17 09:16 AM Kristian Waagan 14 kB
Text File Licensed for inclusion in ASF works derby-3783-1a-dont_throw_sqlexception.stat 2008-07-17 09:16 AM Kristian Waagan 0.3 kB
Issue Links:
dependent
 

Resolution Date: 21/Jul/08 11:13 AM


 Description  « Hide
LOBStreamControl throws three types of exceptions: IOException, SQLException and StandardException.
All the SQLException are generated/thrown from the code in LOBStreamControl.
At this level of the code, SQLException should not be thrown, as it is more tedious to handle both SQLException and StandardException at higher levels.


I propose to replace SQLException with StandardException in LOBStreamControl. The purpose of this change is consistency, and also results it slightly less code at higher levels.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Kristian Waagan added a comment - 17/Jul/08 09:16 AM
'derby-3783-1a-dont_throw_sqlexception.diff' makes LOBStreamControl throw StandardException instead of SQLException.
I've tried to change as little as possible, but there was logic in some of the catch blocks that had to be moved.

I've run jdbcapi._Suite without failures, running suites.All and derbyall now.
I plan to commit (or post a new patch) once the tests have completed. Patch ready for review.

Kristian Waagan made changes - 17/Jul/08 09:16 AM
Field Original Value New Value
Attachment derby-3783-1a-dont_throw_sqlexception.diff [ 12386276 ]
Attachment derby-3783-1a-dont_throw_sqlexception.stat [ 12386277 ]
Kristian Waagan made changes - 17/Jul/08 09:17 AM
Status Open [ 1 ] In Progress [ 3 ]
Kristian Waagan made changes - 17/Jul/08 12:25 PM
Summary LOBStreamControl shoudn't throw SQLException LOBStreamControl shouldn't throw SQLException
Kristian Waagan made changes - 17/Jul/08 03:57 PM
Link This issue is depended upon by DERBY-3766 [ DERBY-3766 ]
Repository Revision Date User Message
ASF #677623 Thu Jul 17 15:59:23 UTC 2008 kristwaa DERBY-3783: LOBStreamControl shouldn't throw SQLException.
Throw StandardException instead of SQLException at this level of the code.
Patch file: DERBY-3783-1a-dont_throw_sqlexception.diff
Files Changed
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBInputStream.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedBlob.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBOutputStream.java

Repository Revision Date User Message
ASF #677628 Thu Jul 17 16:07:31 UTC 2008 kristwaa DERBY-3783: LOBStreamControl shouldn't throw SQLException.
Merged revision 677623 (DERBY-3783-1a-dont_throw_sqlexception.diff) from trunk.
Files Changed
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBInputStream.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/EmbedBlob.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBOutputStream.java

Knut Anders Hatlen added a comment - 18/Jul/08 09:16 AM
One small suggestion, while you're at it:

LOBInputStream.java:
+ } else {
+ throw new IOException(se.getMessage());
+ }

To preserve the stack trace: throw (IOException) new IOException(se.getMessage()).initCause(se);

Perhaps we should have a helper method for this, since we seem to need it multiple places in these classes.

Kristian Waagan added a comment - 18/Jul/08 10:13 AM
That's a good idea Knut Anders!
Preserving the stack traces is important.

I forgot to add a comment that I committed patch 'derby-3783-1a-dont_throw_sqlexception.diff' yesterday:
 - trunk : revision 677623
 - 10.4 : revision 677628

I'm leaving the issue open for now.

Kristian Waagan made changes - 18/Jul/08 10:13 AM
Derby Info [Patch Available]
Fix Version/s 10.4.1.4 [ 12313112 ]
Fix Version/s 10.5.0.0 [ 12313010 ]
Knut Anders Hatlen added a comment - 19/Jul/08 05:44 PM
I have created a patch which adds a method newIOException(Throwable cause) to the Util class in impl.jdbc and changes all occurrences of new IOException(e.getMessages()) in that package to use the utility method. All tests in derbyall and suites.All passed with the patch.

Knut Anders Hatlen made changes - 19/Jul/08 05:44 PM
Attachment d3783-initCause.diff [ 12386477 ]
Knut Anders Hatlen made changes - 19/Jul/08 05:45 PM
Derby Info [Patch Available]
Kristian Waagan added a comment - 20/Jul/08 05:32 PM
+1 to commit ' d3783-initCause.diff'.

Repository Revision Date User Message
ASF #678388 Mon Jul 21 11:12:32 UTC 2008 kahatlen DERBY-3783: Added utility method that wraps a Throwable in an IOException
Files Changed
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/Util.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ClobUpdatableReader.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ClobUtf8Writer.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/AutoPositioningStream.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBInputStream.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/UpdatableBlobStream.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBOutputStream.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/UTF8Reader.java

Knut Anders Hatlen added a comment - 21/Jul/08 11:13 AM
Committed d3783-initCause.diff with revision 678388.

Knut Anders Hatlen made changes - 21/Jul/08 11:13 AM
Resolution Fixed [ 1 ]
Derby Info [Patch Available]
Status In Progress [ 3 ] Resolved [ 5 ]
Rick Hillegas made changes - 04/Aug/08 08:24 PM
Fix Version/s 10.4.1.4 [ 12313112 ]
Fix Version/s 10.4.2.0 [ 12313345 ]
Repository Revision Date User Message
ASF #682803 Tue Aug 05 17:11:32 UTC 2008 kristwaa DERBY-3766, DERBY-3783 (second patch): EmbedBlob.setPosition is highly ineffective for streams.
Backporting from trunk: 677619 (DERBY-3766-1a-preparations.diff), 681359 (DERBY-3766-2a-position_fix.diff), and 678388 (d3783-initCause.diff).
Files Changed
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/Util.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/ClobUpdatableReader.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/ClobUtf8Writer.java
MODIFY /db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/BlobClob4BlobTest.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/AutoPositioningStream.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBInputStream.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/EmbedBlob.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/UpdatableBlobStream.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/LOBOutputStream.java
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/jdbc/UTF8Reader.java

Kristian Waagan added a comment - 05/Aug/08 05:12 PM
Backported 'd3783-initCause.diff' to 10.4 with revision 682803. It went in with the patches for DERBY-3766.

Kristian Waagan made changes - 15/Dec/08 03:22 PM
Status Resolved [ 5 ] Closed [ 6 ]
Myrna van Lunteren made changes - 04/May/09 06:22 PM
Fix Version/s 10.5.0.0 [ 12313010 ]
Fix Version/s 10.5.1.1 [ 12313771 ]
Affects Version/s 10.5.0.0 [ 12313010 ]
Affects Version/s 10.5.1.1 [ 12313771 ]