[ 
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. 

 
{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)

Reply via email to