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

Julian Hyde commented on CALCITE-6937:
--------------------------------------

In your description you should define the types, otherwise it’s very confusing. 
Calcite’s REAL type follows the SQL standard and is a 32 bit floating point. 
Doesn’t that map directly to Hive’s FLOAT type?

 

> Hive/Phoenix can not support REAL type
> --------------------------------------
>
>                 Key: CALCITE-6937
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6937
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.39.0
>            Reporter: Yu Xu
>            Assignee: Yu Xu
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.40.0
>
>
> REAL type should equivalent to FLOAT type in Calcite(can refer to 
> [https://calcite.apache.org/docs/reference.html#scalar-types]),but some 
> systems not support REAL type, such as Hive//Phoenix, so in Dialect covnert 
> from REAL to REAL is not consistent with these data system.
>  
> *floating-point data type only support FLOAT and DOUBLE in follow systems:*
>  
> Phoenix: [https://phoenix.apache.org/language/datatypes.html]
>  
> Hive: [https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types]
>  
> *in Hive test which is not supported:*
> hive> select cast(1.2 as REAL);
> NoViableAltException(26@[])
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser.primitiveType(HiveParser.java:39374)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.castExpression(HiveParser_IdentifiersParser.java:5434)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.atomExpression(HiveParser_IdentifiersParser.java:6716)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceFieldExpression(HiveParser_IdentifiersParser.java:6879)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnaryPrefixExpression(HiveParser_IdentifiersParser.java:7264)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnarySuffixExpression(HiveParser_IdentifiersParser.java:7324)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceBitwiseXorExpression(HiveParser_IdentifiersParser.java:7508)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceStarExpression(HiveParser_IdentifiersParser.java:7668)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedencePlusExpression(HiveParser_IdentifiersParser.java:7828)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceAmpersandExpression(HiveParser_IdentifiersParser.java:7988)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceBitwiseOrExpression(HiveParser_IdentifiersParser.java:8147)
> at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceEqualExpression(HiveParser_IdentifiersParser.java:8677)
> FAILED: ParseException line 1:19 cannot recognize input near 'REAL' ')' 
> '<EOF>' in primitive type specification
>  
> *in Phoenix also not supported:*
> phoenix> select cast(1.2 as REAL);
> Error: ERROR 201 (22000): Illegal data. Unsupported sql type: REAL 
> (state=22000,code=201)
> java.sql.SQLException: ERROR 201 (22000): Illegal data. Unsupported sql type: 
> REAL
>  
> *but in Spark it is work well(convert to float type):*
> spark-sql> select cast(1.1 as real);
> 25/04/02 22:36:56 WARN TaskSetManager: Finished tasks (1/1) in stage 2.0
> OK
> CAST(1.1 AS FLOAT)
> 1.1
> Time taken: 2.113 seconds, Fetched 1 row(s)
>  
> *so in Hive/Phoenix system need convert from real to float type.*



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

Reply via email to