You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Chris Snowden (Jira)" <ji...@apache.org> on 2020/07/14 15:55:00 UTC
[jira] [Updated] (CALCITE-4120) Inconsistent Calendar used In
JdbcMeta between prepareAndExecute and Fetch
[ https://issues.apache.org/jira/browse/CALCITE-4120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Snowden updated CALCITE-4120:
-----------------------------------
Description:
org.apache.calcite.avatica.jdbc.JdbcMeta prepareAndExecute is using UTC calendar but fetch is using local calendar, results in inconsistent TZs being applied for single statement.
[https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
[https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
{code:java}
org.apache.calcite.avatica.jdbc.JdbcMeta
final Calendar calendar = Unsafe.localCalendar(); //LOCAL
public ExecuteResult prepareAndExecute(
StatementHandle h,
String sql,
long maxRowCount,
int maxRowsInFirstFrame,
PrepareCallback callback) throws NoSuchStatementException {
....
resultSets.add(JdbcResultSet.create(h.connectionId, h.id, info.getResultSet(), maxRowsInFirstFrame)); //USES UTC CALENDAR
....
}
public Frame fetch(
StatementHandle h,
long offset,
int fetchMaxRowCount) throws NoSuchStatementException, MissingResultsException {
...
return JdbcResultSet.frame(statementInfo, statementInfo.getResultSet(), offset, fetchMaxRowCount, calendar, Optional.<Meta.Signature>absent()); //USES LOCAL CALENDAR
...
}
____________________________________________________________________
org.apache.calcite.avatica.jdbc.JdbcResultSet
public static JdbcResultSet create(
String connectionId,
int statementId,
ResultSet resultSet,
int maxRowCount,
Meta.Signature signature) {
final Calendar calendar = DateTimeUtils.calendar(); //UTC
....
final Meta.Frame firstFrame = frame(null, resultSet, 0, fetchRowCount, calendar, Optional.of(signature))
....
}
{code}
was:
org.apache.calcite.avatica.jdbc.JdbcMeta prepareAndExecute is using UTC calendar but fetch is using local calendar, results in inconsistent TZs being applied for single statement.
[https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
[https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
{code:java}
org.apache.calcite.avatica.jdbc.JdbcMeta
final Calendar calendar = Unsafe.localCalendar(); //LOCAL
public ExecuteResult prepareAndExecute(
StatementHandle h,
String sql,
long maxRowCount,
int maxRowsInFirstFrame,
PrepareCallback callback) throws NoSuchStatementException {
....
resultSets.add(JdbcResultSet.create(h.connectionId, h.id, info.getResultSet(), maxRowsInFirstFrame)); //USES UTC CALENDAR
....
}
public Frame fetch(
StatementHandle h,
long offset,
int fetchMaxRowCount) throws NoSuchStatementException, MissingResultsException {
...
return JdbcResultSet.frame(statementInfo, statementInfo.getResultSet(), offset, fetchMaxRowCount, calendar, Optional.<Meta.Signature>absent()); //USES LOCAL CALENDAR
...
}
____________________________________________________________________
org.apache.calcite.avatica.jdbc.JdbcResultSet
public static JdbcResultSet create(
String connectionId,
int statementId,
ResultSet resultSet,
int maxRowCount,
Meta.Signature signature) {
final Calendar calendar = DateTimeUtils.calendar(); //UTC
....
final Meta.Frame firstFrame = frame(null, resultSet, 0, fetchRowCount, calendar, Optional.of(signature))
....
}
{code}
> Inconsistent Calendar used In JdbcMeta between prepareAndExecute and Fetch
> --------------------------------------------------------------------------
>
> Key: CALCITE-4120
> URL: https://issues.apache.org/jira/browse/CALCITE-4120
> Project: Calcite
> Issue Type: Bug
> Reporter: Chris Snowden
> Priority: Major
>
> org.apache.calcite.avatica.jdbc.JdbcMeta prepareAndExecute is using UTC calendar but fetch is using local calendar, results in inconsistent TZs being applied for single statement.
> [https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
> [https://github.com/apache/calcite-avatica/blob/master/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcResultSet.java]
>
> {code:java}
> org.apache.calcite.avatica.jdbc.JdbcMeta
> final Calendar calendar = Unsafe.localCalendar(); //LOCAL
> public ExecuteResult prepareAndExecute(
> StatementHandle h,
> String sql,
> long maxRowCount,
> int maxRowsInFirstFrame,
> PrepareCallback callback) throws NoSuchStatementException {
> ....
> resultSets.add(JdbcResultSet.create(h.connectionId, h.id, info.getResultSet(), maxRowsInFirstFrame)); //USES UTC CALENDAR
> ....
> }
> public Frame fetch(
> StatementHandle h,
> long offset,
> int fetchMaxRowCount) throws NoSuchStatementException, MissingResultsException {
> ...
> return JdbcResultSet.frame(statementInfo, statementInfo.getResultSet(), offset, fetchMaxRowCount, calendar, Optional.<Meta.Signature>absent()); //USES LOCAL CALENDAR
> ...
> }
> ____________________________________________________________________
> org.apache.calcite.avatica.jdbc.JdbcResultSet
> public static JdbcResultSet create(
> String connectionId,
> int statementId,
> ResultSet resultSet,
> int maxRowCount,
> Meta.Signature signature) {
> final Calendar calendar = DateTimeUtils.calendar(); //UTC
> ....
> final Meta.Frame firstFrame = frame(null, resultSet, 0, fetchRowCount, calendar, Optional.of(signature))
> ....
> }
> {code}
>
>
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)