[ 
https://issues.apache.org/jira/browse/CALCITE-5094?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

itxiangkui updated CALCITE-5094:
--------------------------------
    Description: 
 

When I have a mysql table, the example is as follows:
||*aid:long*||*gettime:datetime*||*pv*||
|1|2021-08-11 14:38:01.0|1|

 

it will be OK:

{{select gettime from table}}

 

it will occor some error:

{{select substring_index(cast(gettime as varchar),'.',1) from table}}

 

Caused by: com.mysql.cj.exceptions.NumberOutOfRange: Value '3729727635' is 
outside of valid range for type java.lang.Integer at 
com.mysql.cj.result.IntegerValueFactory.createFromLong(IntegerValueFactory.java:62)
 at 
com.mysql.cj.result.{*}IntegerValueFactory.createFromLong{*}(IntegerValueFactory.java:44)
 at 
com.mysql.cj.protocol.a.MysqlTextValueDecoder.decodeUInt4(MysqlTextValueDecoder.java:99)
 at 
com.mysql.cj.protocol.result.AbstractResultsetRow.decodeAndCreateReturnValue(AbstractResultsetRow.java:105)
 at 
com.mysql.cj.protocol.result.AbstractResultsetRow.getValueFromBytes(AbstractResultsetRow.java:241)
 at 
com.mysql.cj.protocol.a.result.TextBufferRow.getValue(TextBufferRow.java:132) 
at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1285) 
... 34 more

 

It seems that  *org.apache.calcite.linq4j.tree.Primitive.jdbcGet*  

public @Nullable Object jdbcGet(ResultSet resultSet, int i) throws SQLException 
{
    switch (this)

{     case BOOLEAN:       return resultSet.getBoolean(i);     case BYTE:       
return resultSet.getByte(i);     case CHAR:       return (char) 
resultSet.getShort(i);     case DOUBLE:       return resultSet.getDouble(i);    
 case FLOAT:       return resultSet.getFloat(i);     case INT:       return 
resultSet.getInt(i);     case LONG:       return resultSet.getLong(i);     case 
SHORT:       return resultSet.getShort(i);     default:       return 
resultSet.getObject(i);     }

  }

 

resultSet.getObject(i)  Triggered errors like Integer.parse(Long)

  was:
 

When I have a mysql table, the example is as follows:
||*aid:long*||*gettime:datetime*||*pv*||
|1|2021-08-11 14:38:01.0|1|

 

it will be OK:

{{select gettime from table}}

 

it will occor some error:

{{select substring_index(cast(gettime as varchar),'.',1) from table}}

 

Caused by: com.mysql.cj.exceptions.NumberOutOfRange: Value '3729727635' is 
outside of valid range for type java.lang.Integer at 
com.mysql.cj.result.IntegerValueFactory.createFromLong(IntegerValueFactory.java:62)
 at 
com.mysql.cj.result.IntegerValueFactory.createFromLong(IntegerValueFactory.java:44)
 at 
com.mysql.cj.protocol.a.MysqlTextValueDecoder.decodeUInt4(MysqlTextValueDecoder.java:99)
 at 
com.mysql.cj.protocol.result.AbstractResultsetRow.decodeAndCreateReturnValue(AbstractResultsetRow.java:105)
 at 
com.mysql.cj.protocol.result.AbstractResultsetRow.getValueFromBytes(AbstractResultsetRow.java:241)
 at 
com.mysql.cj.protocol.a.result.TextBufferRow.getValue(TextBufferRow.java:132) 
at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1285) 
... 34 more

 

It seems that  *org.apache.calcite.linq4j.tree.Primitive.jdbcGet*  

public @Nullable Object jdbcGet(ResultSet resultSet, int i) throws SQLException 
{
    switch (this)

{     case BOOLEAN:       return resultSet.getBoolean(i);     case BYTE:       
return resultSet.getByte(i);     case CHAR:       return (char) 
resultSet.getShort(i);     case DOUBLE:       return resultSet.getDouble(i);    
 case FLOAT:       return resultSet.getFloat(i);     case INT:       return 
resultSet.getInt(i);     case LONG:       return resultSet.getLong(i);     case 
SHORT:       return resultSet.getShort(i);     default:       return 
resultSet.getObject(i);     }

  }

 

resultSet.getObject(i)  Triggered errors like Integer.parse(Long)


> JdbcAdapter will report an error when iterating over the datetime column of 
> mysql with function application
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5094
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5094
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: itxiangkui
>            Priority: Major
>
>  
> When I have a mysql table, the example is as follows:
> ||*aid:long*||*gettime:datetime*||*pv*||
> |1|2021-08-11 14:38:01.0|1|
>  
> it will be OK:
> {{select gettime from table}}
>  
> it will occor some error:
> {{select substring_index(cast(gettime as varchar),'.',1) from table}}
>  
> Caused by: com.mysql.cj.exceptions.NumberOutOfRange: Value '3729727635' is 
> outside of valid range for type java.lang.Integer at 
> com.mysql.cj.result.IntegerValueFactory.createFromLong(IntegerValueFactory.java:62)
>  at 
> com.mysql.cj.result.{*}IntegerValueFactory.createFromLong{*}(IntegerValueFactory.java:44)
>  at 
> com.mysql.cj.protocol.a.MysqlTextValueDecoder.decodeUInt4(MysqlTextValueDecoder.java:99)
>  at 
> com.mysql.cj.protocol.result.AbstractResultsetRow.decodeAndCreateReturnValue(AbstractResultsetRow.java:105)
>  at 
> com.mysql.cj.protocol.result.AbstractResultsetRow.getValueFromBytes(AbstractResultsetRow.java:241)
>  at 
> com.mysql.cj.protocol.a.result.TextBufferRow.getValue(TextBufferRow.java:132) 
> at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1285) 
> ... 34 more
>  
> It seems that  *org.apache.calcite.linq4j.tree.Primitive.jdbcGet*  
> public @Nullable Object jdbcGet(ResultSet resultSet, int i) throws 
> SQLException {
>     switch (this)
> {     case BOOLEAN:       return resultSet.getBoolean(i);     case BYTE:      
>  return resultSet.getByte(i);     case CHAR:       return (char) 
> resultSet.getShort(i);     case DOUBLE:       return resultSet.getDouble(i);  
>    case FLOAT:       return resultSet.getFloat(i);     case INT:       return 
> resultSet.getInt(i);     case LONG:       return resultSet.getLong(i);     
> case SHORT:       return resultSet.getShort(i);     default:       return 
> resultSet.getObject(i);     }
>   }
>  
> resultSet.getObject(i)  Triggered errors like Integer.parse(Long)



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to