changeset 885:e1f00e0e3598

Improve isSigned() information on result columns and parameters of Types.DATE, Types.TIMESTAMP and Types.TIMESTAMP_WITH_TIMEZONE. These can have a negative year.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 03 Apr 2024 15:02:24 +0200 (12 months ago)
parents 1956d8ba5ad3
children 4f50019b2cf8
files src/main/java/org/monetdb/jdbc/MonetParameterMetaData.java src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
diffstat 2 files changed, 12 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- 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;
 		}
--- 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;
 		}