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

Jinfeng Ni commented on DRILL-2269:
-----------------------------------

Test with hive function "ucase" and "lcase" in a filter condition. On master 
branch, it will hit exception. With the patch, the query runs fine.

On master,

{code}
+------------+
| commit_id |
+------------+
| d4dc295f1c46555a4cba774e0b211de72c119e29 |
+------------+

select * from voter where ucase(name) = 'NICK MILLER' and lcase(name) = 'nick 
miller';
Query failed: RemoteRpcException: Failure while running fragment., The type of 
org.apache.drill.exec.expr.HiveFuncHolderExpr doesn't currently support 
LogicalExpression.getCumulativeCost(). [ 1a27a0f5-8fe8-4b34-80e4-efd6a8f99947 
on drlvm-245.qa.lab:31010 ]
[ 1a27a0f5-8fe8-4b34-80e4-efd6a8f99947 on drlvm-245.qa.lab:31010 ]

{code}

With  DRILL-2269 patch:

{code}

select * from voter where ucase(name) = 'NICK MILLER' and lcase(name) = 'nick 
miller';
+------------+------------+------------+--------------+---------------+------------+-------------+
| voter_id | name | age | registration | contributions | voterzone | 
create_time |
+------------+------------+------------+--------------+---------------+------------+-------------+
…..
4 rows selected (1.019 seconds)
0: jdbc:drill:schema=dfs.par100> select commit_message from sys.version;
+----------------+
| commit_message |
+----------------+
| DRILL-2269: Add default implementation for estimating cost of evaluating an 
expression, in stead of throwing Exception. |
+----------------+
1 row selected (0.091 seconds)

{code} 

> Provide default implementation for getting cost of evaluating an expression 
> in base class of LogicalExpression, in stead of throw Exception 
> --------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-2269
>                 URL: https://issues.apache.org/jira/browse/DRILL-2269
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>            Reporter: Jinfeng Ni
>            Assignee: Jinfeng Ni
>             Fix For: 0.8.0
>
>         Attachments: 
> 0001-DRILL-2269-Add-default-implementation-for-estimating.patch
>
>
> Today, the abstract class of LogicalExpression will throw Exception for two 
> methods related to estimate the cost of evaluating an expression, in the hope 
> that sub classes will override those two methods. However, if someone forgets 
> to override, compiler and mvn build process will still be successful, yet 
> will hit Exception in execution-time, complaining the sub class does not 
> implement these methods.  As Drill's adding more sub classes of 
> LogicalExpression to the code base, it's more likely for someone to forget to 
> override those two methods, making it error-prone to just throw Exception in 
> the base class.
> In stead, we should provide a default implementation for those two methods in 
> the base class. Certain sub classes will override to change the behavior. 
>   
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to