[ 
https://issues.apache.org/jira/browse/CALCITE-4120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17627979#comment-17627979
 ] 

Ian Bertolacci commented on CALCITE-4120:
-----------------------------------------

{quote}the offsetting should be symmetric
{quote}
I was thinking more that it shouldn't be done at all, and avoid the whole 
problem entirely.

Should this also apply to date/time-like things in general?
My (limited) understanding of date/time-like values in SQL is that *none* of 
them exist in a particular time-zone, so Date and Type types share the same 
timezone woes as Timestamp.

I'm approaching the conclusion that no Calendar what-so-ever should be used at 
any layer when inserting or retrieving date/time-like values (but that might 
just be me putting my head in the sand).

> 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/JdbcMeta.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.20.10#820010)

Reply via email to