changeset 227:e938bb2c587f embedded

Use the system's timezone by default as well when retrieving times and timezones.
author Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
date Tue, 08 May 2018 18:18:30 +0200 (2018-05-08)
parents ff9049259602
children 51e886d7f3b4
files build.properties src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
diffstat 2 files changed, 42 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/build.properties
+++ b/build.properties
@@ -19,7 +19,7 @@ MCL_MINOR=14
 # major release number
 JDBC_MAJOR=2
 # minor release number
-JDBC_MINOR=35
+JDBC_MINOR=36
 # an additional identifying string
 JDBC_VER_SUFFIX=Liberica
 # the default port to connect on, if no port given when using SQL
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -2629,7 +2629,10 @@ public class MonetResultSet extends Mone
 					if(res == null) {
 						return null;
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				case 2013: //Types.TIME_WITH_TIMEZONE:
 				case 2014: //Types.TIMESTAMP_WITH_TIMEZONE:
@@ -2649,11 +2652,16 @@ public class MonetResultSet extends Mone
 					if(res == null) {
 						return null;
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				default:
 					this.addWarning("unsupported data type", "01M03");
-					cal.clear();
+					if(cal != null) {
+						cal.clear();
+					}
 					millis = 0;
 			}
 			return new Date(millis);
@@ -2707,7 +2715,7 @@ public class MonetResultSet extends Mone
 	 */
 	@Override
 	public Time getTime(int columnIndex) throws SQLException {
-		return getTime(columnIndex, null);
+		return getTime(columnIndex, Calendar.getInstance());
 	}
 
 	/**
@@ -2735,8 +2743,11 @@ public class MonetResultSet extends Mone
 					res = (Calendar) currentBlock.getValueAsObject(columnIndex - 1);
 					if(res == null) {
 						return null;
+					}	
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
 					break;
 				case 2013: //Types.TIME_WITH_TIMEZONE:
 				case 2014: //Types.TIMESTAMP_WITH_TIMEZONE:
@@ -2756,11 +2767,16 @@ public class MonetResultSet extends Mone
 					if(res == null) {
 						return null;
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				default:
 					this.addWarning("unsupported data type", "01M03");
-					cal.clear();
+					if(cal != null) {
+						cal.clear();
+					}
 					millis = 0;
 			}
 			return new Time(millis);
@@ -2783,7 +2799,7 @@ public class MonetResultSet extends Mone
 	 */
 	@Override
 	public Time getTime(String columnLabel) throws SQLException {
-		return getTime(findColumn(columnLabel), null);
+		return getTime(findColumn(columnLabel), Calendar.getInstance());
 	}
 
 	/**
@@ -2813,7 +2829,7 @@ public class MonetResultSet extends Mone
 	 */
 	@Override
 	public Timestamp getTimestamp(int columnIndex) throws SQLException {
-		return getTimestamp(columnIndex, null);
+		return getTimestamp(columnIndex, Calendar.getInstance());
 	}
 
 	/**
@@ -2842,7 +2858,10 @@ public class MonetResultSet extends Mone
 					if(res == null) {
 						return null;
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				case 2013: //Types.TIME_WITH_TIMEZONE:
 					res = (Calendar) currentBlock.getValueAsObject(columnIndex - 1);
@@ -2857,7 +2876,10 @@ public class MonetResultSet extends Mone
 						return null;
 					}
 					nanos = currentBlock.getLastNanos();
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				case 2014: //Types.TIMESTAMP_WITH_TIMEZONE:
 					res = (Calendar) currentBlock.getValueAsObject(columnIndex - 1);
@@ -2877,11 +2899,16 @@ public class MonetResultSet extends Mone
 					if(res == null) {
 						return null;
 					}
-					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset() + cal.getTimeZone().getRawOffset();
+					millis = res.getTimeInMillis() - res.getTimeZone().getRawOffset();
+					if(cal != null) {
+						millis += cal.getTimeZone().getRawOffset();
+					}
 					break;
 				default:
 					this.addWarning("unsupported data type", "01M03");
-					cal.clear();
+					if(cal != null) {
+						cal.clear();
+					}
 					millis = 0;
 			}
 			Timestamp result = new Timestamp(millis);
@@ -2906,7 +2933,7 @@ public class MonetResultSet extends Mone
 	 */
 	@Override
 	public Timestamp getTimestamp(String columnLabel) throws SQLException {
-		return getTimestamp(findColumn(columnLabel), null);
+		return getTimestamp(findColumn(columnLabel), Calendar.getInstance());
 	}
 
 	/**