[ https://issues.apache.org/jira/browse/HIVE-18434?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323174#comment-16323174 ]
Xuefu Zhang commented on HIVE-18434: ------------------------------------ Thanks for the explanation. While your patch may fix the particular problem, I'm afraid it might introduce inconsistency in treating string literals for numbers. My understanding is that Hive treats and implicitly converts number string literals (such as "3.1415926" as double rather than decimal. When a decimal (as precise data type) and a double (as imprecise data type) appear in the same numeric or logical operations, the result data type is double. For instance: {code} hive> explain select 3.14BD + "3.14"; OK STAGE DEPENDENCIES: Stage-0 is a root stage STAGE PLANS: Stage: Stage-0 Fetch Operator limit: -1 Processor Tree: TableScan alias: _dummy_table Row Limit Per Split: 1 Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: 6.28 (type: double) outputColumnNames: _col0 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE ListSink hive> desc dec1; OK name string value decimal(5,2) hive> explain select * from dec1 where value="3.14"; OK STAGE DEPENDENCIES: Stage-0 is a root stage STAGE PLANS: Stage: Stage-0 Fetch Operator limit: -1 Processor Tree: TableScan alias: dec1 filterExpr: (value = '3.14') (type: boolean) Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE Filter Operator predicate: (value = '3.14') (type: boolean) Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator expressions: name (type: string), value (type: decimal(5,2)) outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE ListSink {code} I believe that {{ filterExpr: (value = '3.14') (type: boolean)}} will convert both side to double and than compare internally. The problem you described seems to be one related to constant optimization. Specifically, the select op should project {{a}} instead of the following: {code} Select Operator expressions: -1511503446182.5518 (type: decimal(19,6)) {code} The numeric comparison should be still based on double. We cannot just use what's is used in the filter condition to rewrite the projection columns. > Type is not determined correctly for comparison between decimal column and > string constant > ------------------------------------------------------------------------------------------ > > Key: HIVE-18434 > URL: https://issues.apache.org/jira/browse/HIVE-18434 > Project: Hive > Issue Type: Bug > Components: Types > Reporter: Ashutosh Chauhan > Assignee: Ashutosh Chauhan > Attachments: HIVE-18434.patch > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)