You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2006/02/22 23:40:33 UTC
svn commit: r379949 -
/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
Author: tomdz
Date: Wed Feb 22 14:40:32 2006
New Revision: 379949
URL: http://svn.apache.org/viewcvs?rev=379949&view=rev
Log:
Made dump task more robust against non-conforming JDBC drivers that return null for non-string columns in the metadata
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java?rev=379949&r1=379948&r2=379949&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java Wed Feb 22 14:40:32 2006
@@ -1218,7 +1218,29 @@
if (columns.contains(columnName))
{
- value = String.valueOf(result.getInt(columnName));
+ try
+ {
+ value = String.valueOf(result.getInt(columnName));
+ }
+ catch (SQLException ex)
+ {
+ // A few databases do not comply with the jdbc spec and return a string (or null),
+ // so lets try this just in case
+ value = result.getString(columnName);
+
+ if (value != null)
+ {
+ try
+ {
+ Integer.parseInt(value);
+ }
+ catch (NumberFormatException parseEx)
+ {
+ // its no int returned as a string, so lets re-throw the original exception
+ throw ex;
+ }
+ }
+ }
element.addAttribute(attrName, value);
}
return value;
@@ -1240,7 +1262,29 @@
if (columns.contains(columnName))
{
- value = String.valueOf(result.getShort(columnName));
+ try
+ {
+ value = String.valueOf(result.getShort(columnName));
+ }
+ catch (SQLException ex)
+ {
+ // A few databases do not comply with the jdbc spec and return a string (or null),
+ // so lets try strings this just in case
+ value = result.getString(columnName);
+
+ if (value != null)
+ {
+ try
+ {
+ Short.parseShort(value);
+ }
+ catch (NumberFormatException parseEx)
+ {
+ // its no short returned as a string, so lets re-throw the original exception
+ throw ex;
+ }
+ }
+ }
element.addAttribute(attrName, value);
}
return value;