# 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;
 		}