# HG changeset patch # User Martin van Dinther <martin.van.dinther@monetdbsolutions.com> # Date 1712149344 -7200 # Node ID e1f00e0e3598a2b3bed6f9d2e44ef60f68fdc0b3 # Parent 1956d8ba5ad3da5310963555f59f2e85fc43ee25 Improve isSigned() information on result columns and parameters of Types.DATE, Types.TIMESTAMP and Types.TIMESTAMP_WITH_TIMEZONE. These can have a negative year. diff --git a/src/main/java/org/monetdb/jdbc/MonetParameterMetaData.java b/src/main/java/org/monetdb/jdbc/MonetParameterMetaData.java --- a/src/main/java/org/monetdb/jdbc/MonetParameterMetaData.java +++ b/src/main/java/org/monetdb/jdbc/MonetParameterMetaData.java @@ -143,23 +143,19 @@ final class MonetParameterMetaData case Types.DOUBLE: case Types.DECIMAL: case Types.NUMERIC: + case Types.DATE: // year can be negative + case Types.TIMESTAMP: // year can be negative + case Types.TIMESTAMP_WITH_TIMEZONE: return true; case Types.BIGINT: + { final String monettype = getParameterTypeName(param); - if (monettype != null && monettype.length() == 3) { - // data of type oid or ptr is not signed - if ("oid".equals(monettype) - || "ptr".equals(monettype)) - return false; - } + // data of type oid or ptr is not signed + if ("oid".equals(monettype) + || "ptr".equals(monettype)) + return false; return true; - // All other types should return false - // case Types.BOOLEAN: - // case Types.DATE: // can year be negative? - // case Types.TIME: // can time be negative? - // case Types.TIME_WITH_TIMEZONE: - // case Types.TIMESTAMP: // can year be negative? - // case Types.TIMESTAMP_WITH_TIMEZONE: + } default: return false; } diff --git a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java --- a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java +++ b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java @@ -362,6 +362,9 @@ final class MonetResultSetMetaData case Types.DOUBLE: case Types.DECIMAL: case Types.NUMERIC: + case Types.DATE: // year can be negative + case Types.TIMESTAMP: // year can be negative + case Types.TIMESTAMP_WITH_TIMEZONE: return true; case Types.BIGINT: try { @@ -374,13 +377,6 @@ final class MonetResultSetMetaData throw MonetResultSet.newSQLInvalidColumnIndexException(column); } return true; - // All other types should return false - // case Types.BOOLEAN: - // case Types.DATE: // can year be negative? - // case Types.TIME: // can time be negative? - // case Types.TIME_WITH_TIMEZONE: - // case Types.TIMESTAMP: // can year be negative? - // case Types.TIMESTAMP_WITH_TIMEZONE: default: return false; }