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

Will Noble commented on CALCITE-5250:
-------------------------------------

Here's an outtake from the traffic I was observing:

{{2022-08-26 17:22:30.384552: POST localhost:1895/jdbc}}
{{                            connectionId: 
04ca24ee-1d25-4a36-88ac-b1069363bf0e}}
{{                            maxRowCount: -1}}
{{                            maxRowsInFirstFrame: -1}}
{{                            request: prepareAndExecute}}
{{                            sql: 'SELECT CAST((''2017-01-01'') AS DATE) AS 
`TEMP_Test_{_}1641592311{_}{_}0{_}`}}

{{                              FROM `testv1`.`calcs` `calcs`}}

{{                              HAVING (COUNT(1) > 0)'}}
{{                            statementId: 0}}

{{2022-08-26 17:22:32.149329: 200 OK}}
{{                            missingStatement: false}}
{{                            response: executeResults}}
{{                            results:}}
{{                            - connectionId: 
04ca24ee-1d25-4a36-88ac-b1069363bf0e}}
{{                              firstFrame: null}}
{{                              ownStatement: false}}
{{                              response: resultSet}}
{{                              rpcMetadata:}}
{{                                response: rpcMetadata}}
{{                                serverAddress: 
wnoble.sfo.corp.google.com:1895}}
{{                              signature:}}
{{                                columns:}}
{{                                - autoIncrement: false}}
{{                                  caseSensitive: true}}
{{                                  catalogName: null}}
{{                                  columnClassName: java.sql.Date}}
{{                                  columnName: 
TEMP_Test_{_}1641592311{_}{_}0{_}}}
{{                                  currency: false}}
{{                                  definitelyWritable: false}}
{{                                  displaySize: 0}}
{{                                  label: TEMP_Test_{_}1641592311{_}{_}0{_}}}
{{                                  nullable: 0}}
{{                                  ordinal: 0}}
{{                                  precision: 0}}
{{                                  readOnly: true}}
{{                                  scale: 0}}
{{                                  schemaName: null}}
{{                                  searchable: false}}
{{                                  signed: true}}
{{                                  tableName: null}}
{{                                  type:}}
{{                                    id: 91}}
{{                                    name: DATE}}
{{                                    rep: PRIMITIVE_INT}}
{{                                    type: scalar}}
{{                                  writable: false}}
{{                                cursorFactory:}}
{{                                  clazz: null}}
{{                                  fieldNames: null}}
{{                                  style: LIST}}
{{                                parameters: []}}
{{                                sql: 'SELECT CAST((''2017-01-01'') AS DATE) 
AS `TEMP_Test_{_}1641592311{_}{_}0{_}`}}

{{                                  FROM `testv1`.`calcs` `calcs`}}

{{                                  HAVING (COUNT(1) > 0)'}}
{{                                statementType: SELECT}}
{{                              statementId: 0}}
{{                              updateCount: -1}}
{{                            rpcMetadata:}}
{{                              response: rpcMetadata}}
{{                              serverAddress: wnoble.sfo.corp.google.com:1895}}

{{2022-08-26 17:22:32.220078: POST localhost:1895/jdbc}}
{{                            connectionId: 
04ca24ee-1d25-4a36-88ac-b1069363bf0e}}
{{                            fetchMaxRowCount: 100}}
{{                            offset: 0}}
{{                            request: fetch}}
{{                            statementId: 0}}

{{2022-08-26 17:22:33.626139: 200 OK}}
{{                            frame:}}
{{                              done: true}}
{{                              offset: 0}}
{{                              rows:}}
{{                              - - 1483228800000}}
{{                            missingResults: false}}
{{                            missingStatement: false}}
{{                            response: fetch}}
{{                            rpcMetadata:}}
{{                              response: rpcMetadata}}
{{                              serverAddress: wnoble.sfo.corp.google.com:1895}}

So the server is specifying {{DATE}} in the signature, then sending a value in 
milliseconds in the results ({{{}1483228800000{}}} is {{2017-01-01}} UTC in 
milliseconds since epoch).

> Possible bug in date conversion
> -------------------------------
>
>                 Key: CALCITE-5250
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5250
>             Project: Calcite
>          Issue Type: Bug
>          Components: avatica
>    Affects Versions: 1.22.0
>            Reporter: Will Noble
>            Assignee: Will Noble
>            Priority: Minor
>
> In 
> [DateFromNumberAccessor.getDate()|https://github.com/apache/calcite-avatica/blob/d88f91a3ed8590ab8cee0df5c53633b3d5e41c59/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java#L929]
>  we multiply the number by {{{}MILLIS_PER_DAY{}}}. However, I'm observing 
> that the integer values being sent over the wire (using the JsonHandler) are 
> already expressed in milliseconds since epoch, as seen in 
> [DateSerializer._timestamp()|https://github.com/FasterXML/jackson-databind/blob/b688919010a9147376dc435f742812afd5b46885/src/main/java/com/fasterxml/jackson/databind/ser/std/DateSerializer.java#L41]
>  in jackson-databind (java.util.date.getTime returns time in milliseconds). 
> So, the returned dates are super far in the future.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to