diff --git a/pom.xml b/pom.xml index 4c4f67e..a319ead 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.aliyun.odps odps-jdbc - 3.2.25 + 3.2.26 odps-jdbc Aliyun ODPS JDBC driver http://odps.aliyun.com @@ -49,7 +49,7 @@ - 0.37.10-public + 0.38.4-public 4.11 UTF-8 1.8 diff --git a/src/main/java/com/aliyun/odps/jdbc/OdpsStatement.java b/src/main/java/com/aliyun/odps/jdbc/OdpsStatement.java index cad1db9..533fa2a 100644 --- a/src/main/java/com/aliyun/odps/jdbc/OdpsStatement.java +++ b/src/main/java/com/aliyun/odps/jdbc/OdpsStatement.java @@ -925,6 +925,7 @@ private void runSQLInSession(String sql, Map settings) settings.put("odps.sql.select.auto.limit", autoSelectLimit.toString()); } executor.run(sql, settings); + executeInstance = executor.getInstance(); try { sessionResultSet = executor.getResultSet(0L, resultCountLimit, resultSizeLimit, enableLimit); List exeLog = executor.getExecutionLog(); @@ -945,8 +946,6 @@ private void runSQLInSession(String sql, Map settings) long end = System.currentTimeMillis(); connHandle.log.info("It took me " + (end - begin) + " ms to run sql"); - executeInstance = executor.getInstance(); - String logView = executor.getLogView(); connHandle.log.info("Run SQL: " + sql + ", LogView:" + logView); warningChain = new SQLWarning(executor.getSummary()); diff --git a/src/main/java/com/aliyun/odps/jdbc/utils/transformer/to/jdbc/ToJdbcStringTransformer.java b/src/main/java/com/aliyun/odps/jdbc/utils/transformer/to/jdbc/ToJdbcStringTransformer.java index 8de324f..2d256ef 100644 --- a/src/main/java/com/aliyun/odps/jdbc/utils/transformer/to/jdbc/ToJdbcStringTransformer.java +++ b/src/main/java/com/aliyun/odps/jdbc/utils/transformer/to/jdbc/ToJdbcStringTransformer.java @@ -74,20 +74,20 @@ public Object transform( return null; } - Builder calendarBuilder = new Calendar.Builder() - .setCalendarType("iso8601") - .setLenient(true); - if (timeZone != null) { - calendarBuilder.setTimeZone(timeZone); + if (o instanceof byte[]) { + return encodeBytes((byte[]) o, charset); } - Calendar calendar = calendarBuilder.build(); - // The argument cal should always be ignored since MaxCompute stores timezone information. try { - if (o instanceof byte[]) { - return encodeBytes((byte[]) o, charset); - } else if (java.util.Date.class.isInstance(o)) { + if (java.util.Date.class.isInstance(o)) { + Builder calendarBuilder = new Calendar.Builder() + .setCalendarType("iso8601") + .setLenient(true); + if (timeZone != null) { + calendarBuilder.setTimeZone(timeZone); + } + Calendar calendar = calendarBuilder.build(); if (java.sql.Timestamp.class.isInstance(o)) { // MaxCompute TIMESTAMP @@ -104,6 +104,13 @@ public Object transform( } } else { if (odpsType != null) { + Builder calendarBuilder = new Calendar.Builder() + .setCalendarType("iso8601") + .setLenient(true); + if (timeZone != null) { + calendarBuilder.setTimeZone(timeZone); + } + Calendar calendar = calendarBuilder.build(); DATETIME_FORMAT.get().setCalendar(calendar); switch (odpsType.getOdpsType()) {