Changeset: 5c575fb21be0 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=5c575fb21be0
Modified Files:
SQLSTATEs
src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
Branch: default
Log Message:
Improve thrown SQLExceptions in setString(), changed them into SQLDataException
with distinct SQLState codes.
diffs (87 lines):
diff --git a/SQLSTATEs b/SQLSTATEs
--- a/SQLSTATEs
+++ b/SQLSTATEs
@@ -25,6 +25,8 @@ 0AM34 Java generics not supported
22M28 invalid BLOB format
22M29 invalid inet format
22M30 invalid url format
+22M31 invalid uuid format
+22M32 invalid json format
2BM37 dependent objects still exist
2DM30 autocommit mode active
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
@@ -2252,7 +2252,7 @@ public class MonetPreparedStatement
nl.cwi.monetdb.jdbc.types.INET inet_obj = new nl.cwi.monetdb.jdbc.types.INET();
inet_obj.fromString(x);
} catch (SQLException se) {
- throw new
SQLException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + se, "M1M05");
+ throw new
SQLDataException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + se.getMessage(), "22M29");
}
castprefix = "inet ";
break;
@@ -2271,7 +2271,7 @@ public class MonetPreparedStatement
(x.startsWith("[") &&
!x.endsWith("]"))
// TODO check
completely if x represents a valid json string
)
- throw new
SQLException("Invalid json string. It does not start with { or [ and end with }
or ]", "M1M05");
+ throw new
SQLDataException("Invalid json string. It does not start with { or [ and end
with } or ]", "22M32");
// TODO check completely if x
represents a valid json string
@@ -2283,7 +2283,7 @@ public class MonetPreparedStatement
// failing exec #(...,
...) calls which destroy the prepared statement, see bug 6351
java.net.URL url_obj =
new java.net.URL(x);
} catch
(java.net.MalformedURLException mue) {
- throw new
SQLException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + mue, "M1M05");
+ throw new
SQLDataException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + mue.getMessage(), "22M30");
}
castprefix = "url ";
break;
@@ -2293,7 +2293,7 @@ public class MonetPreparedStatement
// failing exec #(...,
...) calls which destroy the prepared statement, see bug 6351
java.util.UUID uuid_obj
= java.util.UUID.fromString(x);
} catch
(IllegalArgumentException iae) {
- throw new
SQLException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + iae, "M1M05");
+ throw new
SQLDataException("Conversion of string: " + x + " to parameter data type " +
paramMonetdbType + " failed. " + iae.getMessage(), "22M31");
}
castprefix = "uuid ";
break;
@@ -2328,7 +2328,7 @@ public class MonetPreparedStatement
BigDecimal number = new
BigDecimal(x);
}
} catch (NumberFormatException nfe) {
- throw new SQLException("Conversion of
string: " + x + " to parameter data type " + paramMonetdbType + " failed. " +
nfe, "M1M05");
+ throw new SQLDataException("Conversion
of string: " + x + " to parameter data type " + paramMonetdbType + " failed. "
+ nfe.getMessage(), "22003");
}
setValue(parameterIndex, x);
break;
@@ -2337,7 +2337,7 @@ public class MonetPreparedStatement
if (x.equalsIgnoreCase("false") ||
x.equalsIgnoreCase("true") || x.equals("0") || x.equals("1")) {
setValue(parameterIndex, x);
} else {
- throw new SQLException("Conversion of
string: " + x + " to parameter data type " + paramMonetdbType + " failed",
"M1M05");
+ throw new SQLDataException("Conversion
of string: " + x + " to parameter data type " + paramMonetdbType + " failed",
"22000");
}
break;
case Types.DATE:
@@ -2356,7 +2356,7 @@ public class MonetPreparedStatement
Timestamp tijdstip =
Timestamp.valueOf(x);
}
} catch (IllegalArgumentException iae) {
- throw new SQLException("Conversion of
string: " + x + " to parameter data type " + paramMonetdbType + " failed. " +
iae, "M1M05");
+ throw new SQLDataException("Conversion
of string: " + x + " to parameter data type " + paramMonetdbType + " failed. "
+ iae.getMessage(), "22007");
}
/* prefix the string with: date or time or
timetz or timestamp or timestamptz */
setValue(parameterIndex, paramMonetdbType + "
'" + x + "'");
@@ -2373,7 +2373,7 @@ public class MonetPreparedStatement
if (c < '0' || c > '9') {
if (c < 'A' || c > 'F') {
if (c < 'a' || c > 'f')
{
- throw new
SQLException("Invalid string for parameter data type " + paramMonetdbType + ".
The string may contain only hex chars", "M1M05");
+ throw new
SQLDataException("Invalid string for parameter data type " + paramMonetdbType +
". The string may contain only hex chars", "22M28");
}
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list